c8 documentation

Helm chart reference

Traditional chart documentation

Highly available RKE2/K3s, EKS, AKS, GKE & on-prem deployment.

A chart-reference path for installing c8 CRDs, operators, control plane and role-isolated data plane. It follows the checked-in values schemas and uses the same overview → prerequisites → parameters → install → lifecycle structure familiar from Artifact Hub.

3

ordered charts

1.33+

declared Kubernetes version

generic + rke2

accepted distribution values

01 · overview

What this chart installs

c8 is split into an install-time Helm layer and a runtime operator layer. The charts create the API, custom resource, controllers, worker roles, security policy and scaling objects. PostgreSQL, S3-compatible object storage, image registry, secret management, ingress/Gateway, service-mesh TLS and node provisioning remain infrastructure dependencies.

CRDs + RBAC

Versioned desired-state API and least-privilege controller identities.

Two operators

Reference and distributed compilation reconciliation.

Role-isolated workers

Query, fragment, locator, hydration, reasoning and batch jobs.

Safety defaults

Guaranteed QoS, default-deny policy, checksums and explicit ceilings.

02 · validation

Yes—c8 is a Kubernetes operator-based application

Repository evidence

  • crates/ngkg-kube derives the NgkgCompilation custom resource.
  • charts/ngkg-crds installs its CRD.
  • Both operator binaries start kube_runtime::Controller watch loops.
  • Reconciliation creates/verifies Jobs, enforces barriers and patches status.

What Helm does—and does not do

Helm installs static Kubernetes objects and release values. It does not perform semantic compilation. After installation, the controllers watch NgkgCompilation desired state, read durable catalog truth and reconcile deterministic Kubernetes Jobs. The product is therefore an operator distributed as Helm charts.

03 · topology

How requests become autoscaled work

Desired state

API writes catalog record + NgkgCompilation

Operators

reconcile immutable phase Jobs + barriers

Capacity chain

HPA/Kueue demand → pending pod → provider node autoscaler

Online

HPA owns query, fragment, hydration and online-reasoner replicas.

Batch

Operators own deterministic Jobs; Kueue owns admission.

Nodes

Provider autoscaler owns physical machine capacity.

04 · prerequisites

Supply the infrastructure boundary first

Kubernetes

Version 1.33+ as declared by the checked-in platform/workload charts; kubectl and Helm compatible with the cluster.

Cluster services

Metrics Server, Kueue CRDs/controller, NetworkPolicy-enforcing CNI, CSI/default StorageClass and Gateway API or approved ingress.

Durable dependencies

Private PostgreSQL and S3-compatible object storage. Azure Blob and GCS require an approved S3-compatible gateway or MinIO because current values use s3:// or file://.

Security

Private digest-pinned registry, external secret manager, TLS Secret/service mesh, workload identity and audited dependency CIDRs.

HPC nodes

Whole-core allocatable CPU, adequate memory, local NVMe spill and kubelet CPU/topology policies matching the chart requirements.

Autoscaling

Provider-integrated node provisioning. c8 supplies application demand and HPAs; it does not create cloud VM groups or credentials.

05 · chart stack

Install three charts in dependency order

ChartLayerContents
ngkg-crdsCRDInstalls ngkg.io/v1alpha1 NgkgCompilation before either controller starts.
ngkg-platformControl planeAPI, reference operator, distributed operator, migration Job, RBAC, service accounts, API HPA and trusted ceiling ConfigMap.
ngkg-workloadsData planeQuery, fragment, locator, hydration and reasoner workloads; HPAs, Kueue objects, disruption budgets, NetworkPolicies and node responsibility rules.

06 · security inputs

Create referenced Secrets—never inline credentials

kubectl create namespace c8

# Examples only: source values from your external secret manager in production.
kubectl -n c8 create secret generic c8-database   --from-literal=DATABASE_URL='postgres://<user>:<password>@<private-host>/<database>'
kubectl -n c8 create secret generic c8-object-store   --from-literal=AWS_ACCESS_KEY_ID='<id>'   --from-literal=AWS_SECRET_ACCESS_KEY='<secret>'
kubectl -n c8 create secret generic c8-auth-tokens   --from-file=tokens.json=./approved-tokens.json
kubectl -n c8 create secret generic c8-tenant-admission   --from-file=policy.json=./approved-tenant-policy.json
kubectl -n c8 create secret tls c8-internal-tls   --cert=./tls.crt --key=./tls.key

Calculate the token and tenant-policy SHA-256 values from the exact mounted bytes. On EKS, AKS and GKE, prefer provider workload identity over long-lived object-store keys when the selected S3-compatible client path supports it.

07 · values

Create schema-valid platform and workload overlays

approved-platform-values.yaml

images:
  api: { repository: registry.example.com/c8/api, digest: sha256:<digest> }
  operator: { repository: registry.example.com/c8/operator, digest: sha256:<digest> }
  distributedOperator: { repository: registry.example.com/c8/distributed-operator, digest: sha256:<digest> }
  distributedWorker: { repository: registry.example.com/c8/distributed-worker, digest: sha256:<digest> }
  referenceWorker: { repository: registry.example.com/c8/reference-worker, digest: sha256:<digest> }
  catalogMigrator: { repository: registry.example.com/c8/catalog-migrator, digest: sha256:<digest> }

dependencies:
  databaseSecret: c8-database
  authTokensSecret: c8-auth-tokens
  objectStoreCredentialsSecret: c8-object-store

artifactStore:
  baseUrl: s3://c8-artifacts/prod

batchScheduling:
  localQueue: ngkg-batch

api:
  replicas: 3
  authTokensFileSha256: <64-lowercase-hex>
  autoscaling:
    enabled: true
    minReplicas: 3
    maxReplicas: 12

approved-workloads-values.yaml

platform:
  kubernetesDistribution: generic # use rke2 only with the checked-in RKE2 profile

images:
  query: { repository: registry.example.com/c8/online, digest: sha256:<digest> }
  fragment: { repository: registry.example.com/c8/online, digest: sha256:<digest> }
  locator: { repository: registry.example.com/c8/online, digest: sha256:<digest> }
  hydration: { repository: registry.example.com/c8/online, digest: sha256:<digest> }
  reasoner: { repository: registry.example.com/c8/reasoner, digest: sha256:<digest> }

tls:
  existingSecret: c8-internal-tls

onlineServing:
  databaseSecret: c8-database
  authTokensSecret: c8-auth-tokens
  authTokensFileSha256: <64-lowercase-hex>
  tenantAdmissionSecret: c8-tenant-admission
  tenantAdmissionPolicySha256: <64-lowercase-hex>
  objectStoreCredentialsSecret: c8-object-store
  artifactStoreBaseUrl: s3://c8-artifacts/prod
  queryTimeoutSeconds: "120"
  maxQueryResultRows: "1000000"
  propertyPathHotVertexDegree: "100000"
  propertyPathMaxHotVertexSplits: "64"

onlineReasoning:
  enabled: true
  sharedWorkspaceClaim: c8-reasoner-work
  sharedTokenSecret: c8-reasoner-token
  adapterSha256: <sha256-of-ngkg-hermit-adapter.jar>

hpcRuntime:
  guaranteedQos: true
  nodeSaturationTargetPercent: 80
  cpuManagerPolicyRequired: static
  topologyManagerPolicyRequired: restricted
  memoryManagerPolicyRequired: Static
  nestedParallelism: false
  localNvme: { requiredForSpill: true }

networking:
  externalApi: gateway-api
  tlsMode: external-service-mesh-required
  defaultDenyNetworkPolicies: true
  dependencyCidrs:
    - 10.40.0.0/24 # private PostgreSQL
    - 10.41.0.0/24 # private S3/MinIO

08 · installation

Validate, render and install

# Static validation
python3 scripts/validate_helm_values.py   charts/ngkg-workloads/values.yaml   --overlay approved-workloads-values.yaml
helm lint charts/ngkg-crds
helm lint charts/ngkg-platform -f approved-platform-values.yaml
helm lint charts/ngkg-workloads -f approved-workloads-values.yaml

# Render for review
helm template c8-crds charts/ngkg-crds --namespace c8 > rendered-crds.yaml
helm template c8-platform charts/ngkg-platform --namespace c8   -f approved-platform-values.yaml > rendered-platform.yaml
helm template c8-workloads charts/ngkg-workloads --namespace c8   -f approved-workloads-values.yaml > rendered-workloads.yaml

# Install in order
helm upgrade --install c8-crds charts/ngkg-crds   --namespace c8 --create-namespace
helm upgrade --install c8-platform charts/ngkg-platform   --namespace c8 -f approved-platform-values.yaml --wait --rollback-on-failure
helm upgrade --install c8-workloads charts/ngkg-workloads   --namespace c8 -f approved-workloads-values.yaml --wait --rollback-on-failure

For RKE2, insert -f charts/ngkg-workloads/profiles/rke2.yaml before the approved workload overlay. Add profiles/production-workload-autoscaling.yaml only after the custom metrics API is installed and verified.

09 · environments

One chart contract, provider-owned infrastructure overlays

EnvironmentChart valueOverlay statusNode capacityProvider work
RKE2rke2Checked-in profiles/rke2.yamlRancher provider Cluster Autoscaler, installed externallyRKE2 node labels/taints and kubelet manager policies
K3sgenericCreate a K3s overlayProvider-specific CA or other node provisionerHA server topology; pass equivalent kubelet labels, taints and policies
Amazon EKSgenericCreate an EKS overlayManaged node groups + Cluster Autoscaler or KarpenterIRSA/Pod Identity, EBS/local NVMe, private S3 endpoints
Azure AKSgenericCreate an AKS overlayVMSS node pools + AKS Cluster AutoscalerWorkload Identity, managed disks/local NVMe, S3-compatible artifact storage
Google GKEgenericCreate a GKE overlayNode pools + GKE Cluster Autoscaler/Node Auto-ProvisioningWorkload Identity Federation, SSD/local NVMe, S3-compatible artifact storage
On-prem KubernetesgenericCreate an infrastructure overlayInfrastructure-integrated CA or static capacityCNI NetworkPolicy, CSI, Gateway, private PostgreSQL and MinIO/S3

10 · parameter reference

The values operators change most often

Images & identity

ParameterTypeDefaultPurpose
images.*.repository / digeststringRequiredPrivate repository and immutable SHA-256 image identity for every role.
tls.existingSecretstringRequiredExisting internal TLS Secret used by workload services.
onlineServing.*SecretstringRequiredExisting database, token, tenant-policy and object-store Secret names.
onlineServing.*Sha25664-char hexRequiredBinds mounted authorization inputs to reviewed bytes.

HA & autoscaling

ParameterTypeDefaultPurpose
api.replicasinteger3Baseline control-plane API replicas.
queryPlane.coordinatorReplicasinteger3Online SPARQL coordinator replicas.
autoscaling.<role>.minNodes/maxNodesintegerRole-specificApplication demand envelope; provider node pools must be able to satisfy it.
metrics.cpuUtilizationTargetPercent1–8080HPA CPU target capped to preserve workload headroom.

Correctness & resources

ParameterTypeDefaultPurpose
hpcRuntime.guaranteedQosbooleantrueRequires CPU/memory requests to equal limits for critical workers.
onlineServing.maxQueryResultRowsnumeric string1000000Fail-closed result-row ceiling.
onlineServing.propertyPathHotVertexDegreenumeric string100000Degree threshold that marks a path vertex for deterministic splitting.
onlineReasoning.maxExactPartitionsnumeric string4096Hard ceiling for exact reasoner candidate partitions.

Networking & storage

ParameterTypeDefaultPurpose
networking.dependencyCidrsCIDR[][]Audited egress to private PostgreSQL and object storage; empty intentionally denies access.
onlineServing.artifactStoreBaseUrlURIRequiredImmutable artifact root, normally s3://...
hpcRuntime.localNvme.requiredForSpillbooleantrueRequires node-local ephemeral storage for bounded spill and shuffle.
resources.<role>Quantity mapRole-specificWhole-core CPU, memory and ephemeral-storage requests/limits.

11 · availability

How high availability is intended to work

  1. 01Run at least three API and query-coordinator replicas across failure domains.
  2. 02Use required anti-affinity so new responsibility replicas create honest node-pool demand.
  3. 03Keep PostgreSQL and S3-compatible artifacts highly available and independently backed up.
  4. 04Let HPA scale online roles, operators create batch Jobs and Kueue admit batch capacity.
  5. 05Let the provider autoscaler add only nodes whose labels, taints and resources match the pending pod.
  6. 06Block scale-in until query ownership, spill, frontier and checkpoint work drains safely.
  7. 07Use PodDisruptionBudgets and multi-zone topology without weakening completion barriers.
  8. 08Prove identical answers during pod replacement, node replacement and replica-count changes.

12 · acceptance

Verify controllers, policy and capacity

kubectl get crd ngkgcompilations.ngkg.io
kubectl -n c8 get deploy,sts,pod,job
kubectl -n c8 get serviceaccount,role,rolebinding
kubectl -n c8 get hpa,pdb,networkpolicy
kubectl get nodes -L ngkg.io/workload,topology.kubernetes.io/zone
kubectl -n c8 logs deploy/c8-platform-ngkg-operator --since=10m
kubectl -n c8 logs deploy/c8-platform-ngkg-distributed-operator --since=10m

# Create or ingest through the c8 API, then observe reconciliation
kubectl -n c8 get ngkgcompilations -w
kubectl -n c8 describe ngkgcompilation <name>

A healthy install is not a production qualification. Exercise an actual compilation, HPA scale event, matching node-pool expansion, worker replacement, complete partition barrier and deterministic query result.

13 · release lifecycle

Upgrade, rollback and uninstall safely

# Inspect current releases and render the proposed change
helm -n c8 list
helm -n c8 history c8-platform
helm template c8-platform charts/ngkg-platform -n c8   -f approved-platform-values.yaml > proposed-platform.yaml

# Upgrade workloads after CRD/platform compatibility review
helm upgrade c8-platform charts/ngkg-platform -n c8   -f approved-platform-values.yaml --wait --rollback-on-failure
helm upgrade c8-workloads charts/ngkg-workloads -n c8   -f approved-workloads-values.yaml --wait --rollback-on-failure

# Roll back application charts; CRDs require their own reviewed procedure
helm rollback c8-workloads <revision> -n c8 --wait
helm rollback c8-platform <revision> -n c8 --wait

# Uninstall does not delete PostgreSQL, object artifacts or CRDs automatically
helm uninstall c8-workloads -n c8
helm uninstall c8-platform -n c8
helm uninstall c8-crds -n c8

14 · current truth

What still blocks a production-supported chart claim

  • Native Cargo format/build/Clippy/workspace tests and Maven HermiT tests.
  • Helm lint plus deterministic render, install, upgrade, rollback and uninstall gates.
  • Live distributed algebra/property-path transport and adjacency activation with scalar equality.
  • Provider-specific EKS, AKS, GKE, K3s and on-prem overlays checked into the repository.
  • Multinode chaos, autoscaling, NVMe pressure, backup/restore, rolling upgrade and sustained soak.
  • SBOM, licenses, CVE scans, signed images and reproducible offline release evidence.