ConfigMap
容器中通常存放程序代码、二进制程序,如密码、配置文件等一些变量可以通过ConfigMap来存储,创建
ConfigMap.yaml。
1 2 3 4 5 6
| apiVersion: v1 kind: ConfigMap metadata: name: mongo-config data: mongoHost: mongodb-0.mongodb
|
应用yaml文件。
1 2 3 4
| # 应用 kubectl apply -f configmap.yaml # 查看 kubectl get configmap mongo-config -o yaml
|
Secret
secret.yaml
1 2 3 4 5 6 7 8 9 10
| 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.html mongo-username: bW9uZ291c2Vy mongo-password: bW9uZ29wYXNz
|
应用与查看配置。
1 2 3 4
| # 应用 kubectl apply -f configmap.yaml # 查看 kubectl get configmap mongo-config -o yaml
|
环境变量方式注入容器
把账户信息与秘钥信息写入容器的环境变量中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| apiVersion: apps/v1 kind: StatefulSet metadata: name: mongodb spec: replicas: 3 serviceName: "mongodb" selector: matchLabels: app: mongodb template: metadata: labels: app: mongodb spec: containers: - name: mongo image: mongo:4.4 # IfNotPresent 仅本地没有镜像时才远程拉,Always 永远都是从远程拉,Never 永远只用本地镜像,本地没有则报错 imagePullPolicy: IfNotPresent env: - name: MONGO_INITDB_ROOT_USERNAME valueFrom: secretKeyRef: name: mongo-secret key: mongo-username - name: MONGO_INITDB_ROOT_PASSWORD valueFrom: secretKeyRef: name: mongo-secret key: mongo-password # Secret 的所有数据定义为容器的环境变量,Secret 中的键名称为 Pod 中的环境变量名称 # envFrom: # - secretRef: # name: mongo-secret
|
进入容器内部,通过”set”命令查看当前环境变量,并测试刚注入的变量。
配置文件方式注入容器
通常适用于证书文件的场景。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| apiVersion: v1 kind: Pod metadata: name: mypod spec: containers: - name: mypod image: redis volumeMounts: - name: foo mountPath: "/etc/foo" readOnly: true volumes: - name: foo secret: secretName: mysecret
|