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
参考