The registry TLS certificate moves out of the project tree. New commands manage it. One fix for lo up in a shell without PATH_SECRETS.
Breaking
- The registry TLS certificate lives in a docker volume.
lo upmints the certificate for a registry set into the volume<network>-registry-tls, next to the set's data volumes. Every registry container mounts the volume at/etc/registry/certs. Releases before v0.4.0 wrote the certificate to.secrets/tls/registries/and bind-mounted that directory. See TLS registries. .secrets/holds no lok8s content. The per-domain storeclusters/<domain>/secrets/is the only secrets store.lo lintno longer treatsregistries-tlsas a legitimate flat-store entry. See Migrating a flat.secrets/store.
New
lo registry tls statusprints the certificate (SANs, validity dates) and what each registry container mounts.lo registry tls renewmints a new certificate into the volume and restarts the set's containers.lo doctor(the binary) reports which mount the registry containers use when they still mount the pre-v0.4.0 directory.- See
lo registry tls.
Fixed
lo upon thelo(kind) driver failed witherror: PATH_SECRETS is not set — cannot mint the registry TLS certin a project whose shell exports onlyPATH. The bash entrypoint defaultedPATH_SECRETSbefore any driver ran; the binary did not. The mint no longer readsPATH_SECRETS: it hands the Secret generator a scratch directory underclusters/<domain>/and stores the result in the volume.
Who is affected
Every project with spec.registries.tls: true (the default). A project on a release before v0.4.0 has its certificate in .secrets/tls/registries/ and registry containers that bind-mount that directory.
Upgrade
- Reinstall the binary:
bash lo-install.sh, or unpacklo-<os>-<arch>.tar.gz(lo-full-<os>-<arch>.tar.gzfor the in-process build) from the release. A project that pinslothroughlo toolchain installbumpsgithub.com/kernpilot/lok8sin.bin/b.yamltov0.4.0and runsb install. - Run
lo up. The first run imports the certificate from.secrets/tls/registries/into the volume and prints one[warn]line: the running registry containers still mount the old directory. - Run
lo registry down && lo registry up. The registries come back with the volume mounted.lo registry tls statusshowsvolumefor each container. Then remove.secrets/. - Add
clusters/*/.registry-tls-tmp.*/to the project.gitignore. The mint writes its scratch store there. A mint that stops before its cleanup leaves the directory with the private key in it. New projects get the pattern fromlo init project.lo upremoves stale directories before each mint.
The bash implementation changed the same way. A project that routes registry or up to bash (lok8s.yaml spec.implementation) mints into the same volume, imports the same legacy files and has the same lo registry tls status|renew. A switch between the implementations never leaves two certificate locations behind.
Two lo up runs on the same registry network at the same time can collide on the helper container <network>-registry-tls-io: that run fails, and a retry succeeds because the read-out checks both files and mints again into an incomplete volume.
Assets
The same set as v0.3.1: for linux and darwin, amd64 and arm64, lo-<os>-<arch>.tar.gz, lo-full-<os>-<arch>.tar.gz, kustomize-secret-<os>-<arch>, lochat-<os>-<arch>, plus lok8s-v0.4.0.tar.gz (the framework tree), lo-install.sh and checksums.txt.