# Slinky
## Install
Install `cert-manager`:
```console
$ helm pull jetstack/cert-manager
$ helm install cert-manager cert-manager-v1.19.2.tgz --namespace cert-manager --create-namespace --set crds.enabled=true
NAME: cert-manager
LAST DEPLOYED: Mon Mar 23 11:27:19 2026
NAMESPACE: cert-manager
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
⚠️ WARNING: New default private key rotation policy for Certificate resources.
The default private key rotation policy for Certificate resources was
changed to `Always` in cert-manager >= v1.18.0.
Learn more in the [1.18 release notes](https://cert-manager.io/docs/releases/release-notes/release-notes-1.18).
cert-manager v1.19.2 has been deployed successfully!
In order to begin issuing certificates, you will need to set up a ClusterIssuer
or Issuer resource (for example, by creating a 'letsencrypt-staging' issuer).
More information on the different types of issuers and how to configure them
can be found in our documentation:
https://cert-manager.io/docs/configuration/
For information on how to configure cert-manager to automatically provision
Certificates for Ingress resources, take a look at the `ingress-shim`
documentation:
https://cert-manager.io/docs/usage/ingress/
```
Install the slurm-operator and its CRDs:
```console
$ helm pull oci://ghcr.io/slinkyproject/charts/slurm-operator-crds
Pulled: ghcr.io/slinkyproject/charts/slurm-operator-crds:1.0.2
Digest: sha256:c05bbcb08906f11c05e8088a051322f517229b9696d592e2db95c6bafc4a40d3
$ helm pull oci://ghcr.io/slinkyproject/charts/slurm-operator
Pulled: ghcr.io/slinkyproject/charts/slurm-operator:1.0.2
Digest: sha256:83773374238475c561d8dc81fc9185f442933232d3c50ebf04d94d71d3e49c0d
```
```console
$ helm install slurm-operator-crds slurm-operator-crds-1.0.2.tgz
NAME: slurm-operator-crds
LAST DEPLOYED: Mon Mar 23 11:41:41 2026
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
$ helm install slurm-operator slurm-operator-1.0.2.tgz --namespace=slinky --create-namespace
NAME: slurm-operator
LAST DEPLOYED: Mon Mar 23 11:42:18 2026
NAMESPACE: slinky
STATUS: deployed
REVISION: 1
NOTES:
CHART NAME: slurm-operator
CHART VERSION: 1.0.2
APP VERSION: 25.11
```
Show installed CRDs:
```console
$ kubectl get crd | grep slinky
accountings.slinky.slurm.net 2026-03-23T03:41:44Z
controllers.slinky.slurm.net 2026-03-23T03:41:44Z
loginsets.slinky.slurm.net 2026-03-23T03:41:44Z
nodesets.slinky.slurm.net 2026-03-23T03:41:44Z
restapis.slinky.slurm.net 2026-03-23T03:41:44Z
tokens.slinky.slurm.net 2026-03-23T03:41:44Z
```
Show installed workloads:
```console
$ kubectl get all -n slinky
NAME READY STATUS RESTARTS AGE
pod/slurm-operator-65c9c6559d-rnbfj 1/1 Running 0 116s
pod/slurm-operator-webhook-84cd7974d-46kwn 1/1 Running 0 116s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/slurm-operator ClusterIP None 8080/TCP,8081/TCP 116s
service/slurm-operator-webhook ClusterIP 10.108.247.229 443/TCP,8081/TCP 116s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/slurm-operator 1/1 1 1 116s
deployment.apps/slurm-operator-webhook 1/1 1 1 116s
NAME DESIRED CURRENT READY AGE
replicaset.apps/slurm-operator-65c9c6559d 1 1 1 116s
replicaset.apps/slurm-operator-webhook-84cd7974d 1 1 1 116s
```
Slurm controller persistentw states to a volume, so there should be an default StorageClass to create PVC.
Install a cluster:
```console
$ helm pull oci://ghcr.io/slinkyproject/charts/slurm
Pulled: ghcr.io/slinkyproject/charts/slurm:1.0.2
Digest: sha256:a5c39577d1e7775d921281393ac6ee5a1a6143c0bea4a7d5609f8ad00e2f5a00
```
```console
$ helm install slurm slurm-1.0.2.tgz --namespace=slurm --create-namespace --set loginsets.slinky.enabled=true
NAME: slurm
LAST DEPLOYED: Mon Mar 23 14:13:31 2026
NAMESPACE: slurm
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
********************************************************************************
SSSSSSS
SSSSSSSSS
SSSSSSSSS
SSSSSSSSS
SSSS SSSSSSS SSSS
SSSSSS SSSSSS
SSSSSS SSSSSSS SSSSSS
SSSS SSSSSSSSS SSSS
SSS SSSSSSSSS SSS
SSSSS SSSS SSSSSSSSS SSSS SSSSS
SSS SSSSSS SSSSSSSSS SSSSSS SSS
SSSSSS SSSSSSS SSSSSS
SSS SSSSSS SSSSSS SSS
SSSSS SSSS SSSSSSS SSSS SSSSS
S SSS SSSSSSSSS SSS S
SSS SSSS SSSSSSSSS SSSS SSS
S SSS SSSSSS SSSSSSSSS SSSSSS SSS S
SSSSS SSSSSS SSSSSSSSS SSSSSS SSSSS
S SSSSS SSSS SSSSSSS SSSS SSSSS S
S SSS SSS SSS SSS S
S S S S
SSS
SSS
SSS
SSS
SSSSSSSSSSSS SSS SSSS SSSS SSSSSSSSS SSSSSSSSSSSSSSSSSSSS
SSSSSSSSSSSSS SSS SSSS SSSS SSSSSSSSSS SSSSSSSSSSSSSSSSSSSSSS
SSSS SSS SSSS SSSS SSSS SSSS SSSS SSSS
SSSS SSS SSSS SSSS SSSS SSSS SSSS SSSS
SSSSSSSSSSSS SSS SSSS SSSS SSSS SSSS SSSS SSSS
SSSSSSSSSSSS SSS SSSS SSSS SSSS SSSS SSSS SSSS
SSSS SSS SSSS SSSS SSSS SSSS SSSS SSSS
SSSS SSS SSSS SSSS SSSS SSSS SSSS SSSS
SSSSSSSSSSSSS SSS SSSSSSSSSSSSSSS SSSS SSSS SSSS SSSS
SSSSSSSSSSSS SSS SSSSSSSSSSSSS SSSS SSSS SSSS SSSS
********************************************************************************
CHART NAME: slurm
CHART VERSION: 1.0.2
APP VERSION: 25.11
slurm has been installed. Check its status by running:
$ kubectl --namespace=slurm get pods -l helm.sh/chart=slurm-1.0.2 --watch
ssh via the Slurm login (slurm-login-slinky) service:
$ SLURM_LOGIN_IP="$(kubectl get services -n slurm slurm-login-slinky -o jsonpath='{.status.loadBalancer.ingress[0].ip}')"
$ ssh -p 22 $SLURM_LOGIN_IP
Learn more about Slurm:
- Overview: https://slurm.schedmd.com/overview.html
- Quickstart: https://slurm.schedmd.com/quickstart.html
- Documentation: https://slurm.schedmd.com/documentation.html
- Support: https://www.schedmd.com/slurm-support/our-services/
- File Tickets: https://support.schedmd.com/
Learn more about Slinky:
- Overview: https://www.schedmd.com/slinky/why-slinky/
- Documentation: https://slinky.schedmd.com
```
Show running pods:
```console
$ kubectl get po -n slurm
NAME READY STATUS RESTARTS AGE
slurm-controller-0 3/3 Running 0 35s
slurm-login-slinky-5c76c76644-cj9s9 1/1 Running 0 35s
slurm-restapi-6b4ccb479f-458g7 1/1 Running 0 35s
slurm-worker-slinky-0 2/2 Running 0 35s
```
Show the created PVC:
```console
$ kubectl get pvc -n slurm
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
statesave-slurm-controller-0 Bound pvc-4b9403a5-36f1-4873-baa9-2fb54598fb8b 4Gi RWO standard 6m26s
```
Show created services:
```console
$ kubectl get svc -n slurm
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
slurm-controller ClusterIP 10.99.60.4 6817/TCP 114m
slurm-login-slinky LoadBalancer 10.105.170.112 22:30951/TCP 114m
slurm-restapi ClusterIP 10.98.19.54 6820/TCP 114m
slurm-workers-slurm ClusterIP None 6818/TCP 114m
```
Since there is no external IP addresses available, we cannot access the login node from outside the cluster, but we can get a console directly by:
```console
$ kubectl exec -n slurm -it slurm-login-slinky-5c76c76644-cj9s9 -- bash
```
In the console, try:
```console
$ sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
slinky up infinite 1 idle slinky-0
all* up infinite 1 idle slinky-0
```