Kubernetes中secret及configmap如何配置管理
admin
2023-03-10 17:42:27
0

配置管理
Pod使用secret两种方式:
• 变量注入 (就是我们在写yaml的时候直接让它以变量的方式注入进去,注入pod中,去引用这个变量,去做相关的处理)
• 挂载(直接从volume的形式挂载到我们指定的目录下)
Configmap
与Secret类似,区别在于ConfigMap保存的是不需要加密配置信息。
应用场景:应用配置

官方文档使用secret:https://kubernetes.io/docs/concepts/configuration/secret/

可以创建secret主要放一些加密数据,不希望别人看到的,比如用户名密码,保存这样的数据
存储好怎么让用户去访问,可以通过ingress指定一下secret名字,一般情况下创建pod业务容器的话,就需要指定这个secret到哪个地方或者以volume的方式挂载的
加密数据并存放Etcd中,让Pod的容器以挂载Volume方式访问。
应用场景:凭据
创建资源的时候 ,  YAML 或 JSON 格式 , 然后创建该对象。在包含两个映射 : stringdata 和数据。该数据字段用于存储任意数据 , 用 Base64 编码。在 stringdata 提供 , 并允许您提供秘密数据为未编码的字符串。
例如 , 两个字符串存储到在yaml的使用 , 将他们转换成 BASE64:
这里的变量转换为编码,提示敏感字符,下面的yaml文件没写上去,抱歉

[root@k8s-master demo]# echo -n 'root' | base64

[root@k8s-master demo]# echo -n 'zhaocheng' | base64
[root@k8s-master cert]# vim secret.yaml
apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
  username: 
  password:
[root@k8s-master cert]# kubectl create -f secret.yaml 
[root@k8s-master demo]# vim secret-pod1.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: nginx
    image: nginx
    env:
      - name: SECRET_USERNAME
        valueFrom:
          secretKeyRef:
            name: mysecret
            key: username
      - name: SECRET_PASSWORD
        valueFrom:
          secretKeyRef:
            name: mysecret
            key: password
[root@k8s-master demo]# kubectl create -f secret-pod1.yaml 
[root@k8s-master demo]# kubectl get pod
NAME                     READY   STATUS    RESTARTS   AGE
busybox                  1/1     Running   35         4d1h
mypod                    1/1     Running   0          2m27s
nginx-5ddcc6cb74-m8dwr   1/1     Running   0          5h57m
nginx-5ddcc6cb74-rs8b6   1/1     Running   0          4h44m
nginx-5ddcc6cb74-zm7cz   1/1     Running   0          4h44m
[root@k8s-master demo]# kubectl exec -it mypod sh
ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
echo $SECRET_USERNAME
root
echo $SECRET_PASSWORD
zhaocheng

应用场景:
一般写Dockerfile的时候,或者docker-compose的时候,能自动的去处理这些变量,也就是这个值被k8s进来解码

通过volume的形式来挂载
一般使用volume来把一些证书比如https的证书通过变量的形式传入挂载到目录中

[root@k8s-master demo]# vim secret-pod2.yaml
apiVersion: v1
kind: Pod
metadata:
  name: mypod2
spec:
  containers:
  - name: nginx
    image: nginx
    volumeMounts:
    - name: foo
      mountPath: "/etc/foo"
      readOnly: true
  volumes:
  - name: foo
    secret:
      secretName: mysecret
[root@k8s-master demo]# kubectl create -f secret-pod2.yaml 
[root@k8s-master demo]# kubectl get pod
NAME                     READY   STATUS    RESTARTS   AGE
mypod                    1/1     Running   0          6m1s
mypod2                   1/1     Running   0          9s
nginx-5ddcc6cb74-lplxl   1/1     Running   0          43m

[root@k8s-master demo]# kubectl exec -it mypod2 bash
root@mypod2:/# ls /etc/foo/
password  username
root@mypod2:/# cat /etc/foo/password 
zhaochengroot@mypod2:/# cat /etc/foo/username
rootroot@mypod2:/#

Configmap
与Secret类似,区别在于ConfigMap保存的是不需要加密配置信息。
应用场景:应用配置
使用configmap来传入变量
官方文档:https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/

[root@k8s-master demo]# vim configmap1.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: myconfig
  namespace: default
data:
  special.level: info
  special.type: hello

---

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
    - name: busybox
      image: busybox
      command: [ "/bin/sh", "-c", "echo $(LEVEL) $(TYPE)" ]
      env:
        - name: LEVEL
          valueFrom:
            configMapKeyRef:
              name: myconfig
              key: special.level
        - name: TYPE
          valueFrom:
            configMapKeyRef:
              name: myconfig
              key: special.type
  restartPolicy: Never
[root@k8s-master demo]# kubectl get pod
NAME                     READY   STATUS      RESTARTS   AGE
mypod                    1/1     Running     0          26m
mypod2                   1/1     Running     0          20m
mypod3                   0/1     Completed   0          41s
nginx-5ddcc6cb74-lplxl   1/1     Running     0          63m
[root@k8s-master demo]# kubectl logs mypod3
info hello

使用redis的一个实例
[root@k8s-master demo]# vim configmap2.yaml 
apiVersion: v1
kind: ConfigMap
metadata:
  name: redis-config
data:
  redis.properties: |
    redis.host=127.0.0.1
    redis.port=6379
    redis.password=123456

---

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
    - name: busybox
      image: busybox
      command: [ "/bin/sh","-c","cat /etc/config/redis.properties" ]
      volumeMounts:
      - name: config-volume
        mountPath: /etc/config
  volumes:
    - name: config-volume
      configMap:
        name: redis-config
  restartPolicy: Never
[root@k8s-master demo]# kubectl create -f configmap2.yaml 

[root@k8s-master demo]# kubectl get pod
NAME                     READY   STATUS      RESTARTS   AGE
mypod                    1/1     Running     0          30m
mypod2                   1/1     Running     0          24m
mypod3                   0/1     Completed   0          4m58s
mypod4                   0/1     Completed   0          15s
nginx-5ddcc6cb74-lplxl   1/1     Running     0          68m
验证这里已经将内容发送到控制台
[root@k8s-master demo]# kubectl logs mypod4
redis.host=127.0.0.1
redis.port=6379
redis.password=123456

相关内容

热门资讯

浙江人形与杰克科技签约2000... 来源:上海证券报·中国证券网 上证报中国证券网讯(记者 王子霖)据浙江人形机器人创新中心有限公司(以...
原创 三... 不出意外的话,今年苹果,高通、三星,联发科,这4家确定会推出2nm的手机芯片。 并且高通、联发科、苹...
Kimi、阶跃再获百亿融资,D... 图片由AI生成 出品 | 搜狐科技 作者 | 梁昌均 编辑 | 杨锦 中国大模型创业公司再次迎来融资...
“我妈有俩老公”?OPPO活该... 5月8日,OPPO官方微博发布了一条关于母亲节的宣发文案,内容因表述问题,引起热议。 相关话题“...
他,扛起又一个任正非时刻! 奔赴一场新的长征。 文 | 华商韬略 张静波 黄仁勋,急了。 2026年4月15日,在一场长达90分...
全球开源创新大会在巴黎举行 聚... 全球开源创新大会活动现场(5月6日摄)。新华社发(主办方供图) 新华社巴黎5月8日电 全球开源创新...
罕见!韩媒:韩国总统、国会议长... 据韩国《朝鲜日报》等韩媒报道,5月8日,韩国政坛出现罕见一幕:韩国总统李在明、韩国国会议长禹元植以及...
4000辆奇瑞商用车散件启运非... 河南日报讯(全媒体记者 龚砚庆 马青竹)5月8日上午,开封综合保税区内的汽车及零部件外贸基地一片繁忙...
“河南材料”中丨南阳新材料“追... 柔性功能薄膜隔热效率比传统产品高30%、紫外线与红外线阻隔率高达99%,产品在汽车玻璃、建筑玻璃和航...
河南超有品 第十个“中国品牌日... 从西安到灵宝寺河山,往返数百公里,仅半年,杨女士便跑了4趟。5月7日,她再次叩开果农司红娥家的大门,...