Conversation
The webhook resolves task secrets through config.core.webhook.embeddedSecretManagerConfig, which carried no awsConfig, so there was no supported way to point it at a Secrets Manager outside the cluster's own account. Declare awsConfig.account and awsConfig.region there. Both default to empty, preserving today's behaviour: secrets resolve by bare name in whichever account the webhook's credentials belong to. This is the secret store's identity, not the cluster's, so it is deliberately not defaulted from global.AWS_ACCOUNT_ID / global.AWS_REGION. Defaulting from those would address every existing cluster's secrets by ARN at once. The key goes in the base values.yaml rather than values.aws.yaml because the selfmanaged ArgoCD ApplicationSet supplies only per-environment values files and never loads the chart's provider overlays. Claude-Session: https://claude.ai/code/session_01YM4D6dtkWFVUh33vt4UA3J
Contributor
Current Aviator status
This pull request is currently open (not queued). How to mergeTo merge this PR, comment
See the real-time status of this PR on the
Aviator webapp.
Use the Aviator Chrome Extension
to see the status of your PR within GitHub.
|
This branch has not been deployed
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.
Overview
The webhook's secret injector reads its config from
config.core.webhook.embeddedSecretManagerConfig, which had noawsConfig. There was no supported way to point it at an AWS Secrets Manager outside the cluster's own account.This declares
awsConfig.accountandawsConfig.regionthere, passed through to the webhook by the existingpropeller.webhookConfigMinimalhelper — no template change needed, it already emits the wholeconfig.core.webhooksubtree.Three decisions worth reviewing
Empty defaults, not values derived from the cluster.
account: ""takes the existing bare-name path, andregion: ""leavesWithRegion(""), which is a no-op in the SDK. So this is inert everywhere until an operator sets it.Deliberately not defaulted from
global.AWS_ACCOUNT_ID/global.AWS_REGION. Those are the cluster's own identity; this is the secret store's. They coincide today on every deployment, but they are different facts — defaulting from the globals would address every existing cluster's secrets by ARN at once, which is exactly the behaviour change this must avoid.Base
values.yaml, notvalues.aws.yaml. The selfmanaged ArgoCD ApplicationSet (appset-selfmanaged-dataplane.yamlin unionai/cloud) supplies only the per-environment values files from that repo and never references the chart's provider overlays. A key declared invalues.aws.yamlwould never reach a selfmanaged environment.This is also distinct from
config.proxy.smConfig.awsConfig, which identifies the backend for the operator's drift reporting and is unrelated to what the webhook connects to.Test Plan
make generate-expectedthenmake helm-test— exit 0.The snapshot diff across all 32 dataplane files is exactly the three added lines plus the config checksums they necessarily move:
Rendered against a Fleet-produced values file that sets the key, the deep-merge is intact —
accountandregionland in the leaseworker ConfigMap'swebhook.yamlalongside the chart's ownclusterName,imagePullSecretsandk8sConfig:Rollout
No behaviour change on any existing deployment — both fields default to empty, which is what the webhook does today.
Cross-account reads need more than this key. The store's account also requires a resource policy on each secret, a customer-managed KMS key granting the webhook's role
kms:Decrypt(the AWS-managedaws/secretsmanagerkey cannot be shared across accounts), andsecretsmanager:GetSecretValueon the ARN in that role's identity policy.RELEASE.mdrecords this.Requires the corresponding
unionai/flytechange (unionai/flyte#1010) to be in the image for the key to do anything. Landing this first is safe — the webhook's config accessor is not in strict mode, so an unknown key on an older image is ignored.Related: unionai/cloud emits this from the Fleet AWS templates in a separate PR.
Issue
ref ENG26-1262
🤖 Generated with Claude Code
https://claude.ai/code/session_01YM4D6dtkWFVUh33vt4UA3J