Upgrades
Kubernetes
Day-2 Kubernetes operations use the
helm CLI on your workstation. Only init carries a built-in Helm client, so install helm before your first upgrade.init staged:
v (chart X.Y.Z corresponds to tag vX.Y.Z). The published chart already points at the public container image, so plain installs and upgrades need no image values. To inspect chart defaults, run helm show values clicklink-connector --repo https://releases.clicklink.clickhouse.com/charts. The executor runs as a single replica with the Recreate strategy, so an upgrade disconnects it briefly. See when the connector is offline for what happens to commands in that window.
An install from a direct chart reference (oci://, a URL, or a local archive or directory) has no repository to resolve against. Rerun helm upgrade clicklink-connector <same-chart-reference> at the new version instead. Re-running init with a newer CLI also converges, but needs an entry point: --handoff if you kept the bundle, or a fresh enrollment token with --force after the documented cleanup. The helm upgrade above is the routine path (see re-runs and recovery).
Linux VM
Re-run the installer on the host. It downloads and verifies the newer release as it did during onboarding. It backs up the previous binary, installs the current systemd units, and preserves your live redaction patterns and environment file. Then restart the daemons:--version vX.Y.Z to the installer command.
Health
Each daemon serves a/livez endpoint on its health port. The health signal is the JSON status field in the response body, not the HTTP status code. Prometheus metrics are served at /metrics on the same port; there is no separate metrics port. Default ports on both targets:
The executor also serves its local command API on
127.0.0.1:9999. It carries no authentication of its own and is never exposed outside the host or pod; the clicklink clctl service commands reach it locally.
When support sessions are enabled, the gateway also listens on port 8443: self-signed TLS on a VM, pod-local HTTP behind kubectl port-forward or a TLS-terminating Ingress on Kubernetes.
On a VM, run the full check suite at any time:
2 if any check fails.
Certificates
The connector renews its own client certificate. The scraper, the troubleshooter, and the executor each check the leaf every 12 hours and renew it once 10 days remain. The renewal returns a 30-day leaf over the existing mTLS and HMAC-authenticated channel, so no operator action is needed. On Kubernetes the daemon writes the renewed leaf back to theclicklink-mtls Secret; on a VM it writes it under /etc/clicklink/tls/.
To inspect the current expiry:
Credential rotation
API (HMAC) credentials
Request a fresh enrollment token from your account team, then re-run your originalinit command with --enroll and --force. Keep every target-specific flag from the first install (--target-namespace, --values, and any --chart, --chart-repo, or --chart-version mirror flags), because --force restages the kept configuration. Managed mode carries over from the configuration being replaced, so --managed is optional here. On a default install:
init only enables and starts units that are not yet running, so restart the daemons after the rotation:
init pre-creates the rotated clicklink-hmac and clicklink-mtls Secrets; the chart does not render them. Its checksum annotation does not cover them, so running pods keep the credentials they started with. Restart every component after the rotation:
For unattended rotation where SQL provisioning needs a password, stdin carries both secrets in order: the token on the first line, the password on the second. The token read consumes exactly one line.
ClickHouse users
Re-provision the connector’s read-only users for each instance you registered yourself. On Kubernetes, run the commands from your workstation.--apply-ch-grants re-applies the regenerated grants in-pod so the new credentials reach ClickHouse; when the admin user has a password, add --ch-admin-password-stdin and pipe it in:
--ch-user-via cr:
--ch-user-via cr and the pod-selection flags to either form; see the CLI reference.
Client certificate
Renewal is automatic (see certificates). To supersede an unexpired certificate immediately, re-runinit with --force. Then restart every component so the daemons present the new leaf: on Kubernetes as described under API credentials, on a VM the three units.
Re-runs and recovery
init re-runs converge, so re-running the same command is always the first move. Without --force, an existing /etc/clicklink/config.yaml (VM) or clicklink-values.yaml overlay (Kubernetes) is kept, and an existing client key is reused; init overwrites credentials and the CA chain atomically. The recovery commands the CLI prints after a partial failure are safe to repeat.
--force overwrites the kept config or overlay, regenerates the client key, and supersedes an unexpired client certificate. It never mints a new cluster UUID, so the connector’s identity is preserved. The managed-mode posture of the replaced configuration is kept on unattended re-runs and offered as the default on a terminal, unless you pass --managed or --no-managed.
If certificate signing failed after staging, or the signing endpoint returned 409 because an unexpired certificate already exists, you do not need a new token or a second issuance. Complete the install with the signed materials already on disk:
/etc/clicklink and manages the services). On Kubernetes the CLI prints the full form, including --target helm, --target-namespace, and --values; use the printed command as is.
Connector offline. While the connector is down or unreachable, the services it manages keep running. The ClickHouse operator in your cluster keeps them up, and the executor is not in the data path. Lifecycle changes need the executor connected, so none are applied until it reconnects. On restart the executor recovers in-flight commands from its command database. A command ClickHouse Cloud delivers again is answered from the recorded result; only a failed command runs again. For lifecycle commands while no executor is connected, see when the connector is offline.
Uninstall
Linux VM
uninstall.sh ships in the release tarball. If no extracted tarball remains on the host, fetch and extract one (see manual download and verification). Run uninstall.sh from the extracted directory:
clicklink-scraper, clicklink-troubleshooter, and clicklink-executor units and removes the systemd units and the binary. It preserves the following, so a later reinstall picks up the existing configuration:
/etc/clicklink, including the executor’s access bundles under/etc/clicklink/access/executor/var/lib/clicklink, including the executor’s command databaseexecutor.dband the service registry/var/log/clicklink- the
clicklinkuser
clicklink-system namespace; delete it when nothing else uses it.
Kubernetes
helm.sh/resource-policy: keep, so the uninstall leaves it behind with the command database and service registry on it. The Secrets init created, the platform bundle Secret that platform approve wrote, and the service registry ConfigMap the executor maintains are not chart-owned either and survive the uninstall. Delete them explicitly. Include the access Secret and ServiceAccount pair of every instance you registered yourself, and of every managed service you provisioned the troubleshooter for (named after the service). --ignore-not-found covers objects that were never created, such as the platform bundle Secret before a first approval:
init applied the executor’s cluster-wide grant, not the chart. Remove it as cluster admin once no managed services remain:
The platform layer
Uninstalling the connector does not remove the platform layer. The platform namespaces and workloads, thepcm-platform RBAC, and the admission objects your approvals installed stay in the cluster, and so does every managed service. Delete the services first; see delete a service. On a test cluster with no services, clicklink clctl platform reset uninstalls the platform releases. The CustomResourceDefinitions, RBAC, and StorageClass it leaves need deleting by hand; see resetting a test cluster. Outside a test cluster, agree a removal plan with your account team before touching the platform layer.
ClickHouse users
Uninstalling on either target leaves the provisioned read-only users in place on instances you registered yourself. Drop them as an admin on each instance (append your--ch-user-suffix to the names if you set one):