Installing GitOps-Managed Components#
NVIDIA Mission Control delivers a set of components through GitOps with Argo CD. Together they provide the cluster’s common services: secrets management with OpenBao, certificate issuance with cert-manager and trust-manager, single sign-on with Keycloak, a shared ingress gateway, and the Launchpad portal. Two supporting components complete the set: External Secrets syncs OpenBao secrets into Kubernetes Secrets, and CloudNativePG runs the Keycloak database.
Note
This project downloads and installs additional third-party open source software projects. Review the license terms of these open source projects before use.
Overview#
Use values.yaml for installation and later changes to GitOps-managed
components. Supply bootstrap credentials in a separate secrets.yaml.
You prepare both files in
the sections that follow. Ansible playbooks then act on these files: one seeds the
credentials into the cluster as bootstrap Secrets, and another renders the
component tree and pushes it to your GitOps repository. Argo CD reconciles the
components onto the k8s-admin cluster in sync-wave order, starting with
OpenBao.
Argo CD is already installed (Argo CD Installation). These steps give it the components to manage.
Each component has its own page for its settings, secrets, verification, and
operations. Configure every component first, then publish the component tree,
verify the deployment, and clean up the bootstrap secrets. Publishing starts the
sync. The
components take several minutes to come up, and Progressing is normal until
they do. When they are all Healthy, Argo CD, Keycloak, and Launchpad are
reachable over HTTPS and you can sign in.
Components
Prerequisites#
Argo CD is installed on
k8s-adminand thenvidia.nmcAnsible collection is available on the machine you run the playbooks from. Refer to Argo CD Installation.The shared-storage check after Kubernetes installation passed on every
k8s-adminnode.The kgateway controller and its GatewayClass (
kgateway-ha2) are present, installed bycm-kubernetes-setup. The shared gateway binds to this class. Confirm it withkubectl get gatewayclass kgateway-ha2.A load-balancer IP for the shared gateway, reserved on your network. Create DNS records for each component host name (for example
keycloak.dgx-<cluster-name>.nvidia.comandlaunchpad.dgx-<cluster-name>.nvidia.com) before you install. Point them at the BCM head-node external or floating IP for the standard head-node path, or at the gateway load-balancer IP for direct access when clients can route to it (refer to Reach the UIs). New DNS records often need a separate network team.An NGC API key with access to the NVIDIA Mission Control collection in the NGC Catalog. One key serves every NGC step in this guide: installing the Ansible collection, pulling charts and images, and rendering the component templates.
Write access to the GitOps repository registered with Argo CD.
Prepare the values file#
Build one values.yaml from three parts: the shared settings, the
release-pinned versions, and each component’s own settings.
This values.yaml is a separate file from the Argo CD argocd-values.yaml
(Argo CD Installation), read by the render as Ansible variables. Use the
same gitops repository and cluster name in both, so the render publishes to the
repository Argo CD already syncs and the default host names match your cluster name.
Keep this file private because it contains the Git repository token. Store
component bootstrap credentials separately in secrets.yaml.
Component versions and settings#
Each component has its own key. The version and syncWave on each key are
pinned for this release. Copy them as shown and leave them unchanged. Then open
each component’s page and add that component’s settings under the same key.
argocd:
version: "9.5.20"
syncWave: "-1"
# add settings from the Argo CD page
openbao:
version: "0.28.3"
configuratorVersion: "0.2.1"
syncWave: "-7"
# add settings from the OpenBao page
externalSecrets:
version: "2.5.0"
syncWave: "-6"
# add settings from the External Secrets page
certManager:
version: "v1.17.2"
syncWave: "-5"
# add settings from the Certificates page
cnpgOperator:
version: "0.28.2"
syncWave: "-5"
# add settings from the CloudNativePG page
trustManager:
version: "v0.22.1"
syncWave: "-4"
# add settings from the Certificates page
nmcGateway:
version: "0.3.0"
syncWave: "-4"
# add settings from the NMC Gateway page
keycloak:
version: "7.2.0"
syncWave: "-3"
# add settings from the Keycloak page
keycloakCnpg:
version: "0.6.1"
syncWave: "-3"
# add settings from the Keycloak page
keycloakConfigCli:
version: "1.3.7"
syncWave: "-2"
# add settings from the Keycloak page
launchpad:
version: "0.8.3"
nmcVersion: "2.5"
syncWave: "-2"
# add settings from the Launchpad page
Add each component’s settings from its page:
OpenBao (OpenBao)
External Secrets (External Secrets Operator)
Certificates (Certificates)
CloudNativePG (CloudNativePG)
NMC Gateway (NMC Gateway)
Keycloak (Keycloak)
Launchpad (NMC Launchpad)
Argo CD (Argo CD)
Prepare the secrets file#
Build a private secrets.yaml with the bootstrap secrets. These are the
credentials OpenBao and its consumers need at startup. A separate seed step
creates them as Kubernetes Secrets in the openbao namespace before Argo CD
brings the components up, and OpenBao reads them as it starts. Leave any value
empty to auto-generate it, except the shared NGC image-pull credential, which you must
set:
k8s_bootstrap_secrets_ngc_image_pull_token: <ngc-api-key> # required. Shared NGC image-pull credential
Add each component’s secrets from its page. OpenBao (OpenBao), Keycloak (Keycloak), Launchpad (NMC Launchpad), and Argo CD (Argo CD) take bootstrap secrets. NMC Gateway (NMC Gateway) and Certificates (Certificates) take secrets only in certain configurations, described on their pages.
Warning
secrets.yaml holds credentials. Keep it private and do not commit it to
the GitOps repository.
When both files are ready, continue to Seed and Publish the Components to seed the bootstrap secrets and publish the component tree.