メモ置き場

環境変数の指定まとめメモ

apiVersion: v1
kind: Pod
metadata:
  name: env-sample
  annotations:
    annotation_key: annotation_value
spec:
  containers:
  - name: debian
    image: debian:stable-slim
    command: ["/bin/bash", "-c", "env | grep '^ENV_'"]
    env:

    # name, valueを直接指定
    #   `$(変数名)`の形式で他の変数を参照できる
    - name: ENV_VAR_NAME
      value: VAR_VALUE
    - name: ENV_VAR_NAME2
      value: $(ENV_VAR_NAME)2

    # ConfigMapからの読み込み
    - name: ENV_CONFIG_MAP_KEY_REF
      valueFrom:
        configMapKeyRef:
          name: sample-config
          key: config_map_key

    # Secretからの読み込み
    - name: ENV_SECRET_KEY_REF
      valueFrom:
        secretKeyRef:
          name: sample-secret
          key: secret_key

    # Podのfieldからの読み込み
    #   参照可能なフィールドは下記
    #   - metadata.{name, namespace, labels['key'], annotations['key']}
    #   - spec.{nodeName, serviceAccountName}
    #   - status.{hostIP, podIP, podIPs}
    - name: ENV_FIELD_REF
      valueFrom:
        fieldRef:
          fieldPath: "metadata.annotations['annotation_key']"

    # Podのresourcesフィールドからの読み込み
    #   参照可能なフィールドは下記
    #   - limits.{cpu, memory, ephemeral-storage}
    #   - requests.{cpu, memory, ephemeral-storage}
    - name: ENV_RESOURCE_FIELD_REF
      valueFrom:
        resourceFieldRef:
          resource: "limits.cpu"
          containerName: debian

    # ConfigMap, Secretからの一括読み込み
    envFrom:
    - configMapRef:
        name: sample-config
      prefix: ENV_FROM_
    - secretRef:
        name: sample-secret
      prefix: ENV_FROM_
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: sample-config
data:
  config_map_key : config_map_value
---
apiVersion: v1
kind: Secret
metadata:
  name: sample-secret
data:
  secret_key : c2VjcmV0X3ZhbHVl # secret_value
$ kubectl apply -f env-sample.yaml
pod/env-sample created
configmap/sample-config created
secret/sample-secret created

$ kubectl logs env-sample
ENV_RESOURCE_FIELD_REF=2
ENV_CONFIG_MAP_KEY_REF=config_map_value
ENV_FROM_secret_key=secret_value
ENV_FIELD_REF=annotation_value
ENV_VAR_NAME2=VAR_VALUE2
ENV_FROM_config_map_key=config_map_value
ENV_VAR_NAME=VAR_VALUE
ENV_SECRET_KEY_REF=secret_value

参考