• kubernetes资源对象介绍及常用命令(五)-(ConfigMap&Secret)


    一、ConfitMap

    配置集,抽取应用配置。

    ConfigMap保存在kubernetes的etcd中。

    ConfigMap可以将文件直接挂载到Pod内,区别于上篇文章中的PV&PVC挂载目录

    创建ConfigMap

    • 命令行方式
    [root@k8s-master ~]# vi redis.conf
    [root@k8s-master ~]# cat redis.conf 
    appendonly yes
    [root@k8s-master ~]# kubectl create cm redis-conf --from-file=redis.conf
    configmap/redis.conf created
    [root@k8s-master ~]#
    • 1

    首先有redis.conf文件,然后将文件做成ConfigMap。

    • yaml方式,redis-conf.yml
    apiVersion: v1
    data:
      redis.conf: |
        appendonly yes
    kind: ConfigMap
    metadata:
      name: redis-conf
      namespace: default
    • 1

    data是所有真正的数据,key:默认是文件名,value:配置文件的内容

    [root@k8s-master ~]# kubectl apply -f redis-conf.yml 
    configmap/redis-conf created
    [root@k8s-master ~]#
    • 1

    查看ConfigMap

    [root@k8s-master ~]# kubectl get cm
    NAME               DATA   AGE
    kube-root-ca.crt   1      2d1h
    redis-conf         1      53s
    [root@k8s-master ~]# 
    • 1

    扩展: 查看redis-conf的yaml文件

    kubectl get cm redis-conf -oyaml
    • 1

    创建pod

    redis.yml

    apiVersion: v1
    kind: Pod
    metadata:
      name: redis
    spec:
      containers:
      - name: redis
        image: redis
        command:
          - redis-server
          - "/redis-master/redis.conf"  #指的是redis容器内部的位置
        ports:
        - containerPort: 6379
        volumeMounts:
        - mountPath: /data
          name: data
        - mountPath: /redis-master
          name: config
      volumes:
        - name: data
          emptyDir: {}
        - name: config
          configMap:
            name: redis-conf
            items:
            - key: redis.conf
              path: redis.conf
    • 1

    说明:一个ConfigMap文件可能有多个配置,items会遍历每个配置,key中定义这里要取哪个配置,path表示将取出来的配置文件内容放到容器内的哪个文件中。

    关系图参考如下:

    alt
    [root@k8s-master ~]# kubectl apply -f redis.yml 
    pod/redis created 
    [root@k8s-master ~]#
    • 1
    # 进入到容器内部验证
    [root@k8s-master ~]# kubectl exec -it redis -c redis -- /bin/bash
    root@redis:/data# cd /redis-master/
    root@redis:/redis-master# ls
    redis.conf
    root@redis:/redis-master# cat redis.conf 
    appendonly yes
    root@redis:/redis-master#
    • 1

    修改ConfigMap

    [root@k8s-master ~]# kubectl edit cm redis-conf
    configmap/redis-conf edited
    [root@k8s-master ~]#
    • 1

    添加了一行配置requirepass 123456

    [root@k8s-master ~]# kubectl exec -it redis -c redis -- /bin/bash
    root@redis:/data# cd /redis-master/
    root@redis:/redis-master# ls
    redis.conf
    root@redis:/redis-master# cat redis.conf 
    appendonly yes
    requirepass 123456
    root@redis:/redis-master# 
    • 1

    ConfigMap被自动更新了。

    重点说明:这里的自动更新只是容器内部的文件跟随ConfigMap的改变而改变,但是并不一定真正生效,主要看应用有没有热部署能力,没有热部署能力的应用需要重启才能生效。

    删除ConfigMap

    kubectl delete cm redis-conf
    • 1

    二、Secret

    Secret保存在kubernetes的etcd中。

    Secret对象类型用来保存敏感信息,例如密码、OAuth令牌和SSH密钥。将这些信息放在secret中比放在Pod的定义或者容器镜像中来说更加安全和灵活。

    创建Secret

    # 命令格式
    kubectl create secret docker-registry jiangnan \
      --docker-server=<你的镜像仓库服务器> \
      --docker-username=<你的用户名> \
      --docker-password=<你的密码> \
      --docker-email=<你的邮箱地址>
    • 1

    查看Secret

    [root@k8s-master ~]# kubectl get secret
    NAME                  TYPE                                  DATA   AGE
    default-token-ssmvn   kubernetes.io/service-account-token   3      2d2h
    jiangnan              kubernetes.io/dockerconfigjson        1      2m6s
    [root@k8s-master ~]# 
    • 1

    删除Secret

    [root@k8s-master ~]# kubectl delete secret jiangnan
    secret "jiangnan" deleted
    [root@k8s-master ~]#
    • 1

    本文由 mdnice 多平台发布

  • 相关阅读:
    Rust 基础(二)
    创建型设计模式 原型模式 建造者模式 创建者模式对比
    2.springboot代理调用
    自动化工具Selenium IDE基本使用——脚本编辑
    空间转录组分析之细胞Niche(python)版本
    贴片电阻具有哪些特性?
    Jetpack Compose(7)——触摸反馈
    Instagram与独立站的完美结合
    目标检测算法——收藏|小目标检测的定义(一)
    看明白Java多线程:CountDownLatch和CyclicBarrier
  • 原文地址:https://blog.csdn.net/weixin_45842494/article/details/125610143