🔑

k8sのSecret リソースで設定した値を静的な値でoverlayする

2024/09/23に公開

https://kubernetes.io/ja/docs/concepts/configuration/secret/#using-secrets-as-environment-variables

kind: Deployment
metadata:
  name: secret-env-pod
spec:
  ...
    env:
      - name: SECRET_USERNAME
        valueFrom:
          secretKeyRef:
            name: mysecret
            key: username
      - name: SECRET_PASSWORD
        valueFrom:
          secretKeyRef:
            name: mysecret
            key: password

環境変数として使用しているSecretを、別の環境で暗号化しない静的な値としてoverlayするとき、

kind: Deployment
metadata:
  name: secret-env-pod
spec:
  ...
    env:
      - name: SECRET_USERNAME
        value: 'admin'
      - name: SECRET_PASSWORD
        value: 'password'

とやってもエラーになる。

spec...env[0].valueFrom: Invalid value: "": may not be specified when `value` is not empty

以下のようにvalueFromにnullを設定してあげる必要がある。

kind: Deployment
metadata:
  name: secret-env-pod
spec:
  ...
    env:
      - name: SECRET_USERNAME
        value: 'admin'
        valueFrom: null
      - name: SECRET_PASSWORD
        value: 'password'
        valueFrom: null

Discussion