Skip to content

Home

Reading a Helm Chart You Did Not Write

I set app.messaging.sqs.topic in a values file. Helm accepted it. The chart rendered without error. The deployed pod did not have the environment variable, because the chart contains no reference to SQS anywhere.

I found that by reading the template, not by debugging the application. That is the skill this post is about, because most Helm charts you deploy are charts someone else wrote.

The EKS Module Accepted the Setting and Never Sent It

Terraform applied cleanly. The cluster reached ACTIVE. Then kubectl returned 401, and it turned out that nobody, including the account that created it, had permission to talk to the thing that had just been created successfully.

The setting that grants that permission was in my configuration. The module took it, validated it, and did not pass it to AWS.

Seventeen Errors, and the Ones That Were Caused by the Fix

Provisioning EKS in a restricted AWS account produced seventeen distinct failures. What made it hard was not the count. It was that several of them only existed because of the fix for the previous one.

Three of the chains are worth walking through, because the pattern they share is the actual lesson: in a constrained environment, the correct move is often to back out rather than push forward.

TLS Behind NAT Is Two Problems, Not One

A Kubernetes cluster on a private address cannot use the HTTP-01 challenge. Not because something is misconfigured, but because the challenge requires Let's Encrypt to open a connection to you, and nothing routable exists to connect to.

The mistake I made next was assuming that solving the certificate solved the problem. It does not. Getting a trusted certificate and being reachable from the internet are separate problems with separate solutions, and one of the three approaches below fixes only the first.