Helm values

Values for the oci://ghcr.io/loopholelabs/architect-chart chart. The console install flow sets the required ones for you. Run helm show values oci://ghcr.io/loopholelabs/architect-chart to print the live defaults.

Required

ValueTypeDefaultDescription
clusterNamestring""Identifier for this cluster in the console. Must be set.

Authentication

Provide the token inline with machineToken, or reference a Secret that holds it with secretRef. Prefer secretRef for any non-interactive or GitOps install: --set machineToken writes the token into your shell history and into the stored Helm release values (helm get values), whereas a referenced Secret keeps it out of both (and works with External Secrets, Sealed Secrets, and similar).

ValueTypeDefaultDescription
machineTokenstring""Install token, set inline. Mutually exclusive with secretRef.
secretRefstring""Name of an existing Secret holding the token. The key inside it must be named machineToken.
secretRefDefaultstringarchitectd-secretsName of the Secret the chart creates when secretRef is unset.

Cluster

ValueTypeDefaultDescription
kubernetesDistrostringkindThe cluster's distribution (the console sets this).
apiUrlstringhttps://api.architect.ioEndpoint Architect authenticates against and sends heartbeats to.
imagePullPolicystringIfNotPresentPull policy for all Architect images.

Persistent checkpoint storage (S3)

Optional. Enables the daemon to store checkpoints for the start-from-persistent-checkpoint annotation in an S3-compatible bucket. Set s3Bucket and s3Region to turn it on; everything else depends on where the bucket lives and how you authenticate. When secretRef is unset, these values are written into the chart-created Secret.

ValueTypeDefaultDescription
s3Bucketstring""Bucket name. Required to enable S3.
s3Regionstring""Bucket region. Required to enable S3.
s3Endpointstring""Endpoint URL for an S3-compatible store (MinIO, Garage). Leave empty for real AWS S3.
s3AccessKeyIDstring""Static access key ID. Leave empty to use workload identity (see below).
s3SecretAccessKeystring""Static secret access key. Leave empty to use workload identity (see below).

Credentials

The daemon picks its credential source from what you set:

  • Static keys — set s3AccessKeyID and s3SecretAccessKey. Required for S3-compatible stores (MinIO, Garage) and works against AWS S3.
  • Workload identity — leave both keys empty and the daemon resolves credentials via the AWS SDK default chain (IRSA, EKS Pod Identity, instance profile, environment). Use this on EKS when a policy forbids long-lived keys. The daemon logs the resolved credential mode at startup.

Because leaving the keys empty now means "use ambient credentials" rather than "S3 off", a bucket set with keys half-configured is treated as enabled and would fail at the first upload rather than at startup. Set both keys or neither.

For IRSA, attach the role ARN to the daemon ServiceAccount via architectdServiceAccountAnnotations:

architectdServiceAccountAnnotations:
  eks.amazonaws.com/role-arn: arn:aws:iam::123456789012:role/architect-s3

For EKS Pod Identity, no chart change is needed: create the Pod Identity association on the AWS side against the architectd-installer-daemon ServiceAccount in the release namespace.

The IAM role (IRSA or Pod Identity) needs these actions on the bucket and its objects, since the transfer manager does concurrent multipart transfers:

{
  "Effect": "Allow",
  "Action": [
    "s3:GetObject",
    "s3:PutObject",
    "s3:DeleteObject",
    "s3:AbortMultipartUpload",
    "s3:ListMultipartUploadParts",
    "s3:ListBucketMultipartUploads"
  ],
  "Resource": [
    "arn:aws:s3:::my-bucket",
    "arn:aws:s3:::my-bucket/*"
  ]
}

Service account

ValueTypeDefaultDescription
architectdServiceAccountAnnotationsmap{}Annotations added to the daemon (architectd-installer-daemon) ServiceAccount, e.g. the IRSA eks.amazonaws.com/role-arn.

Placement and sizing

Each component (architectd, architectAdmissionController, architectControlPlane) takes a node selector, tolerations, and resource requests/limits.

Value patternTypeDefaultDescription
<component>NodeSelectormap{}Node selector for the component's pods.
<component>Tolerationslist[]Tolerations for the component's pods.
<component>Resourcesmap{}Resource requests and limits for the component.
architectdHostAliaseslist[]Extra host aliases for architectd pods.

Images

Each component image can be overridden; leave blank to use the pinned default.

ValueTypeDefault
architectdImagestringghcr.io/loopholelabs/architectd:latest
architectdInstallerImagestringghcr.io/loopholelabs/architectd-installer:latest
architectShimRuncImagestringghcr.io/loopholelabs/architect-shim-runc:latest
architectAdmissionControllerImagestringghcr.io/loopholelabs/architect-admission-controller:latest
architectAdmissionControllerInstallerImagestringghcr.io/loopholelabs/architect-admission-controller-installer:latest
architectControlPlaneImagestringghcr.io/loopholelabs/architect-control-plane:latest
architectHealthCheckProxyImagestringghcr.io/loopholelabs/architect-health-check-proxy:latest

Self-test

The self-test component deploys short-lived workloads into a dedicated testing namespace and runs core-functionality checks on demand from the Console. It is enabled by default; set architectSelfTestEnabled: false to opt out. See Testing your application for how to use it.

ValueTypeDefaultDescription
architectSelfTestEnabledbooltrueDeploy the self-test component and advertise it to the Console.
architectSelfTestNamespacestringarchitect-self-testNamespace the component creates test workloads in (created by the chart).
architectSelfTestPollIntervalduration5sHow often the component polls the API for a pending run.
architectSelfTestImagestringghcr.io/loopholelabs/architect-self-test:latestSelf-test component image override.
architectSelfTestWorkloadImagestringghcr.io/loopholelabs/example-go:latestTest workload image override.
architectSelfTestNodeSelectormap{}Node selector for the component's pod.
architectSelfTestResourcesmap50m/64Mi req, 250m/128Mi limComponent resource requests and limits.
architectSelfTestTolerationslist[]Tolerations for the component's pod.

Experimental

Only enable these when advised by Loophole Labs.

ValueTypeDefaultDescription
features.liveMigrationBufferingboolfalseBuffers in-flight traffic across a live migration.
architectRouterAddrstring/ip4/0.0.0.0/tcp/8080Router listen multiaddr.
architectRouterPortint8080Router port.
architectRouterGenericXDPbooltrueUse generic XDP (for drivers without native XDP).
architectRouterIngressIfacestringeth0Interface the router attaches to.
architectRouterPassthroughPortsstring""Ports that bypass the router.
architectRouterResourcesmap250m/256Mi req, 1/512Mi limRouter resource requests and limits.
architectRouterShimPortint8081Router-shim port.
architectRouterShimResourcesmap100m/128Mi req, 500m/256Mi limRouter-shim resource requests and limits.
architectRouterShimTimeoutduration10sRouter-shim request timeout.
architectRouterImagestringghcr.io/loopholelabs/architect-router:latestRouter image override.
architectRouterShimImagestringghcr.io/loopholelabs/architect-router-shim:latestRouter-shim image override.
architectShadowServiceEnabledboolfalseEnable shadow Services for live network migration.
architectShadowServicePortMinint30000Low end of the shadow-service port range.
architectShadowServicePortMaxint32767High end of the shadow-service port range.
architectShadowServiceRouterPodLabelSelectorstringapp.kubernetes.io/name=architect-routerSelector for router pods.