作为环境变量
实验基础:存在以下两个ConfigMap:cm-literal和cm-mul-env
$ kubectl get cm cm-literal -o yaml
apiVersion: v1
data:
special.how: very
special.type: charm
kind: ConfigMap
metadata:
creationTimestamp: "2023-11-29T07:05:33Z"
name: cm-literal
namespace: default
resourceVersion: "154501"
uid: adbcdc21-28f1-4820-bdb6-82e561b02aa8
$ kubectl get cm cm-mul-env -o yaml
apiVersion: v1
data:
allow.textmode: "true"
color.bad: yellow
color.good: purple
enemies: aliens
enemies.cheat: "true"
enemies.cheat.level: noGoodRotten
how.nice.to.look: fairlyNice
lives: "3"
secret.code.allowed: "true"
secret.code.lives: "30"
secret.code.passphrase: UUDDLRLRBABAS
kind: ConfigMap
metadata:
creationTimestamp: "2023-11-29T07:03:50Z"
name: cm-mul-env
namespace: default
resourceVersion: "154285"
uid: 815a2cf7-c8e9-4b76-b3aa-cfd71db6d0eb
将ConfigMap中的数据用作Pod的变量有两种方式:
.containers.env.valueFrom
.containers.envFrom。
使用valueFrom定义容器环境变量
deploy-valueFrom.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.25.3
env:
- name: TZ
value: Asia/Shanghai
- name: LANG
value: C.UTF-8
- name: ENEMIES
valueFrom:
configMapKeyRef:
key: enemies # ConfigMap 内容的键
name: cm-mul-env # ConfigMap 名称
- name: SPECIAL_LEVEL_KEY
valueFrom:
configMapKeyRef:
key: special.how # ConfigMap 内容的键
name: cm-literal # ConfigMap 名称
resources:
limits:
memory: "128Mi"
cpu: "500m"
ports:
- containerPort: 80
$ kubectl create -f deploy-valueFrom.yaml
deployment.apps/nginx-valuefrom created
$ kubectl get pod -l app=nginx
NAME READY STATUS RESTARTS AGE
nginx-valuefrom-5889856f49-tcxmv 1/1 Running 0 55s
$ kubectl exec -it nginx-valuefrom-5889856f49-tcxmv -- env | grep SPECIAL_LEVEL_KEY
SPECIAL_LEVEL_KEY=very
$ kubectl exec -it nginx-valuefrom-5889856f49-tcxmv -- env | grep ENEMIES
ENEMIES=aliens
使用envFrom定义容器的环境变量
valueFrom通常用于使用ConfigMap的单个Key设置环境变量,但实际使用时更常用的是把ConfigMap里面所有的数据都作为环境变量,此时可以使用envFrom参数:
deploy-envFrom.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-envfrom
spec:
selector:
matchLabels:
app: nginx
func: envfrom
template:
metadata:
labels:
app: nginx
func: envfrom
spec:
containers:
- name: nginx
image: nginx:1.25.3
env:
- name: TZ
value: Asia/Shanghai
- name: LANG
value: C.UTF-8
- name: ENEMIES
valueFrom:
configMapKeyRef:
key: enemies # ConfigMap 内容的键
name: cm-mul-env # ConfigMap 名称
- name: SPECIAL_LEVEL_KEY
valueFrom:
configMapKeyRef:
key: special.how # ConfigMap 内容的键
name: cm-literal # ConfigMap 名称
envFrom:
- configMapRef:
name: cm-literal
prefix: fromCm_
resources:
limits:
memory: "128Mi"
cpu: "500m"
ports:
- containerPort: 80
$ kubectl create -f deploy-envFrom.yaml
deployment.apps/nginx-envfrom created
$ kubectl get pod -l func=envfrom
NAME READY STATUS RESTARTS AGE
nginx-envfrom-6dd6b779d8-4nlh8 1/1 Running 0 12s
$ kubectl exec -it nginx-envfrom-6dd6b779d8-4nlh8 -- env | grep fromCm_
fromCm_special.type=charm
fromCm_special.how=very
$ kubectl exec -it nginx-envfrom-6dd6b779d8-4nlh8 -- env | grep ENEMIES
ENEMIES=aliens
最后更新于
这有帮助吗?