Connect Slinky
For the Kubernetes and Slurm operator adding NVIDIA Recovery to an existing Slinky cluster. Complete backend installation first and keep its source checkout, shared shell variables, image tag, and gateway address. You also need Slinky kubectl access and its administrator-managed Slurm key. The result is an observing controller and watchdog in the Slinky namespace.
Use exactly one controller per Slurm cluster. This guide installs the standalone
controller chart alongside Slinky, whether the backend shares that Kubernetes
cluster or runs in a separate reachable cluster. Keep Slurm, the controller,
watchdog, and sackd on the same release family: the evaluation baseline uses
Slinky charts 0.3.1 and 25.05-ubuntu24.04 images.
Verify scheduler access
Record a different configless Service name if your installation uses one.
On a Slurm submission host, use sinfo -s to choose the same narrow partition
allowlist for controller and watchdog. Confirm that the collector reads your
jobs’ actual output path and has the node mapping required by the
Slinky logging profile.
Verify the shared Slurm accounting prerequisites
from that submission environment. Include job_comment in the Slinky Slurm
cluster’s managed AccountingStoreFlags, preserving existing flags; this is a
scheduler setting, not a value in slinky-values.yaml for the standalone
controller. Check the effective setting and a newly submitted job’s completed
accounting comment with the read-only commands in that section.
Create namespace-local credentials
The Slinky cluster needs its own image-pull Secret, even if the backend cluster already has a Secret with the same name. Use a short-lived token. As in backend installation, the token is briefly present in process arguments; prefer your provider’s Kubernetes credential integration when available:
Obtain the existing auth/slurm shared key from the Slurm administrator or
approved secrets store. Use its actual location; do not substitute the separate
auth/jwt key (jwt_hs256.key). The chart projects the Secret into each
controller/watchdog Pod and prepares /etc/slurm/slurm.key for the sackd
sidecar. See Slurm’s native authentication reference
for this key’s role.
Do not print the key bytes or place them in Helm values or shell history.
Configure the integration
Copy the Slinky values template to an operator-owned file:
Use the maintained Slinky values template
as the configuration reference. Update every # REPLACE field:
- every
registry.example.com/acme/nvidia-recovery/<service>→$IMAGE_PREFIX/<service> - every
v1tag →$IMAGE_TAG customer-slurm→$HEIMDALL_ENVIRONMENTnvidia-recovery-api-gateway.example.internal:9090→ the private API Gateway address recorded during backend installationslurm-controller:6817if the configless Slurm Service has a different name or portpartitionAllowlist: []→ the Slurm partitions selected for this cluster, for example["gpu", "debug"]
Leave both applications in observe mode:
Review the edited values and resolve every example endpoint and registry,
including nvidia-recovery-api-gateway.example.internal:9090. Rendered output must
contain the reachable private gateway address selected during installation.
For a shared backend cluster, the gateway is
heimdall-api-gateway-internal.<release-namespace>.svc.cluster.local:9090.
For separate clusters, use the routable private address from installation.
Shell exports do not replace placeholders inside YAML. The standard configless
Slurm endpoint is slurm-controller:6817; use your actual Service name.
Leave watchdog.environmentPattern: null to inherit controller.environment.
Render and install
Review the image repositories, matching sackd release, namespace, private
API/configless endpoints, and pull/key Secrets. Both applications must render
observe mode with scheduler-action acknowledgement false. Resolve every
placeholder before applying.
Then install the standalone controller in the Slinky cluster:
Verify the two controller workloads and both containers in each Pod:
The logs must show observe mode. Review Slurm authentication, configless
connection, and API Gateway errors before continuing.
SAC logs API Gateway connection established at INFO with heimdall_endpoint
when its gRPC connection reaches Ready. This message is emitted once per
process. It confirms the transport is ready but does not confirm authorization
or job publication. Use the first-job check below to confirm job publication.
Result and next step
The controller and watchdog are ready in observe mode. Continue with the first-job sanity check to confirm publication to the backend. For auth or configless errors, use troubleshooting.