Repository navigation
feat(chart): extra CAs for the egress gateway's upstream TLS - #101
Open
fiunchinho wants to merge 1 commit into
Open
fiunchinho wants to merge 1 commit into
fiunchinho wants to merge 1 commit into
Conversation
The egress gateway terminates the actors' TLS and dials the upstream itself with the public roots of its agentgateway image, so an endpoint behind a private CA fails every call with UnknownIssuer, whatever the actor's runtime trusts. The route's backendTLS.root would replace the public roots rather than add to them. atenetEgress.upstreamTrust.caBundle renders a PEM bundle as a ConfigMap, mounts it on the egress agentgateway and sets SSL_CERT_DIR next to SSL_CERT_FILE, the image's public bundle; rustls-native-certs then loads both. With a bundle set, the dynamic HTTPS backend leaves out backendTLS.root, because agentgateway reads the native roots only when root is unset. A checksum annotation rolls the gateway on a change. Empty by default, which leaves the rendered manifests unchanged. (cherry picked from commit 175664c) Signed-off-by: Jose Armesto <github@armesto.net>
fiunchinho
added a commit
to giantswarm/substrate
that referenced
this pull request
Oct 26, 2026
egress-gateway-trusts-extra-cas-actors-upstream moves from to-file to open: the issue kagent-dev#100 and the chart PR kagent-dev#101 were filed on 2026-10-26 from a cherry-pick of the prepared commit onto upstream main, with the dynamic backend's backendTLS.root left out when a bundle is set. Signed-off-by: Jose Armesto <github@armesto.net>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #100
Problem
The egress gateway dials the upstream of an
httpsrule with the image's public roots only, so an upstream behind a private CA (for example an in-cluster model gateway) fails withUnknownIssuer. SettingbackendTLS.rootto the private CA replaces the public roots.Change
atenetEgress.upstreamTrust.caBundlerenders a PEM bundle as the ConfigMap<release>-atenet-egress-upstream-trust./run/egress-upstream-trustand setsSSL_CERT_DIRto that path, besideSSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt.backendTLS: {}withoutroot, so agentgateway builds its roots from rustls-native-certs, which loads both locations.checksum/upstream-truston the pod template rolls the gateway when the bundle changes.main.Testing
helm unittest: 44 of 44 tests pass.charts/substrate/tests/atenet_egress_upstream_trust_test.yamlcovers both cases:root: /etc/ssl/certs/ca-certificates.crton the dynamic backend by default, andbackendTLS: {}with no reference to the image bundle in the gateway config when a bundle is set. The second case fails without therootchange.helm lint: 0 charts failed.diff -rof the default render against a render ofmain: no differences.backendTLS: {}, the container hasSSL_CERT_FILEandSSL_CERT_DIR=/run/egress-upstream-trust, and the ConfigMap, volume, mount and checksum annotation are present.The change was prepared with an AI coding agent (cherry-pick, conflict resolution, the
rootchange and the chart tests). I reviewed the diff and the rendered output.