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