Skip to main content
Version: 1.3.0

Helm install options

The chart is published as an OCI artifact:

helm install kubeatlas oci://ghcr.io/lithastra/charts/kubeatlas \
--version 1.3.0 \
--namespace kubeatlas --create-namespace

This page documents every value the chart honours. Defaults err on the side of "secure and unexposed" — see secure defaults below.

Reference​

Pick the most useful subset for your situation; the rest take their defaults.

image​

KeyDefaultNotes
image.repositoryghcr.io/lithastra/kubeatlasSet this to point at a mirror or private registry.
image.tag"" (uses Chart.AppVersion)Pin to an immutable digest in production.
image.pullPolicyIfNotPresent
imagePullSecrets[]Reference Secrets that already exist in the namespace.

service​

KeyDefaultNotes
service.typeClusterIPThe schema rejects NodePort and LoadBalancer on purpose; expose via Ingress + auth.
service.port80
service.containerPort8080Matches the binary's listen address.

ingress​

KeyDefaultNotes
ingress.enabledfalseSee security warning before flipping this.
ingress.acknowledgeNoBuiltinAuthfalseMust be true to enable the Ingress — the schema enforces it via if/then.
ingress.className""Maps to a controller installed in the cluster (e.g. nginx, traefik, alb).
ingress.annotations{}Controller-specific config.
ingress.hostsone example hostStandard host + paths[].path + pathType shape.
ingress.tls[]TLS secret references. cert-manager integration is on the v1.0 roadmap.

Per-controller example values:

rbac and serviceAccount​

KeyDefaultNotes
rbac.createtrueDisables only if you're managing the ClusterRole/ClusterRoleBinding out-of-band.
serviceAccount.createtrue
serviceAccount.name""Empty → derived from the release name.
serviceAccount.annotations{}For IRSA / Workload Identity.

The ClusterRole's verbs are hard-coded to [get, list, watch] inside the template. There is no values toggle: the read-only invariant is a product promise, not a knob.

Security context​

Defaults are tightened — the schema refuses to relax them below the spec's bar (runAsNonRoot=true, readOnlyRootFilesystem=true, drop: [ALL]). You can change UIDs / GIDs, but you cannot toggle the hardening off.

resources​

KeyDefault
resources.requests.cpu100m
resources.requests.memory128Mi
resources.limits.cpu500m
resources.limits.memory512Mi

A 1000-resource cluster steady-states at ~110 MB; raise the memory limit if your fleet is significantly larger.

networkPolicy​

KeyDefaultNotes
networkPolicy.enabledtrueDefault-deny inbound to the KubeAtlas Pod.
networkPolicy.ingressNamespaceLabel""Namespace label that allows traffic in. Disable the whole thing for ALB / external load balancers — see the ALB example.

persistence​

KeyDefaultNotes
persistence.enabledfalseTier 1 is in-memory only. PostgreSQL + Apache AGE is Tier 2 / v1.0 — see roadmap.

Probes and scheduling​

livenessProbe and readinessProbe map to /healthz and /readyz. /readyz only flips ready after the informer's initial sync, so a green readiness gate means the graph is fully populated.

nodeSelector, tolerations, and affinity follow the standard Helm chart shape.

Secure defaults summary​

Five things are pinned together by values.schema.json so flipping any one in isolation either fails the schema or silently has no effect:

  1. service.type is restricted to ClusterIP.
  2. ingress.enabled=true requires ingress.acknowledgeNoBuiltinAuth=true.
  3. ClusterRole verbs are template-fixed at [get, list, watch].
  4. Pod and container securityContext defaults are non-root + read-only root + dropped capabilities.
  5. The chart never installs a database; persistence is disabled.

Operators who need to weaken any of these have to touch multiple values. That friction is intentional — see Phase 1 §2.3 in the spec for the rationale.

Uninstall​

helm uninstall kubeatlas -n kubeatlas
kubectl delete namespace kubeatlas

The in-memory graph disappears with the Pod; nothing persists.