Skip to content

Commit 08c930d

Browse files
committed
Configure Helm identities for renamed deployments
Pass the resolved atelet and router ServiceAccounts to the control plane, expose the controller pod namespace, and configure router Service discovery. Cover canonical and custom Helm releases in manifest tests. Signed-off-by: Eitan Yarmush <eitan.yarmush@solo.io>
1 parent c384d7e commit 08c930d

4 files changed

Lines changed: 36 additions & 1 deletion

File tree

‎charts/substrate/templates/ate-api-server.yaml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ spec:
9090
- "--actor-id-jwt-pool=/run/actor-id-jwt-pool/pool.json"
9191
- "--actor-id-ca-pool=/run/actor-id-ca-pool/pool.json"
9292
- "--egress-gateway-address={{ include "substrate.fullname" (list "atenet-egress" .) }}.{{ .Release.Namespace }}.svc:443"
93+
- '--atelet-service-account={{ include "substrate.fullname" (list "atelet" .) }}'
9394
- "--atelet-client-cred-bundle=/run/podidentity.podcert.ate.dev/credential-bundle.pem"
9495
- "--pod-identity-ca-certs=/run/podidentity.podcert.ate.dev/trust-bundle.pem"
9596
- "--drain-delay=13s"

‎charts/substrate/templates/ate-controller.yaml‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,16 @@ spec:
7878
# "ate-system"). Pass the chart-resolved Service so the controller
7979
# dials the right backend when substrate is installed as a subchart.
8080
- "--ateapi-conn-spec=dns:///{{ include "substrate.fullname" (list "api" .) }}.{{ .Release.Namespace }}.svc:443"
81+
- '--atelet-service-account={{ include "substrate.fullname" (list "atelet" .) }}'
82+
- '--router-service-account={{ include "substrate.fullname" (list "atenet-router" .) }}'
8183
- "--ateapi-ca-file=/run/servicedns-ca/trust-bundle.pem"
8284
- "--ateapi-client-cert=/run/podidentity.podcert.ate.dev/credential-bundle.pem"
83-
{{- with include "substrate.otel.env" . }}
8485
env:
86+
- name: POD_NAMESPACE
87+
valueFrom:
88+
fieldRef:
89+
fieldPath: metadata.namespace
90+
{{- with include "substrate.otel.env" . }}
8591
{{- . | trim | nindent 8 }}
8692
{{- end }}
8793
ports:

‎charts/substrate/templates/atenet-router.yaml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,7 @@ spec:
221221
- "--mode=ingress"
222222
- "--atenet-dataplane=agentgateway"
223223
- "--namespace={{ .Release.Namespace }}"
224+
- '--router-service-name={{ include "substrate.fullname" (list "atenet-router" .) }}'
224225
- "--port-http=8080"
225226
- "--port-extproc=50051"
226227
- "--extproc-address=127.0.0.1"

‎cmd/credential-provider/kubernetes-secrets/manifests_test.go‎

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,33 @@ func TestProviderManifests(t *testing.T) {
7979
} else if err != nil {
8080
t.Fatal(err)
8181
}
82+
if tc.tool == "helm" && doc.Kind == "Deployment" {
83+
for _, container := range doc.Spec.Template.Spec.Containers {
84+
var required []string
85+
switch container.Name {
86+
case "ate-api-server":
87+
required = []string{"--atelet-service-account=" + tc.prefix + "atelet"}
88+
case "ate-controller":
89+
required = []string{
90+
"--atelet-service-account=" + tc.prefix + "atelet",
91+
"--router-service-account=" + tc.prefix + "atenet-router",
92+
}
93+
if !slices.ContainsFunc(container.Env, func(env corev1.EnvVar) bool {
94+
return env.Name == "POD_NAMESPACE" && env.ValueFrom != nil &&
95+
env.ValueFrom.FieldRef != nil && env.ValueFrom.FieldRef.FieldPath == "metadata.namespace"
96+
}) {
97+
t.Error("controller must resolve worker identities from its pod namespace")
98+
}
99+
case "atenet-router":
100+
required = []string{"--router-service-name=" + tc.prefix + "atenet-router"}
101+
}
102+
for _, arg := range required {
103+
if !slices.Contains(container.Args, arg) {
104+
t.Errorf("%s missing %s", container.Name, arg)
105+
}
106+
}
107+
}
108+
}
82109
switch doc.Kind {
83110
case "ServiceAccount":
84111
if doc.Metadata.Name == tc.prefix+"k8s-credential-provider" {

0 commit comments

Comments
 (0)