K8s新手系列之为Pod容器设置环境变量
概述
创建 Pod 时,可以为其下的容器设置环境变量。通过配置文件的 env
或者 envFrom
字段来设置环境变量。
- env:为每一个变量指定一个值,类似key=value的形式
- envFrom:通过引用 ConfigMap 或 Secret 来设置容器的环境变量。 使用 envFrom 时,引用的 ConfigMap 或 Secret 中的所有键值对都被设置为容器的环境变量
env设置环境变量
简单设置方式
示例:
apiVersion: v1
kind: Pod
metadata:
name: env-configmap-pod
spec:
containers:
- name: app
# 打印环境变量
command: ["/bin/sh", "-c", "printenv"]
image: busybox:latest
# 设置环境变量
env:
- name: USERNAME
value: root
- name: PASSWORD
value: huangsir
通过ConfigMap设置环境变量
学习ConfigMap查看这篇文章:K8s新手系列之ConfigMap资源
创建ConfigMap
kind: ConfigMap
metadata:
name: special-config
data:
USER_NAME: huangsir
APP: haha
COLOR: red
创建Pod引用ConfigMap
apiVersion: v1
kind: Pod
metadata:
name: env-configmap-pod
spec:
containers:
- name: app
# 打印环境变量
command: ["/bin/sh", "-c", "printenv"]
image: busybox:latest
# 设置环境变量
env:
- name: USERNAME
# 指定value值从哪里来
valueFrom:
# 指定值从configMap引用
configMapKeyRef:
# configMap的名称
name: special-config
# configMap中Data的Key
key: USER_NAME
通过Secret设置环境变量
学习Secret请查看这篇文章:K8s新手系列之Secret资源
创建secret
apiVersion: v1
kind: Secret
metadata:
name: db-secret
data:
# base64编码后的,源内容为root
username: cm9vdAo=
password: cm9vdAo=
type: Opaque
创建Pod引用Secret
apiVersion: v1
kind: Pod
metadata:
name: env-configmap-pod
spec:
containers:
- name: app
# 打印环境变量
command: ["/bin/sh", "-c", "printenv"]
image: busybox:latest
# 设置环境变量
env:
- name: USERNAME
# 指定value值从哪里来
valueFrom:
# 指定值从Secret引用
secretKeyRef:
# Secret的名称
name: db-secret
# Secret中Data的Key
key: username
envFrom设置环境变量
引用ConfigMap
envFrom会将ConfigMap中所有的键值对都设置为环境变量
apiVersion: v1
kind: Pod
metadata:
name: env-configmap-pod
spec:
containers:
- name: app
# 打印环境变量
command: ["/bin/sh", "-c", "printenv"]
image: busybox:latest
# 设置环境变量
envFrom:
configMapRef:
# 设置configMap的名称
name: special-config
引用Secret
envFrom会将Secret中所有的键值对都设置为环境变量
apiVersion: v1
kind: Pod
metadata:
name: env-configmap-pod
spec:
containers:
- name: app
# 打印环境变量
command: ["/bin/sh", "-c", "printenv"]
image: busybox:latest
# 设置环境变量
envFrom:
secretRef:
# 设置Secret的名称
name: db-Secret
在配置中使用环境变量
在资源文件中配置的环境变量可以在文件中的其他地方使用,例如可用在为 Pod 的容器设置的命令和参数中。
使用$(env-name)
来引用设置的环境变量
示例:
apiVersion: v1
kind: Pod
metadata:
name: print-greeting
spec:
containers:
- name: env-print-demo
image: bash
env:
- name: GREETING
value: "Warm greetings to"
- name: HONORIFIC
value: "The Most Honorable"
- name: NAME
value: "Kubernetes"
command: ["echo"]
args: ["$(GREETING) $(HONORIFIC) $(NAME)"]
本文来自博客园,作者:huangSir-devops,转载请注明原文链接:https://www.cnblogs.com/huangSir-devops/p/18859107,微信Vac666666,欢迎交流