ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
#### 使用一个 ConfigMap 中的配置信息作为环境变量 使用 key-value 键值对定义一个用作环境变量的 ConfigMap: ~~~bash $ kubectl create configmap config-1 --from-literal=special.how=very configmap/config-1 created ~~~ 定义 Pod YAML 文件时,SPECIAL\_LEVEL\_KEY 环境变量使用在 ConfigMap 中定义的 special.how 配置信息的值,在`/home/shiyanlou`目录下新建`pods`文件夹,并在该文件夹下新建`pod-single-configmap-env-variable.yaml`文件,向该文件中写入如下内容: ~~~yaml apiVersion: v1 kind: Pod metadata: name: dapi-test-pod spec: containers: - name: test-container image: busybox command: ['/bin/sh', '-c', 'env'] # 容器的启动命令是输出环境变量 env: - name: SPECIAL_LEVEL_KEY # 定义环境变量的名称 valueFrom: # 环境变量 SPECIAL_LEVEL_KEY 的取值 configMapKeyRef: name: config-1 # 环境变量的值取自于 config-1 ConfigMap key: special.how # key 为 special.how restartPolicy: Never ~~~ 执行创建 Pod: ~~~bash $ kubectl create -f pods/pod-single-configmap-env-variable.yaml pod/dapi-test-pod created # 查看状态为 Completed,因为启动容器后只查看了环境变量,并且设置为再也不重启,所以容器打印环境变量之后也变为完成状态,并且不会在重启 $ kubectl get pods NAME READY STATUS RESTARTS AGE dapi-test-pod 0/1 Completed 0 18s ~~~ 然后查看日志,检查是否有成功设置环境变量: ~~~bash $ kubectl logs dapi-test-pod|grep SPECIAL_LEVEL_KEY SPECIAL_LEVEL_KEY=very ~~~ #### 使用多个 ConfigMap 中的配置信息作为环境变量 在`/home/shiyanlou/configmap`目录下新建`configmaps.yaml`文件,并写入如下内容: ~~~yaml apiVersion: v1 kind: ConfigMap metadata: name: config-2 namespace: default data: special.how: very --- apiVersion: v1 kind: ConfigMap metadata: name: config-3 namespace: default data: log_level: INFO ~~~ 执行创建: ~~~bash $ kubectl create -f configmap/configmaps.yaml configmap/config-2 created configmap/config-3 created ~~~ 在 Pod YAML 文件中使用前面定义的 ConfigMap 中的配置信息,将下面的内容写入`/home/shiyanlou/pods`目录下的`pod-multiple-configmap-env-variable.yaml`文件中: ~~~yaml apiVersion: v1 kind: Pod metadata: name: dapi-test-pod-2 spec: containers: - name: test-container-2 image: busybox command: ['/bin/sh', '-c', 'env'] env: - name: SPECIAL_LEVEL_KEY valueFrom: configMapKeyRef: name: config-2 key: special.how - name: LOG_LEVEL valueFrom: configMapKeyRef: name: config-3 key: log_level restartPolicy: Never ~~~ 执行创建: ~~~bash $ kubectl create -f pods/pod-multiple-configmap-env-variable.yaml pod/dapi-test-pod-2 created ~~~ 执行命令`kubectl logs dapi-test-pod-2`可以看到打印出的环境变量中有`LOG_LEVEL=INFO`以及`SPECIAL_LEVEL_KEY=very`。 #### 使用 ConfigMap 中的所有配置信息作为环境变量 在`/home/shiyanlou/configmap`文件夹下新建`configmap-multikeys.yaml`文件,并写入如下内容: ~~~yaml apiVersion: v1 kind: ConfigMap metadata: name: config-4 namespace: default data: SPECIAL_LEVEL: very SPECIAL_TYPE: charm ~~~ 执行创建: ~~~bash $ kubectl create -f configmap/configmap-multikeys.yaml configmap/config-4 created ~~~ 使用`envFrom`将 ConfigMap 中的所有配置信息定义为容器的环境变量,ConfigMap 中的 key 会成为 Pod 中的环境变量名。在`/home/shiyanlou/pods`目录下新建`pod-configmap-envFrom.yaml`文件并写入如下内容: ~~~yaml apiVersion: v1 kind: Pod metadata: name: dapi-test-pod-3 spec: containers: - name: test-container-3 image: busybox command: ['/bin/sh', '-c', 'env'] envFrom: - configMapRef: name: config-4 restartPolicy: Never ~~~ 执行创建: ~~~bash $ kubectl create -f pods/pod-configmap-envFrom.yaml pod/dapi-test-pod-3 created ~~~ 执行命令`kubectl logs dapi-test-pod-2`可以看到打印出的环境变量中有`SPECIAL_LEVEL=very`以及`SPECIAL_TYPE=charm`。 #### 在 Pod 命令中引用环境变量 在 Pod YAML 文件的`command`部分可以使用`$(VAR_NAME)`方式引用环境变量。 在`/home/shiyanlou/pods`目录下新建`pod-configmap-env-var-valueFrom.yaml`文件并写入如下内容: ~~~yaml apiVersion: v1 kind: Pod metadata: name: dapi-test-pod-4 spec: containers: - name: test-container-4 image: busybox command: ['/bin/sh', '-c', 'echo $(SPECIAL_LEVEL_KEY) $(SPECIAL_TYPE_KEY)'] env: - name: SPECIAL_LEVEL_KEY valueFrom: configMapKeyRef: name: config-4 key: SPECIAL_LEVEL - name: SPECIAL_TYPE_KEY valueFrom: configMapKeyRef: name: config-4 key: SPECIAL_TYPE restartPolicy: Never ~~~ 执行创建: ~~~bash $ kubectl create -f pods/pod-configmap-env-var-valueFrom.yaml pod/dapi-test-pod-4 created ~~~ 执行命令`kubectl logs dapi-test-pod-4`可以看到输出的环境变量`very`和`charm`。