Skip to main content

Helm Chart

Overview​

The heir Helm chart installs the Heir Operator, the controller-manager that watches Runtime and WorkerJoinToken custom resources and reconciles them into running tenant clusters. Installing the chart deploys the controller-manager, its CRDs, and the RBAC it needs to operate.

helm install heir oci://ghcr.io/tardigradeproj/charts/heir --version 1.35.7-heirv0.1.0 \
-n heir-system --create-namespace \
--set manager.image.repository=ghcr.io/tardigradeproj/heir-controller-manager
--set manager.image.tag=latest

Everything below documents the fields available in the chart's values.yaml.

Naming​

FieldTypeDescriptionDefault
nameOverridestringPartially overrides the chart's fullname template, while still prefixing it with the release name—
fullnameOverridestringFully overrides the chart's fullname template, replacing the generated resource name prefix entirely—

manager​

Configures the controller-manager Deployment, the single pod that runs the operator's reconcile loops.

FieldTypeDescriptionDefault
replicasintegerDesired number of controller-manager pod replicas. Only one replica is ever active at a time — extra replicas stand by as leader-election followers1
image.repositorystringContainer image repository for the controller-managercontroller
image.tagstringContainer image tag for the controller-managerlatest
image.pullPolicystringImage pull policy for the controller-manager containerIfNotPresent
args[]stringExtra arguments appended to the controller-manager's command line, in addition to the metrics and health-probe flags the chart always sets[--leader-elect]
env[]EnvVarEnvironment variables injected into the controller-manager container[]
envOverridesmap[string]stringOverrides for individual environment variables by name, e.g. --set manager.envOverrides.VAR=value. Takes precedence over the same name set in env{}
imagePullSecrets[]stringNames of image pull secrets attached to the controller-manager pod[]
podSecurityContextPodSecurityContextPod-level security settings for the controller-manager pod{runAsNonRoot: true, seccompProfile: {type: RuntimeDefault}}
securityContextSecurityContextContainer-level security settings for the controller-manager container{allowPrivilegeEscalation: false, capabilities: {drop: [ALL]}, readOnlyRootFilesystem: true}
resourcesResourceRequirementsCPU and memory requests and limits for the controller-manager container{limits: {cpu: 500m, memory: 128Mi}, requests: {cpu: 10m, memory: 64Mi}}
affinityAffinityScheduling constraints for the controller-manager pod. See Kubernetes docs{}
nodeSelectormap[string]stringNode selector for the controller-manager pod{}
tolerations[]TolerationTolerations applied to the controller-manager pod[]

Example — envOverrides:

helm install heir ./chart --set manager.envOverrides.LOG_LEVEL=debug

rbacHelpers​

FieldTypeDescriptionDefault
enablebooleanInstall convenience admin, editor, and viewer ClusterRoles scoped to the Runtime and WorkerJoinToken CRDs, for aggregation into broader user-facing rolesfalse

crd​

FieldTypeDescriptionDefault
enablebooleanInstall the Runtime and WorkerJoinToken CustomResourceDefinitions as part of the charttrue
keepbooleanAnnotate the CRDs with helm.sh/resource-policy: keep, so they — and the custom resources built from them — survive a helm uninstall. Set to false if uninstalling the chart should also remove the CRDstrue

metrics​

Controls the controller-manager's /metrics endpoint.

FieldTypeDescriptionDefault
enablebooleanExpose the /metrics endpoint, protected by Kubernetes RBAC via a bearer token, and create the Service that fronts it. When false, the controller-manager's metrics server is disabled entirelytrue
portintegerPort the metrics endpoint listens on and the metrics Service targets8443

Reading metrics requires a client with permission to access the metrics Service, e.g. by binding the chart's metrics-reader ClusterRole to a ServiceAccount and presenting its token as a bearer token over HTTPS.

certManager​

FieldTypeDescriptionDefault
enablebooleanUse cert-manager to issue and rotate the TLS certificate securing the metrics endpoint. Requires cert-manager to already be installed in the cluster. When false, the metrics endpoint's ServiceMonitor (if enabled) is configured to skip TLS verification insteadfalse

prometheus​

FieldTypeDescriptionDefault
enablebooleanCreate a ServiceMonitor so a prometheus-operator instance in the cluster scrapes the controller-manager's /metrics endpoint. Requires the monitoring.coreos.com CRDs to already be installedfalse

Full Example​

manager:
replicas: 2
image:
repository: ghcr.io/tardigradeproj/heir-operator
tag: v0.3.0
resources:
limits:
cpu: "1"
memory: 256Mi
requests:
cpu: 50m
memory: 128Mi

rbacHelpers:
enable: true

crd:
enable: true
keep: true

metrics:
enable: true
port: 8443

certManager:
enable: true

prometheus:
enable: true