Env
apiVersion: apps/v1
kind: Deployment
metadata:
name: backend
......
spec:
replicas: 1
......
spec:
containers:
- name: flask-backend
image: lyzhang1999/backend:latest
imagePullPolicy: Always
ports:
- containerPort: 5000
env:
- name: DATABASE_URI
value: pg-service
- name: DATABASE_USERNAME
value: postgres
- name: DATABASE_PASSWORD
value: postgres获取env
import os
db_uri = os.environ.get('DATABASE_URI')ConfigMap
示例应用的数据库就使用了 ConfigMap,它将一段初始化表结构的 SQL 以文件的方式挂载到了容器内部的一个特殊的路径上,Postgres 在启动时会自动运行该目录的 SQL 来初始化表结构。
apiVersion: apps/v1
kind: Deployment
metadata:
name: Postgres
......
spec:
......
template:
......
spec:
containers:
- name: Postgres
image: Postgres
volumeMounts:
- name: sqlscript
mountPath: /docker-entrypoint-initdb.d
......
volumes:
- name: sqlscript
configMap:
name: pg-init-script这里请你重点关注两个字段,分别是 volumes 字段和 volumeMounts 字段。volumes 字段代表的含义是以卷的方式使用 pg-init-script ConfigMap,并将卷命名为 sqlscript。volumeMounts 字段和 volumes 一般成对出现,代表的含义是将 sqlscript 卷挂载到容器的 /docker-entrypoint-initdb.d 目录
Secret
apiVersion: v1
kind: Secret
metadata:
name: pg-init-script
namespace: example
type: Opaque
data:
CreateDB.sql: |-
Q1JFQVRFIFRBQkxFIHRleHQgKAogICAgaWQgc2VyaWFsIFBSSU1BUlkgS0VZLAogICAgdGV4dCBWQVJDSEFSICggMTAwICkgVU5JUVVFIE5PVCBOVUxMCik7大致分3种使用方式,官网文档介绍的比较详细
- 1.使用 ConfigMap 数据定义容器环境变量: https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-pod-configmap/#define-container-environment-variables-using-configmap-data
- 2.将 ConfigMap 中的所有键值对配置为容器环境变量: https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-pod-configmap/#configure-all-key-value-pairs-in-a-configmap-as-container-environment-variables
- 3.在 Pod 命令中使用 ConfigMap 定义的环境变量: https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-pod-configmap/#use-configmap-defined-environment-variables-in-pod-commands
使用 kubectl create configmap 创建 ConfigMap https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-pod-configmap/#create-a-configmap-using-kubectl-create-configmap