k8s-配置管理
configmapConfigmap 是 k8s 中的资源对象,用于保存非机密性的配置的,数据可以用 key/value键值对的形式保存,也可通过文件的形式保存。通过挂载到容器中使用。多用于配置文件,将 configMap 做为存储卷,或则是将configMap 通过 env 中 configMapKeyRef 注入到容器中。缺点:configmap保存的数据大小不能超过1MiB创建方法:命令创建
·
configmap
Configmap 是 k8s 中的资源对象,用于保存非机密性的配置的,数据可以用 key/value
键值对的形式保存,也可通过文件的形式保存。通过挂载到容器中使用。
多用于配置文件,将 configMap 做为存储卷,或则是将configMap 通过 env 中 configMapKeyRef 注入到容器中。
缺点:configmap保存的数据大小不能超过1MiB
创建方法:
命令创建
# 通过帮助命令查看创建例子
kubectl create configmap --help
# 创建时使用指定文件
kubectl create configmap my-config --from-file=path/to/bar
# 创建指定键值对
kubectl create configmap my-config --from-file=key1=/path/to/bar/file1.txt --from-file=key2=/path/to/bar/file2.txt
示例:
- 创建config文件
- 使用命令创建cm 指定配置文件位置
- 生成后data key为count value为123的cm
也可以通过指定key的名成修改key
资源清单
apiVersion: v1
kind: ConfigMap
metadata:
name: yaml-cm
data:
# | 下是配置文件内容
my.cnf: |
[mysql]
log-bin=123.txt
port: |
80
挂载方法:
环境变量
单独导入
apiVersion: v1
kind: Pod
metadata:
name: pod-cm
spec:
containers:
- name: cm-pod
image: nginx
#定义环境变量 count
env:
- name: count
valueFrom:
configMapKeyRef:
# cm中的键
key: count
# cm名称
name: cm-dome1
使用 envfrom 直接引入configmap
批量导入
apiVersion: v1
kind: Pod
metadata:
name: pod-cm
spec:
containers:
- name: cm-pod
image: nginx
# 指定env来源
envFrom:
- configMapRef:
# 多列表空格增加
name: cm-dome2
文件挂载
资源清单示例
apiVersion: v1
kind: Pod
metadata:
name: pod-cm
spec:
containers:
- name: cm-pod
image: nginx
# 指定挂载点
volumeMounts:
- mountPath: /tmpdir
name: cm-vol
volumes:
- name: cm-vol
# 选择挂载的cm
configMap:
name: yaml-cm
configmap支持热更新
使用edit编辑configmap等待10秒后volumes挂载的pod中的文件也会更新,但挂载成环境变量的值不会更新
secret
创建
用来存放一些敏感数据,如密码、私钥等。secret也可以通过环境变量或volume方式使用
secret 可选参数有三种:
generic: 通用类型,通常用于存储密码数据。
tls:此类型仅用于存储私钥和证书。
docker-registry: 若要保存 docker 仓库的认证信息的话,就必须使用此种类型来创建。
Secret 类型:
Service Account:用于被 serviceaccount 引用。serviceaccout 创建时 Kubernetes 会默认创建对应的secret。Pod 如果使用了 serviceaccount,对应的 secret 会自动挂载到 Pod 的/run/secrets/kubernetes.io/serviceaccount 目录中。
Opaque:base64 编码格式的 Secret,用来存储密码、秘钥等。可以通过 base64 --
decode 解码获得原始数据,因此安全性弱
kubernetes.io/dockerconfigjson:用来存储私有 docker registry 的认证信息。
创建同congfigmap类似,增加了秘钥类型。
创建示例:
资源清单示例:
base64加密: echo -n 'admin' | base64
base64解密: echo YWRtaW4= | base64 -d
apiVersion: v1
kind: Secret
metadata:
name: secret-1
type: Opaque
data:
passwd: MTIzLmNvbQ==
user: YWRtaW4=
挂载
env
apiVersion: v1
kind: Pod
metadata:
name: pod-cm
spec:
containers:
- name: cm-pod
image: nginx
# 挂载secret-1中所有key和值,单独挂载参照configmap配置
envFrom:
- secretRef:
name: secret-1
volume
apiVersion: v1
kind: Pod
metadata:
name: pod-cm
spec:
containers:
- name: cm-pod
image: nginx
volumeMounts:
- mountPath: /tmpdir
name: cm-vol
volumes:
- name: cm-vol
# 选择挂载资源
secret:
secretName: secret-1
更多推荐
已为社区贡献17条内容
所有评论(0)