You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Key Vault的External Secrets中将键名横杠替换为下划线

批量将Azure Key Vault密钥的横杠键名替换为下划线导入Kubernetes

Azure Key Vault不允许密钥名称使用下划线,只能用横杠分隔,但Kubernetes生态中很多应用依赖下划线格式的环境变量键名。手动逐个配置secretKey与remoteRef的映射过于繁琐,以下是两种批量转换的方案:

方案1:使用External Secrets Operator的Transformer功能(推荐)

External Secrets Operator(ESO)v0.7.0及以上版本支持通过transformers对拉取的密钥进行批量字段转换,其中stringReplace转换器可以直接替换键名中的字符。

示例配置

apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
  name: akv-batch-secrets
spec:
  secretStoreRef:
    name: azure-keyvault-store  # 替换为你的SecretStore名称
    kind: SecretStore
  target:
    name: converted-k8s-secret  # 最终生成的K8s Secret名称
  dataFrom:
  - extract:
      key: "*"  # 匹配Azure Key Vault中的所有密钥,可按需修改为前缀匹配(如"DB-*")
      transformers:
      - stringReplace:
          source: "-"
          target: "_"
          field: "key"  # 指定转换密钥的键名字段

说明

  • extract: key: "*"会批量拉取AKV中所有密钥
  • stringReplace转换器自动将每个密钥的键名中的横杠-替换为下划线_
  • 若只需转换特定前缀的密钥,将*改为对应前缀(如DB-*)即可

方案2:脚本批量生成映射配置

如果你的ESO版本不支持Transformer功能,可以通过脚本批量生成手动映射的配置段,避免重复劳动。

示例Shell脚本(依赖Azure CLI)

AKV_NAME="your-key-vault-name"  # 替换为你的AKV名称

# 获取AKV中所有密钥名称
KEY_NAMES=$(az keyvault secret list --vault-name $AKV_NAME --query "[].name" -o tsv)

# 生成External Secrets的data映射段
echo "data:"
for KEY in $KEY_NAMES; do
  SECRET_KEY=$(echo "$KEY" | tr '-' '_')
  echo "  - secretKey: $SECRET_KEY"
  echo "    remoteRef:"
  echo "      key: $KEY"
done

运行脚本后,将输出的data部分复制到你的External Secret YAML中即可。

内容的提问来源于stack exchange,提问作者pluk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 02:27:21