AWS EKS self-managed Magento 2.4.9 live baseline — 2026-08-17 (20260817bf)¶
This is a bounded PASS for a fresh self-managed EKS create, AL2023 node registration, Kubernetes system-plane readiness, EBS CSI volume write/read/delete, Magento seed/deploy/runtime health, direct ELB HTTP, and exact teardown. It is a baseline cell, not a resilience or disaster-recovery claim. Node interruption, node loss, zone loss, regional recovery, custom domain HTTPS, CloudFront/WAF, and backup/restore remain untested here.
Scope and admission¶
| Field | Value |
|---|---|
| Account | <aws-account> |
| Region | eu-west-3 |
| Run ID | 20260817bf |
| Project tag | awsbf |
| Acceptance owner | magelift-acceptance-awsbf-preview |
| Profile | preview |
| Runtime | eks (computeMode:self-managed) |
| Magento | Open Source 2.4.9, headless |
| Kubernetes | 1.36 / EKS v1.36.2-eks-254016e |
| AMI | ami-070bfbfeba67a8054 (Amazon Linux 2023.12.20260803) |
| Node shape | m6i.large, min/desired/max 2/2/2 |
| Availability zones | eu-west-3b and eu-west-3c |
| Network | fck-nat, VPC CIDR 10.103.0.0/16, service CIDR 172.20.0.0/16 |
| Database/cache | RDS MySQL 8.4.10, ElastiCache Valkey 9.0, queue database, search disabled |
| Observability | EKS CloudWatch Observability add-on, logs and metrics |
| Artifact | Signed immutable ECR digest sha256:8588b13fc390bc2b733ec3d03a0501ecc82a6ebad7fcca7758c933977fdb2be4 |
| Catalog | scripts/acceptance/cells-aws-eks-architecture-self-managed.txt |
The corrected run created 90 Pulumi resources. The run-specific prerequisite secrets, regional ACM certificate, CloudFront-region ACM certificate, DNS validation records, ECR repository, and Pulumi state bucket were all owned by the exact project/run markers.
Cold create and self-managed node boot¶
The launch template was lt-00ed497a0ed24888f, version 1, and the Auto
Scaling group was awsbf-preview-runtime-self-managed-nodes. Both instances
were InService and healthy:
| Instance | Availability zone | Private address | Kubernetes node | Result |
|---|---|---|---|---|
i-<redacted-c> |
eu-west-3c |
10.103.67.67 |
ip-10-103-67-67.eu-west-3.compute.internal |
Ready |
i-<redacted-b> |
eu-west-3b |
10.103.20.121 |
ip-10-103-20-121.eu-west-3.compute.internal |
Ready |
The live launch-template user data decoded to the AWS MIME multipart shape:
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="//"
Content-Type: application/node.eks.aws
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
Content-Type: text/x-shellscript
The NodeConfig contained the run's cluster name, EKS API endpoint, cluster
CA, and service CIDR. The shell part is only a legacy-AMI fallback and exits
when nodeadm or /etc/eks/nodeadm.d is present. This is the correction for
the failed 20260817be cell, where AL2023 nodeadm-config attempted to parse
raw shell text as YAML. The renderer now follows the AWS node bootstrapping
guide
and the AL2023 EKS user-data contract.
Both nodes reported:
STATUS=Ready
OS=Amazon Linux 2023.12.20260803
KERNEL=6.18.39-79.141.amzn2023.x86_64
CONTAINER_RUNTIME=containerd://2.2.5+unknown
There were no nodeadm parse errors, no pending node-registration state, and
no node restarts during the observed baseline.
Kubernetes system plane, IAM, and storage¶
The cluster was ACTIVE; aws-node, CoreDNS, and kube-proxy were all ready
on both nodes with zero restarts. The EBS CSI controller ran two 6/6
replicas and the EBS CSI node daemonset ran 3/3 containers on each node,
also with zero restarts.
The live EKS add-ons were:
| Add-on | Version | Status |
|---|---|---|
amazon-cloudwatch-observability |
v6.5.0-eksbuild.1 |
ACTIVE |
aws-ebs-csi-driver |
v1.63.1-eksbuild.1 |
ACTIVE |
The EBS add-on used
arn:aws:iam::<aws-account>:role/awsbf-preview-runtime-ebs-csi-role-d929328.
Its trust policy was restricted to the cluster OIDC provider,
audience sts.amazonaws.com, and subject
system:serviceaccount:kube-system:ebs-csi-controller-sa; its only attached
policy was the AWS-managed AmazonEBSCSIDriverPolicy. This proves the
run-scoped IRSA identity path used by the add-on; it does not claim a
provider-wide identity policy.
The disposable storage cell used StorageClass
awsbf-preview-runtime-ebs and a 1 GiB RWO PVC. The first probe manifest
created and attached an EBS volume but compared a marker containing a literal
escaped newline, so its shell assertion failed. The corrected probe wrote and
read the exact marker awsbf-ebs-marker-20260817bf and completed 1/1:
2f1700739e7bee0a7231c3d4896bd24816914e37c2bfcdbefdfa77ce5b938a35 /data/marker
awsbf-ebs-marker-20260817bf
The corrected probe's volume was deleted by the StorageClass Delete
reclaim policy before the stack teardown. The probe assertion correction is
not an infrastructure failure and is retained as a tooling deviation.
Magento application evidence¶
The database-grant Job completed 1/1. Seed import completed against
database=magento with the sanitized definer-free Magento dump:
{"environment":"preview","seedDump":"...magento-249-sanitized-definer-free.sql.gz","seedDumpStatus":"imported"}
AWS EKS seed import completed database=magento
The web Deployment was 1/1 with both php-fpm and web containers, and the
cron Deployment was 1/1. The final pods used the exact signed immutable
image digest recorded above. Runtime health returned healthy with one ready
web replica of one desired replica. The acceptance matrix passed:
| Cell | Result | Duration |
|---|---|---|
computeMode:self-managed |
PASS | 1375s |
queueMode:database |
PASS | 15s |
searchMode:disabled |
PASS | 15s |
The Kubernetes LoadBalancer Service exposed
aea0846cc49cd4d3c853f8df8e9034e9-1542054818.eu-west-3.elb.amazonaws.com.
After the run-owned seeded-database mutation set both Magento secure and
unsecure base_url values to that direct ELB URL and flushed the cache, an
HTTP GET returned 200 OK, the rendered title was Home page, and the body
contained 48 references to the same ELB hostname. This is direct origin
HTTP proof after an explicit acceptance mutation; it is not custom-domain
TLS or edge proof.
The final image was signed with the configured keyless identity and verified
against the Google OIDC issuer before deployment. The first signing command
omitted --include-email from the identity-token request and Fulcio returned
HTTP 400; the corrected identity-token command passed before the live run.
Cleanup and independent audit¶
Pulumi destroy removed all 90 recorded resources in 16m1s, followed by
exact removal of stack
organization/magelift/awsbf-preview-aws-eks. The versioned state bucket
passed exact project/managed-by/purpose/run tag checks; 776 object versions
and 19 delete markers (795 total) were removed before deleting the bucket.
The three run-tagged Secrets Manager records, two ISSUED ACM certificates,
two ACM validation CNAMEs with marker
magelift/acceptance/acm-dns/20260817bf, six run log groups, and the
run-scoped ECR repository (including its signature artifacts) were each
identity-checked and deleted. The shared cleanup assertion returned:
An independent owning-service inventory after teardown returned zero for:
| Inventory | Count |
|---|---|
| EKS cluster | 0 |
| RDS instance / subnet group | 0 / 0 |
| ElastiCache replication group / subnet group | 0 / 0 |
| VPC / tagged subnets | 0 / 0 |
| Active cluster EC2 instances | 0 |
| EBS volumes / EIPs | 0 / 0 |
| IAM roles with the run cluster prefix | 0 |
| CloudWatch log groups | 0 |
| Secrets Manager records | 0 |
| Pulumi state bucket | 0 |
| ECR repository | 0 |
| ELBv2 load balancers | 0 |
ACM certificates (eu-west-3 / us-east-1) |
0 / 0 |
| Cloudflare validation records | 0 |
The customer-managed KMS key supplied as an external prerequisite was not owned by this run and was intentionally retained.
Non-claims¶
This cell does not certify:
- node interruption, node loss, pod disruption budgets, or automatic self-managed-node replacement under failure;
- physical AZ outage, zone loss, regional recovery, failover/failback, RPO, or RTO;
- EBS snapshot/restore, database restore, cache reconstruction, or media recovery;
- custom-domain HTTPS, CloudFront, WAF, origin authentication, purge, or edge failover;
- CloudWatch signal delivery beyond the live add-on/controller and agent readiness observed here.