++ add regcred fan-out to namespaces flagged image_pull_secret

This commit is contained in:
Kochetkov S 2026-07-20 10:40:24 +03:00
parent 1d069fa769
commit 417a2bdb77
2 changed files with 35 additions and 1 deletions

View File

@ -26,6 +26,37 @@ locals {
secrets = try(local.secret_values_env.secrets, []) secrets = try(local.secret_values_env.secrets, [])
# image-pull-secret (regcred) fan-out. Single source: vault.common.regcred.dockerconfigjson.
# Rolled as a kubernetes.io/dockerconfigjson secret named `regcred` into every
# namespace flagged `image_pull_secret: true` in infrastructure.yaml. Only created
# when the source is a real docker config (guards against the CHANGE_ME placeholder).
regcred_dockerconfigjson = try(local.secret_values_env.vault.common.regcred.dockerconfigjson, "")
regcred_valid = can(jsondecode(local.regcred_dockerconfigjson))
regcred_namespaces = [
for ns in try(local.infra_config.environments[local.env_name].namespaces, []) :
ns.name if try(ns.image_pull_secret, false)
]
regcred_secrets = local.regcred_valid ? [
for ns in local.regcred_namespaces : {
name = "regcred"
namespace = ns
type = "dockerconfigjson"
registry_url = ""
data = { ".dockerconfigjson" = base64encode(local.regcred_dockerconfigjson) }
depends_on = {}
yc_sa_key_names = {}
custom_keys = {}
constant_keys = {}
random_keys = {}
credential_keys = {}
labels = {}
annotations = {}
ignore_changes = false
sink = "k8s"
vault_path = ""
}
] : []
secrets_input = [ secrets_input = [
for secret in local.secrets : { for secret in local.secrets : {
name = secret.name name = secret.name
@ -105,7 +136,7 @@ terraform {
} }
inputs = { inputs = {
secrets = local.secrets_input secrets = concat(local.secrets_input, local.regcred_secrets)
s3_outputs = { s3_outputs = {
bucket_name = dependency.s3.outputs.bucket_name bucket_name = dependency.s3.outputs.bucket_name

View File

@ -4,5 +4,8 @@ variable "namespaces" {
name = string name = string
labels = optional(map(string), {}) labels = optional(map(string), {})
annotations = optional(map(string), {}) annotations = optional(map(string), {})
# When true, the secrets stack rolls the common regcred (dockerconfigjson)
# into this namespace. Not used by the namespace module itself.
image_pull_secret = optional(bool, false)
})) }))
} }