Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/holger

deploy/k8s/TALOS.md

Deploying holger on Talos Linux

Holger fits Talos' immutable-OS model with no machine-config changes: the binary lives in the container image, configuration in a ConfigMap, and all persistent state (chart stores, znippy archives) on a PVC.

StorageClass

Talos ships no default StorageClass — the PVC in pvc.yaml (storageClassName: local-path) will stay Pending until one exists.

kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml

Note: local-path stores data under /opt/local-path-provisioner on the node. On Talos, allowlist that path via a machine-config patch:

machine:
  kubelet:
    extraMounts:
      - destination: /opt/local-path-provisioner
        type: bind
        source: /var/local-path-provisioner
        options: [bind, rshared, rw]

TLS

holger terminates TLS itself (app-level rustls) on both the gRPC and HTTP/OCI ports — no cleartext path. Provide the server cert/key via the holger-tls Secret (secret.yaml), e.g. from cert-manager or:

kubectl -n holger create secret tls holger-tls --cert=tls.crt --key=tls.key

For mTLS, add ca.crt to that Secret and uncomment client_ca in the ConfigMap's RON: client-cert CNs then become writer identities.

Exposure without a cloud LoadBalancer

Single replica

The Deployment pins replicas: 1 with strategy: Recreate: writable file-backed repositories live on one ReadWriteOnce volume. Scale-out needs RWX storage and is not yet supported. Take PVC snapshots (or back up /var/lib/holger) instead of adding replicas.

Quick validation

kubectl create namespace holger
kubectl -n holger create secret tls holger-tls --cert=tls.crt --key=tls.key
kubectl apply -f deploy/k8s/
kubectl -n holger wait --for=condition=Ready pod -l app=holger --timeout=120s
kubectl -n holger port-forward svc/holger 8443:8443 &
curl -k https://localhost:8443/healthz                 # → ok
helm push mychart-0.1.0.tgz oci://localhost:8443/charts
helm pull oci://localhost:8443/charts/mychart --version 0.1.0