• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
gys001
博客园    首页    新随笔    联系   管理    订阅  订阅

k8s配置存储(ConfigMap、Secret)

配置存储

ConfigMap

ConfigMap是一种比较特殊的存储卷,它的主要作用是用来存储配置信息的。

创建configmap.yaml,内容如下:

apiVersion: v1
kind: ConfigMap
metadata:
  name: configmap
  namespace: dev
data:
  info: |                  #这个|表示下面的参数信息都是info的
    username:admin
    password:123456

接下来,使用此配置文件创建configmap

# 创建configmap
[root@master ~]# kubectl create -f configmap.yaml

# 查看configmap详情
[root@master ~]# kubectl describe cm configmap -n dev

接下来创建一个pod-configmap.yaml,将上面创建的configmap挂载进去

apiVersion: v1
kind: Pod
metadata:
  name: pod-configmap
  namespace: dev
spec:
  containers:
  - name: nginx
    image: nginx:1.17.1
    volumeMounts: # 将configmap挂载到目录
    - name: config
      mountPath: /configmap/config
  volumes: # 引用configmap
  - name: config
    configMap:
      name: configmap      #名字要和上面的相同

创建并查看

# 创建pod
[root@master ~]# kubectl create -f pod-configmap.yaml

# 查看pod
[root@master ~]# kubectl get pod pod-configmap -n dev

#进入容器
[root@master ~]# kubectl exec -it pod-configmap -n dev -- bash
root@pod-configmap:/# ls /configmap/config
root@pod-configmap:/# cat /configmap/config/info

# 可以看到映射已经成功,每个configmap都映射成了一个目录
# key--->文件      value---->文件中的内容
# 此时如果更新configmap的内容, 容器中的值也会动态更新
测试动态更新
#修改密码为666666
[root@master ~]# kubectl edit cm configmap -n dev

再次查看内容(同步数据需要点时间)
[root@master ~]# kubectl exec -it pod-configmap -n dev -- cat /configmap/config/info

注:使用kubectl create configmap 命令可直接生成一个configmap
kubectl create configmap NAME [--from-file=[key=]source] [--from-literal=key1=value1] [--dry-run=server|client|none]

kubectl create configmap nginx-conf --from-file=/var/webconf/nginx.conf

也可使用--dry-run生成yaml文件
也可自己vim创建一个yaml文件,使用:r/配置文件路径(如 :r /var/webconf/ nginx.conf)
将配置文件的内容导入,然后调整格式间距即可

Secret

在kubernetes中,还存在一种和ConfigMap非常类似的对象,称为Secret对象。它主要用于存储敏感信息,例如密码、秘钥、证书等等。

1) 首先使用base64对数据进行编码

注:base64非常容易被破解,防君子而已

[root@master ~]# echo -n 'admin' | base64 #准备username
YWRtaW4=

[root@master ~]# echo -n '123456' | base64 #准备password
MTIzNDU2

2) 接下来编写secret.yaml,并创建Secret

apiVersion: v1
kind: Secret
metadata:
  name: secret
  namespace: dev
type: Opaque
data:
  username: YWRtaW4=
  password: MTIzNDU2

创建并查看

# 创建secret
[root@master ~]# kubectl create -f secret.yaml

# 查看secret详情
[root@master ~]# kubectl describe secret secret -n dev

3) 创建pod-secret.yaml,将上面创建的secret挂载进去:

apiVersion: v1
kind: Pod
metadata:
  name: pod-secret
  namespace: dev
spec:
  containers:
  - name: nginx
    image: nginx:1.17.1
    volumeMounts: # 将secret挂载到目录
    - name: config
      mountPath: /secret/config
  volumes:
  - name: config
    secret:
      secretName: secret

创建并查看

# 创建pod
[root@master ~]# kubectl create -f pod-secret.yaml

# 查看pod
[root@master ~]# kubectl get pod pod-secret -n dev

# 进入容器,查看secret信息,发现已经自动解码了
[root@master ~]# kubectl exec -it pod-secret -n dev -- bash
root@pod-secret:/# ls /secret/config/
root@pod-secret:/# cat /secret/config/password
root@pod-secret:/# cat /secret/config/username

至此,已经实现了利用secret实现了信息的编码。

参考

黑马B站k8s课程https://www.bilibili.com/video/BV1Qv41167ck/
https://gitee.com/yooome/golang/blob/main/k8s%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8B-%E8%B0%83%E6%95%B4%E7%89%88/k8s%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8B.md
https://www.yuque.com/fairy-era/yg511q/xyqxge
posted @ 2022-12-05 15:32  gys001  阅读(245)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3