ConfigMap & Secret
ConfigMap
- 数据库连接地址,这种可能根据部署环境变化的
- 或者其他容器配置选项的
- 包括容器更新或者扩容时可以统一配置
Kubernetes 为我们提供了 ConfigMap,可以方便的配置一些变量。
https://kubernetes.io/zh/docs/concepts/configuration/configmap/
apiVersion: v1
kind: ConfigMap
metadata:name: mongo-config
data:mongoHost: mongodb-0.mongodb
# 应用
kubectl apply -f configmap.yaml
# 查看
kubectl get configmap mongo-config -o yaml
Secret
- 一些重要数据,例如密码、TOKEN,我们可以放到 secret 中。
https://kubernetes.io/zh/docs/concepts/configuration/secret/
注意,数据要进行 Base64 编码。
apiVersion: v1
kind: Secret
metadata:name: mongo-secret
# Opaque 用户定义的任意数据,更多类型介绍 https://kubernetes.io/zh/docs/concepts/configuration/secret/#secret-types
type: Opaque
data:# 数据要 base64。https://tools.fun/base64.htmlmongo-username: bW9uZ291c2Vymongo-password: bW9uZ29wYXNz
# 应用
kubectl apply -f secret.yaml
# 查看
kubectl get secret mongo-secret -o yaml
容器使用
apiVersion: apps/v1
kind: StatefulSet
metadata:name: mongodb
spec:replicas: 3selector:matchLabels:app: mongodbtemplate:metadata:labels:app: mongodbspec:containers:- name: mongoimage: mongo:4.4# IfNotPresent 仅本地没有镜像时才远程拉,Always 永远都是从远程拉,Never 永远只用本地镜像,本地没有则报错imagePullPolicy: IfNotPresentenv:- name: MONGO_INITDB_ROOT_USERNAMEvalueFrom:secretKeyRef:name: mongo-secretkey: mongo-username- name: MONGO_INITDB_ROOT_PASSWORDvalueFrom:secretKeyRef:name: mongo-secretkey: mongo-password# Secret 的所有数据定义为容器的环境变量,Secret 中的键名称为 Pod 中的环境变量名称# envFrom:# - secretRef:# name: mongo-secret