Skip to content

feat(deploy): reserve an inference proxy hostname in the AWS module - #116

Merged
AlejandroEsquivel merged 10 commits into
mainfrom
feat/tofu-inference-proxy-hostname
Sep 16, 2026
Merged

AlejandroEsquivel merged 10 commits into
mainfrom
feat/tofu-inference-proxy-hostname

Conversation

@AlejandroEsquivel

Copy link
Copy Markdown
Member

Fixes #115

Stacked on #111.

Adds an optional inference_proxy_subdomain to the AWS OpenTofu module. When it's set, the name is added to the ACM certificate's SANs, gets an alias record next to the dashboard and API records, and is output as inference_proxy_hostname. A precondition makes sure it doesn't clash with the other two names.

It's empty by default, so existing plans don't change. Setting it up front means turning on gateway mode later won't need a new certificate.

🤖 Generated with Claude Code

AlejandroEsquivel and others added 7 commits September 14, 2026 22:00
The inference proxy could only take its Control API client identity as one
combined PEM. cert-manager can produce that, but only via
additionalOutputFormats, which is off by default before 1.15 and needs a
cluster-wide feature gate on both the controller and the webhook. Vault, SPIRE
and `kubectl create secret tls` can't produce it at all.

Add HARNESS_PROXY_CLIENT_CERT_FILE/_PEM + _KEY_FILE/_PEM alongside the existing
identity vars, mirroring the split pair the control-api already takes. The two
shapes are mutually exclusive and half a pair is an error, so a half-migrated
deployment fails loudly and names the offending variable. reqwest's two-buffer
constructor is native-tls-only and we're rustls-only, so the pair is joined in
memory and handed to the same Identity::from_pem; the combined path is
unchanged. Blank env values now read as unset, which is how a template says
"not configured".

The fingerprint hashes whichever identity files are configured, so rotating
only the key is still picked up within 30s.

Chart gets blue.internalTransport.clientSecretFormat (combined|split), default
combined.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
CodeQL read `missing_key` as key material being written to a log. It holds an
error message; loop over the two half-pair cases instead so the binding is just
`error`.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Adds blue.internalTransport.certManager so the chart declares the Issuer and
Certificate resources itself. cert-manager then generates and renews both
certificates, and the chart derives the two things a hand-written manifest gets
wrong: the internal Service name in the server SAN, and the Secret names the
pods mount.

Leave issuerRef empty for a self-signed CA scoped to the release, or point it at
an existing CA-type Issuer/ClusterIssuer. ACME issuers do not work — both sides
read ca.crt out of their own Secret and ACME does not write it.

serverSecret/clientSecret installs render byte-identically; their guard still
fails when neither name nor certManager is set.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Adds an optional inference_proxy_subdomain. When set, the name joins the
ACM certificate's SANs, gets an alias record, and is output as
inference_proxy_hostname. Empty by default, so existing plans are unchanged.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@AlejandroEsquivel

Copy link
Copy Markdown
Member Author

@cube /codex the pr we stacked on merged on main so pull and re-target to main

@cubeorgdev

cubeorgdev Bot commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

Updated and pushed 8d5f101. PR #116 targets main, is mergeable, and contains only the original five-file hostname change.

Graph: main (includes merged #111) → #116 (hostname).

Build, tests, formatting, and Clippy passed.

View on dashboard

@AlejandroEsquivel
AlejandroEsquivel marked this pull request as ready for review September 16, 2026 00:55
@AlejandroEsquivel
AlejandroEsquivel requested a review from a team as a code owner September 16, 2026 00:55
@AlejandroEsquivel
AlejandroEsquivel merged commit 5fbb814 into main Sep 16, 2026
20 checks passed
@AlejandroEsquivel
AlejandroEsquivel deleted the feat/tofu-inference-proxy-hostname branch September 16, 2026 05:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

tofu/aws: no hostname or certificate SAN for the inference proxy

1 participant