NMC Launchpad#
Overview#
NMC Launchpad is the NVIDIA Mission Control web portal: a single landing page with cards that link to the other NVIDIA Mission Control components. It uses Keycloak for single sign-on.
How it works#
Launchpad is delivered as an Argo CD Application from NVIDIA Mission Control’s nmc-launchpad chart. It signs users in through Keycloak.
For single sign-on, Launchpad registers as the nmc-launchpad OIDC client against the configured Keycloak realm, building the OIDC endpoint from keycloakFQDN and keycloakRealm. Its client secret is delivered from OpenBao at runtime, so you never place it in a values file.
For its container image, Launchpad pulls from NGC using the shared NGC image-pull credential, delivered as a Kubernetes Secret by External Secrets (refer to External Secrets Operator).
For the OpenBao auth roles and KV paths behind both, refer to the Launchpad Application values in the component template tree (apps/launchpad/).
Configuration#
Add these settings under the launchpad key in values.yaml. The key already
carries the pinned chart version, NVIDIA Mission Control release nmcVersion, and syncWave
from Installing GitOps-Managed Components; the following fields are the ones you set. A field
shown with a value uses that value as its default when you omit it.
launchpad:
enabled: true # optional, deploy the Launchpad Application
fqdn: <launchpad-fqdn> # set to your portal host name; defaults to launchpad.dgx-<cluster-name>.nvidia.com
keycloakFQDN: <keycloak-fqdn> # optional, defaults to the Keycloak host name
keycloakRealm: nmc # optional, Keycloak realm Launchpad authenticates against
keycloakEnabled: true # optional, enable single sign-on
routeEnabled: true # optional, render an external route through the shared gateway
imageRepository: <image-repository> # optional, override the image repo derived from ngc_path
bcmUrl: "" # optional, Base Command Manager card link
runaiUrl: "" # optional, Run:ai card link
ajrUrl: "" # optional, Autonomous Job Recovery card link
ahrUrl: "" # optional, Autonomous Hardware Recovery card link
grafanaUrl: "" # optional, Grafana card link
extraHostsAliases: [] # optional, pod /etc/hosts entries (ip and hostnames)
enabled– deploy the Launchpad Application. Defaulttrue.fqdn– the host name the portal is served on. Defaults tolaunchpad.dgx-<cluster-name>.nvidia.com. Set it to your environment’s host name.keycloakFQDN– the Keycloak host name used to build the OIDC endpoint. Defaults to the Keycloak host name. Set it if Keycloak uses a different host.keycloakRealm– the Keycloak realm Launchpad authenticates against. Defaultnmc.keycloakEnabled– enable single sign-on. Whenfalse, no client secret is injected. Defaulttrue.routeEnabled– render an external route through the shared gateway. Whenfalse, no external route is emitted. Defaulttrue.imageRepository– the container image repository. Defaults to the repository derived fromngc_path.bcmUrl/runaiUrl/ajrUrl/ahrUrl/grafanaUrl– card link targets. Default empty.extraHostsAliases– extra/etc/hostsentries for the Launchpad pods, each an object withipand a list ofhostnames.
A card appears on the dashboard only when its URL is set. Leaving a card URL empty hides that card.
Cross-field consistency rules:
keycloakFQDNmust match the Keycloak Application’skeycloak.fqdn. The OIDC endpoint is built fromkeycloakFQDN, so a mismatch points Launchpad at the wrong issuer and single sign-on fails.keycloakRealmmust match the realm Keycloak imports. A mismatch breaks the client-secret lookup and single sign-on fails.Set
extraHostsAliaseswhen the Keycloak host name does not resolve in-cluster. Without it, the Launchpad pod cannot reach the OIDC endpoint.
When pod DNS cannot resolve the external Keycloak host name, map that same host name to the gateway or head-node IP that serves Keycloak:
launchpad:
keycloakFQDN: <keycloak-fqdn>
extraHostsAliases:
- ip: "<gateway-or-head-node-ip>"
hostnames:
- "<keycloak-fqdn>"
The host name under hostnames must match keycloakFQDN and a subject
alternative name on the gateway certificate. This setting adds an entry to the
Launchpad pods’ /etc/hosts files. It does not change DNS for browsers or
other workloads.
Secrets#
Launchpad consumes two bootstrap secrets. Add them to secrets.yaml:
k8s_bootstrap_secrets_ngc_image_pull_token: <ngc-api-key> # required; shared NGC image-pull credential
k8s_bootstrap_secrets_launchpad_client_secret: "" # nmc-launchpad OIDC client secret; leave empty to auto-generate
k8s_bootstrap_secrets_ngc_image_pull_token– the shared NGC image-pull credential, read as thepasswordfield. Every component that pulls images from NGC uses it. Required, not auto-generated. If it is missing, the seed step fails, so set it before you install. External Secrets bridges it to the image-pull Secret.k8s_bootstrap_secrets_launchpad_client_secret– theclient_secretfor thenmc-launchpadOIDC client. Leave it empty to auto-generate. Seeded together with Keycloak so both sides share the same value. OpenBao delivers it to the pod at runtime.
Verify#
Confirm the Launchpad Application reports Synced and Healthy in Argo CD, then browse to https://<fqdn>. The portal shows one card for each component whose URL you configured. If authentication is enabled, Login sends you to the Keycloak sign-in page, then back to the portal after you sign in.