K8s新手系列之为Pod容器设置环境变量

打印 上一主题 下一主题

主题 1677|帖子 1677|积分 5031

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
概述

官网:https://kubernetes.io/zh-cn/docs/tasks/inject-data-application/define-environment-variable-container/
创建 Pod 时,可以为其下的容器设置环境变量。通过配置文件的 env 大概 envFrom 字段来设置环境变量。

  • env:为每一个变量指定一个值,类似key=value的形式
  • envFrom:通过引用 ConfigMap 或 Secret 来设置容器的环境变量。 使用 envFrom 时,引用的 ConfigMap 或 Secret 中的所有键值对都被设置为容器的环境变量
env设置环境变量

简单设置方式

示例:
  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4.   name: env-configmap-pod
  5. spec:
  6.   containers:
  7.     - name: app
  8.       # 打印环境变量
  9.       command: ["/bin/sh", "-c", "printenv"]
  10.       image: busybox:latest
  11.       # 设置环境变量
  12.       env:
  13.       - name: USERNAME
  14.         value: root
  15.       - name: PASSWORD
  16.         value: huangsir
复制代码
通过ConfigMap设置环境变量

学习ConfigMap检察这篇文章:K8s新手系列之ConfigMap资源
创建ConfigMap
  1. kind: ConfigMap
  2. metadata:
  3.   name: special-config
  4. data:
  5.   USER_NAME: huangsir
  6.   APP: haha
  7.   COLOR: red
复制代码
创建Pod引用ConfigMap
  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4.   name: env-configmap-pod
  5. spec:
  6.   containers:
  7.     - name: app
  8.       # 打印环境变量
  9.       command: ["/bin/sh", "-c", "printenv"]
  10.       image: busybox:latest
  11.       # 设置环境变量
  12.       env:
  13.       - name: USERNAME
  14.         # 指定value值从哪里来
  15.         valueFrom:
  16.           # 指定值从configMap引用
  17.           configMapKeyRef:
  18.             # configMap的名称
  19.             name: special-config
  20.             # configMap中Data的Key
  21.             key: USER_NAME
复制代码
通过Secret设置环境变量

学习Secret请检察这篇文章:K8s新手系列之Secret资源
创建secret
  1. apiVersion: v1
  2. kind: Secret
  3. metadata:
  4.   name: db-secret
  5. data:
  6.   # base64编码后的,源内容为root
  7.   username: cm9vdAo=
  8.   password: cm9vdAo=
  9. type: Opaque
复制代码
创建Pod引用Secret
  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4.   name: env-configmap-pod
  5. spec:
  6.   containers:
  7.     - name: app
  8.       # 打印环境变量
  9.       command: ["/bin/sh", "-c", "printenv"]
  10.       image: busybox:latest
  11.       # 设置环境变量
  12.       env:
  13.       - name: USERNAME
  14.         # 指定value值从哪里来
  15.         valueFrom:
  16.           # 指定值从Secret引用
  17.           secretKeyRef:
  18.             # Secret的名称
  19.             name: db-secret
  20.             # Secret中Data的Key
  21.             key: username
复制代码
envFrom设置环境变量

引用ConfigMap

envFrom会将ConfigMap中所有的键值对都设置为环境变量
  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4.   name: env-configmap-pod
  5. spec:
  6.   containers:
  7.     - name: app
  8.       # 打印环境变量
  9.       command: ["/bin/sh", "-c", "printenv"]
  10.       image: busybox:latest
  11.       # 设置环境变量
  12.       envFrom:
  13.         configMapRef:
  14.           # 设置configMap的名称
  15.           name: special-config
复制代码
引用Secret

envFrom会将Secret中所有的键值对都设置为环境变量
  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4.   name: env-configmap-pod
  5. spec:
  6.   containers:
  7.     - name: app
  8.       # 打印环境变量
  9.       command: ["/bin/sh", "-c", "printenv"]
  10.       image: busybox:latest
  11.       # 设置环境变量
  12.       envFrom:
  13.         secretRef:
  14.           # 设置Secret的名称
  15.           name: db-Secret
复制代码
在配置中使用环境变量

在资源文件中配置的环境变量可以在文件中的其他地方使用,例如可用在为 Pod 的容器设置的命令和参数中。
使用$(env-name)来引用设置的环境变量
示例:
  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4.   name: print-greeting
  5. spec:
  6.   containers:
  7.   - name: env-print-demo
  8.     image: bash
  9.     env:
  10.     - name: GREETING
  11.       value: "Warm greetings to"
  12.     - name: HONORIFIC
  13.       value: "The Most Honorable"
  14.     - name: NAME
  15.       value: "Kubernetes"
  16.     command: ["echo"]
  17.     args: ["$(GREETING) $(HONORIFIC) $(NAME)"]
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

锦通

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表