Install and Enroll Istio Ambient Safely
Install pinned cluster components first, then enroll only the HelixWorks namespace through Git.
System map · Day 31
Whole-system design
Five stable layers. Today's work is expanded and linked; the rest stays in context.
Product and authority
Covered — People and product entry points · Identity and policy · HelixWorks control plane · Generated application plane
Delivery and desired state
Covered — CI and immutable artifacts · Argo CD reconciliation
Git desired state
Source-backed today
Adds the reviewed namespace enrollment declaration without editing application Pods.
Cloud and orchestration
Covered — Terraform and AWS APIs · Accounts, VPC, DNS, and private paths
Kubernetes or EKS control plane
Source-backed today
Stores the namespace label and mesh resources that Istio controllers observe.
Compute and traffic
Covered — Platform service workloads · Generated app workloads
Worker compute
Source-backed today
Runs node-level CNI and ztunnel processes outside application containers using explicitly pinned component versions.
Ambient mesh data plane
Source-backed today
Installs ambient components and moves eligible Forge traffic onto HBONE while waypoint and L7 policy remain absent.
Storage and evidence
Covered — Infrastructure state · Cluster desired and live state · Product data and artifacts · Evidence and observability
The enterprise problem and today’s slice
Enterprise problem: Installing a mesh and enrolling workloads as one opaque action can redirect live packets before the cluster components, target context, or rollback boundary are proven, turning a security change into an outage. Whole-course context: The incoming Day 30 artifact is a revision-bound live baseline of the five-service HelixWorks request path, including checked-in positive and denied NetworkPolicy evidence. Today’s slice: The platform operator installs checksum-pinned Gateway API v1.5.1 resources and Helm-pinned Istio 1.30.3 components; the HelixWorks owner then applies only ambient-enrollment-local, which adds ambient enrollment, namespace-wide STRICT peer authentication, and HBONE/health-probe NetworkPolicy compatibility. End-of-day evidence: Exact context, approval, versions, Helm releases, controller and node-agent rollouts, the ambient label, strict mode, compatibility policies, and unchanged workload identities form the enrollment record. Still unsolved: L4 authorization, waypoint selection, L7 method/path policy, live denial, mutual-TLS telemetry, bounded failure, rollback execution, customer ingress, and production rollout remain deferred.
Customer outcome and implementation focus
The customer outcome is a reviewable install and enroll istio ambient safely change, not a collection of requirements. This day starts with the implementation boundary, then uses the command or manifest below to produce positive, denied, and recovery evidence.
Components in focus
Istio CNI, ztunnel DaemonSet, waypoint proxy, control plane, and HelixWorks workloads; node and pod compute; Kubernetes etcd and telemetry stores; cache: not involved.
This map names the implementation boundary for this day. The service or controller changes only the state it owns; runtime and audit evidence let the operator distinguish a declared change from an effective one.
Install ambient mesh components and enroll one namespace
Pin and install the cluster boundary
Downloading a mutable remote manifest or using an unpinned Helm chart can make two operators install different systems from the same instructions. The implementation fixes that problem with this exact mesh/istio-ambient/versions.env content.
ISTIO_VERSION=1.30.3
GATEWAY_API_VERSION=v1.5.1
GATEWAY_API_SHA256=64ec76609a6ac885e0405dea79ca509c229fa019d342f0857aa8b6bdc8b8ba92
The official Istio Helm guide currently shows Gateway API v1.5.1 experimental resources and separate ambient components, matching the repository’s pinned sequence (Istio Helm installation). The repository is authoritative for this lab’s exact pins; “latest” is not an accepted input.
export MESH_CONTEXT="${MESH_CONTEXT:?set the exact disposable cluster context}"
export MESH_INSTALL_APPROVED=1
./scripts/install-istio-ambient.sh
./scripts/verify-istio-ambient.sh control-plane
The script refuses to continue unless the shell’s current context equals MESH_CONTEXT, the API answers, the explicit approval equals one, and the downloaded SHA-256 matches. Only then do the API server and Helm controllers change software state. A successful exit proves named component presence and rollout; it does not yet prove HelixWorks traffic or enrollment.
Enroll only the HelixWorks namespace
Installing ambient-capable components does not automatically redirect HelixWorks traffic. Istio documents namespace enrollment through istio.io/dataplane-mode=ambient; unlabeled namespaces remain out of the ambient data plane (enable ambient mode).
These are the exact enrollment and peer-authentication objects from mesh/ambient-enrollment/namespace-patch.yaml and peer-authentication.yaml:
apiVersion: v1
kind: Namespace
metadata:
name: helixworks-forge
labels:
istio.io/dataplane-mode: ambient
---
apiVersion: security.istio.io/v1
kind: PeerAuthentication
metadata:
name: forge-strict-mtls
namespace: helixworks-forge
spec:
mtls:
mode: STRICT
In ambient mode, STRICT is useful for ensuring that connections cannot bypass the mesh; DISABLE is not supported (Istio PeerAuthentication). This object proves declared policy, not observed encryption. Packet or ztunnel telemetry proof belongs to a later evidence gate.
kubectl kustomize gitops/apps/forge/overlays/ambient-enrollment-local >/tmp/forge-ambient-enrollment-local.yaml
./scripts/verify-ambient-source.sh
kubectl --context "${MESH_CONTEXT:?set the exact disposable cluster context}" apply -k gitops/apps/forge/overlays/ambient-enrollment-local
MESH_CONTEXT="$MESH_CONTEXT" ./scripts/verify-istio-ambient.sh enrollment
kubectl --context "$MESH_CONTEXT" -n helixworks-forge get pod -o custom-columns='NAME:.metadata.name,CONTAINERS:.spec.containers[*].name,SERVICE_ACCOUNT:.spec.serviceAccountName'
The source verifier renders all three stages and checks their ordering before mutation. This explicit apply reconciles only enrollment. The scoped live verifier checks ambient label, strict mode, HBONE/health NetworkPolicies, and cluster components; it deliberately does not claim a live L4 denial, waypoint, or HTTP policy. Day 30 remains the last sealed customer-traffic baseline until Day 32 adds and probes L4 authorization.
Failure boundary and decision rule
Partial installation is not permission to enroll, and successful enrollment is not permission to continue after a customer regression. Diagnose from the lowest changed layer upward.
| Observation | Interpretation | Action |
|---|---|---|
| Context or approval gate fails | Target authority is absent | Change nothing; correct the reviewed input |
| Gateway API checksum differs | Downloaded bytes are not the approved artifact | Change nothing; investigate release URL or pin through review |
istiod, CNI, or ztunnel rollout fails | Cluster capability is incomplete | Keep HelixWorks unenrolled and inspect the failing owner |
| Namespace label or strict mode differs | Git desired state has not reconciled | Stop application testing and inspect the deployment controller |
| Waypoint label or AuthorizationPolicy appears | A later stage leaked into enrollment | Stop and restore the enrollment-only overlay |
| Enrollment objects agree but no live traffic proof exists | This verifier is intentionally structural | Do not infer authorization; proceed only to Day 32's bounded live probe |
Decision rule: install cluster capability first, prove it, enroll one namespace second, and refuse to add L4 or L7 policy until the enrollment-only verifier agrees with Git. Istio’s migration guidance likewise separates ambient-component installation from adding the namespace label (install ambient components).
Before and after, side by side
Before this day, HelixWorks had a measured Kubernetes-only path but no mesh workload transport. Afterward, the same containers and ServiceAccounts are enrolled through one Git label, node ztunnels can carry their traffic, strict peer authentication is declared, and later waypoint/L4/L7 objects remain absent. This structural enrollment evidence does not claim live authorization or mutual-TLS telemetry.
Key takeaways
Treating installation and enrollment as one command hides which owner must stop or recover a failure. Ambient enrollment is a controlled ownership handoff.
- Pin remote bytes and Helm charts; verify context and explicit approval before mutation.
- Installing ambient support and enrolling
helixworks-forgeare separate decisions owned by different teams. - The ambient label selects ztunnel transport; waypoint selection belongs to Day 33.
STRICTdeclares required tunneled mutual TLS, while live authorization evidence belongs to the next stages.- Keep the change only when components, source, enrollment state, absence checks, and workload identities agree.
Checklist
Day 31 is complete only when the cluster and customer evidence come from the same reviewed window.
- [ ]
MESH_CONTEXTequals the current reachable disposable context - [ ] Gateway API
v1.5.1bundle matches the pinned SHA-256 - [ ] Four Istio
1.30.3Helm releases and their rollouts are ready - [ ]
ambient-enrollment-localrenders and applies without L4, waypoint, or L7 objects - [ ]
helixworks-forgehas only the ambient mesh label andforge-strict-mtlsisSTRICT - [ ] Five application containers retain their same-named ServiceAccounts
- [ ] Enrollment verifier passes without claiming live authorization evidence