1、ConfigMap

  • ConfigMap 功能在 Kubernetes1.2 版本中引入,许多应用程序会从配置文件、命令行参数或环境变量中读取配置信息。ConfigMap API 给我们提供了向容器中注入配置信息的机制,ConfigMap 可以被用来保存单个属性,也可以用来保存整个配置文件或者 JSON 二进制大对象
  • 相当于一个配置文件的注册中心,将数据保存在etcd中,让Pod以变量和volume挂载
  • 应用场景
    • 比如好几个Pod共用一个配置文件

1.1、目录创建

  • —from-file 指定在目录下的所有文件都会被用在 ConfigMap 里面创建一个键值对,键的名字就是文件名,值就是文件的内容 (—from-file 指定目录)

    1. # 创建game.properties 和 ui.properties 文件
    2. [root@k8smaster configmap]# cat properties/game.properties
    3. enemies=aliens
    4. lives=3
    5. enemies.cheat=true
    6. enemies.cheat.level=noGoodRotten
    7. secret.code.passphrase=UUDDLRLRBABAS
    8. secret.code.allowed=true
    9. secret.code.lives=30
    10. [root@k8smaster configmap]# cat properties/ui.properties
    11. color.good=purple
    12. color.bad=yellow
    13. allow.textmode=true
    14. how.nice.to.look=fairlyNice
    15. # 使用命令创建 并且查看 DATA 表示键的数量
    16. [root@k8smaster configmap]# kubectl create configmap game-config --from-file=/root/configmap/properties
    17. configmap/game-config created
    18. [root@k8smaster configmap]# kubectl get configmap
    19. NAME DATA AGE
    20. game-config 2 11s
    21. # 查看详细信息
    22. [root@k8smaster configmap]# kubectl get configmap game-config -o yaml
    23. apiVersion: v1
    24. data:
    25. game.properties: |
    26. enemies=aliens
    27. lives=3
    28. enemies.cheat=true
    29. enemies.cheat.level=noGoodRotten
    30. secret.code.passphrase=UUDDLRLRBABAS
    31. secret.code.allowed=true
    32. secret.code.lives=30
    33. ui.properties: |
    34. color.good=purple
    35. color.bad=yellow
    36. allow.textmode=true
    37. how.nice.to.look=fairlyNice
    38. kind: ConfigMap
    39. metadata:
    40. creationTimestamp: "2020-12-17T03:31:25Z"
    41. managedFields:
    42. - apiVersion: v1
    43. fieldsType: FieldsV1
    44. fieldsV1:
    45. f:data:
    46. .: {}
    47. f:game.properties: {}
    48. f:ui.properties: {}
    49. manager: kubectl
    50. operation: Update
    51. time: "2020-12-17T03:31:25Z"
    52. name: game-config
    53. namespace: default
    54. resourceVersion: "1357422"
    55. selfLink: /api/v1/namespaces/default/configmaps/game-config
    56. uid: 2085e855-4bf9-4cdb-9ee8-30f1385ae2c5

1.2、文件创建

  • 只要指定为一个文件就可以从单个文件中创建 ConfigMap

  • —from-file 这个参数可以使用多次,你可以使用两次分别指定上个实例中的那两个配置文件,效果就跟指定整个目录是一样的 (—from-file 指定文件)

    1. # 创建configmap 并查看
    2. [root@k8smaster configmap]# kubectl create configmap game-config1 --from-file=/root/configmap/properties/ui.properties
    3. configmap/game-config1 created
    4. [root@k8smaster configmap]# kubectl get configmap game-config1
    5. NAME DATA AGE
    6. game-config1 1 22s
    7. # 查看详细信息 和目录创建效果一样
    8. [root@k8smaster configmap]# kubectl get configmap game-config1 -o yaml
    9. apiVersion: v1
    10. data:
    11. ui.properties: |
    12. color.good=purple
    13. color.bad=yellow
    14. allow.textmode=true
    15. how.nice.to.look=fairlyNice
    16. kind: ConfigMap
    17. metadata:
    18. creationTimestamp: "2020-12-17T03:37:30Z"
    19. managedFields:
    20. - apiVersion: v1
    21. fieldsType: FieldsV1
    22. fieldsV1:
    23. f:data:
    24. .: {}
    25. f:ui.properties: {}
    26. manager: kubectl
    27. operation: Update
    28. time: "2020-12-17T03:37:30Z"
    29. name: game-config1
    30. namespace: default
    31. resourceVersion: "1358296"
    32. selfLink: /api/v1/namespaces/default/configmaps/game-config1
    33. uid: 46e88eb8-1377-4710-abf6-a1d92273d5bf
    34. [root@k8smaster configmap]# kubectl describe configmap game-config1
    35. Name: game-config1
    36. Namespace: default
    37. Labels: <none>
    38. Annotations: <none>
    39. Data
    40. ====
    41. ui.properties:
    42. ----
    43. color.good=purple
    44. color.bad=yellow
    45. allow.textmode=true
    46. how.nice.to.look=fairlyNice

1.3、字面值创建

  • 使用文字值创建,利用 —from-literal 参数传递配置信息,该参数可以使用多次

    1. # 创建configmap并查看
    2. [root@k8smaster configmap]# kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=charm
    3. configmap/special-config created
    4. [root@k8smaster configmap]# kubectl describe configmap special-config
    5. Name: special-config
    6. Namespace: default
    7. Labels: <none>
    8. Annotations: <none>
    9. Data
    10. ====
    11. special.how:
    12. ----
    13. very
    14. special.type:
    15. ----
    16. charm
    17. Events: <none>
    18. # 查看详细信息 用cm也可以
    19. [root@k8smaster configmap]# kubectl get cm special-config -o yaml
    20. apiVersion: v1
    21. data:
    22. special.how: very
    23. special.type: charm
    24. kind: ConfigMap
    25. metadata:
    26. creationTimestamp: "2020-12-17T03:43:34Z"
    27. managedFields:
    28. - apiVersion: v1
    29. fieldsType: FieldsV1
    30. fieldsV1:
    31. f:data:
    32. .: {}
    33. f:special.how: {}
    34. f:special.type: {}
    35. manager: kubectl
    36. operation: Update
    37. time: "2020-12-17T03:43:34Z"
    38. name: special-config
    39. namespace: default
    40. resourceVersion: "1359169"
    41. selfLink: /api/v1/namespaces/default/configmaps/special-config
    42. uid: 96b10ac7-964d-4c49-8dec-9dfd1697be72

1.4、Pod中使用

  • 使用 ConfigMap 来替代环境变量

    • 资源清单示例

      • 如果创建ConfigMap是对应的name已经存在,则会更新其中的键值对,不会删除或创建失败

      • 如果使用不存在的configmap 会出现失败等错误

        1. apiVersion: v1
        2. kind: ConfigMap
        3. metadata:
        4. name: special-config
        5. namespace: default
        6. # ConfigMap 中的键值对
        7. data:
        8. special.how: very
        9. special.type: charm
        1. apiVersion: v1
        2. kind: ConfigMap
        3. metadata:
        4. name: log-config
        5. namespace: default
        6. # ConfigMap 中的键值对
        7. data:
        8. log_level: INFO
        1. apiVersion: v1
        2. kind: Pod
        3. metadata:
        4. name: env-test-pod
        5. spec:
        6. containers:
        7. - name: test-container
        8. image: nginx
        9. # 打出环境变量
        10. command: [ "/bin/sh", "-c", "env" ]
        11. # 设置容器的环境变量 多个
        12. env:
        13. # 环境变量名称为 SPECIAL_LEVEL_KEY
        14. - name: SPECIAL_LEVEL_KEY
        15. # 对应的值从configmap中取 configmap的名称为special-config 取得是key为special.how的值 做为 环境变量的值
        16. valueFrom:
        17. configMapKeyRef:
        18. name: special-config
        19. key: special.how
        20. - name: SPECIAL_TYPE_KEY
        21. valueFrom:
        22. configMapKeyRef:
        23. name: special-config
        24. key: special.type
        25. - name: UI_PROPERTIES
        26. valueFrom:
        27. configMapKeyRef:
        28. name: game-config
        29. key: ui.properties
        30. # 将configmap所有的键值对作为 环境变量 key为名称 value为值
        31. envFrom:
        32. - configMapRef:
        33. name: log-config
        34. restartPolicy: Never
        1. # 创建Pod 并查看日志
        2. [root@k8smaster configmap]# kubectl apply -f env-test-pod.yaml
        3. pod/env-test-pod created
        4. [root@k8smaster configmap]# kubectl get pod
        5. NAME READY STATUS RESTARTS AGE
        6. env-test-pod 0/1 Completed 0 54s
        7. # 查看日志后发现输出了我们设置的环境变量
        8. [root@k8smaster configmap]# kubectl logs env-test-pod
        9. SPECIAL_TYPE_KEY=charm
        10. UI_PROPERTIES=color.good=purple
        11. color.bad=yellow
        12. allow.textmode=true
        13. how.nice.to.look=fairlyNice
        14. SPECIAL_LEVEL_KEY=very
        15. log_level=INFO
  • 用 ConfigMap 设置命令行参数

    • 资源清单示例

        1. apiVersion: v1
        2. kind: Pod
        3. metadata:
        4. name: linecommand-test-pod
        5. spec:
        6. containers:
        7. - name: test-container
        8. image: nginx
        9. # 在命令参数中 使用环境变量 用$(环境变量名)
        10. command: [ "/bin/sh", "-c", "echo $(SPECIAL_LEVEL_KEY) $(SPECIAL_TYPE_KEY)" ]
        11. env:
        12. - name: SPECIAL_LEVEL_KEY
        13. valueFrom:
        14. configMapKeyRef:
        15. name: special-config
        16. key: special.how
        17. - name: SPECIAL_TYPE_KEY
        18. valueFrom:
        19. configMapKeyRef:
        20. name: special-config
        21. key: special.type
        22. restartPolicy: Never
        1. # 创建 Pod 并查看
        2. [root@k8smaster configmap]# kubectl apply -f linecommand-test-pod.yaml
        3. pod/linecommand-test-pod created
        4. [root@k8smaster configmap]# vim linecommand-test-pod.yaml
        5. [root@k8smaster configmap]# kubectl get pod
        6. NAME READY STATUS RESTARTS AGE
        7. linecommand-test-pod 0/1 Completed 0 65s
        8. # 创建日志 发现输出了 环境变量
        9. [root@k8smaster configmap]# kubectl logs linecommand-test-pod
        10. very charm
  • 通过数据卷插件使用ConfigMap

    • 在数据卷里面使用这个 ConfigMap,有不同的选项。最基本的就是将文件填入数据卷,在这个文件中,键就是文件名,键值就是文件内容

    • 资源清单示例

        1. apiVersion: v1
        2. kind: Pod
        3. metadata:
        4. name: volume-test-pod
        5. spec:
        6. containers:
        7. - name: test-container
        8. image: nginx
        9. command: [ "/bin/sh", "-c", "cat /etc/config/special.how" ]
        10. # 容器挂载的数据卷
        11. volumeMounts:
        12. # 数据卷的名称 在Pod声明的数据卷中选择
        13. - name: config-volume
        14. # 挂载到容器内部的路径
        15. mountPath: /etc/config
        16. # Pod的数据卷
        17. volumes:
        18. # 数据卷的名称
        19. - name: config-volume
        20. # 数据卷挂载的地方 此处是来源configMap 名称是special-config
        21. # 也就是说哪个容器使用的数据卷 会在容器挂载的路径下生成多个文件(取决于configmap中key的数量) key为文件名,value为文件内容
        22. configMap:
        23. name: special-config
        24. restartPolicy: Never
        1. # 创建Pod并查看
        2. [root@k8smaster configmap]# kubectl apply -f volume-test-pod.yaml
        3. pod/vloume-test-pod created
        4. [root@k8smaster configmap]# kubectl get pod
        5. volume-test-pod 0/1 Completed 0 24s
        6. # 查看日志 输出了文件内容
        7. [root@k8smaster configmap]# kubectl logs vloume-test-pod
        8. very

1.5、ConfigMap热更新

  • 更新 ConfigMap 后

    • 使用该 ConfigMap 挂载的 Env 不会同步更新

    • 使用该 ConfigMap 挂载的 Volume 中的数据需要一段时间(实测大概10秒)才能同步更新 (这样就可以实时修改配置文件,比如nginx的)

    • 虽然配置文件可以热更新,但是能不能起作用还要看具体情况,比如nginx,启动之后,就不会再去看配置文件了,我们需要手动重启nginx,来达到重新读取配置文件的目的,如果有的服务可以一直监测配置文件,我们则不用手动处理(这种情况很少)

    • 更新 ConfigMap 目前并不会触发相关 Pod 的滚动更新,可以通过修改 pod annotations 的方式强制触发滚动更新

        1. $ kubectl patch deployment hot-update-test --patch '{"spec": {"template": {"metadata": {"annotations":{"version/config": "20201010" }}}}}'
      • 这个例子里我们在 .spec.template.metadata.annotations 中添加 version/config ,每次通过修改version/config 来触发滚动更新

  • 资源清单示例

      1. apiVersion: apps/v1
      2. kind: Deployment
      3. metadata:
      4. name: hot-update-test
      5. spec:
      6. replicas: 1
      7. selector:
      8. matchLabels:
      9. app: nginx
      10. template:
      11. metadata:
      12. labels:
      13. app: nginx
      14. spec:
      15. containers:
      16. - name: my-nginx
      17. image: nginx
      18. ports:
      19. - containerPort: 80
      20. # 容器使用Pod的容器卷 并挂载在自己内部
      21. volumeMounts:
      22. - name: config-volume
      23. mountPath: /etc/config
      24. # 声明Pod的容器卷
      25. volumes:
      26. - name: config-volume
      27. configMap:
      28. name: log-config
      1. # 创建Pod 并查看挂载目录下的文件 和文件内容
      2. [root@k8smaster configmap]# kubectl apply -f hot-update-test.yaml
      3. deployment.apps/hot-update-test created
      4. [root@k8smaster configmap]# kubectl get pod
      5. NAME READY STATUS RESTARTS AGE
      6. hot-update-test-6fd96995b6-jfw2w 1/1 Running 0 100s
      7. # 查看挂载目录下的文件 和文件内容
      8. [root@k8smaster configmap]# kubectl exec -it hot-update-test-6fd96995b6-jfw2w -- ls /etc/config
      9. log_level
      10. [root@k8smaster configmap]# kubectl exec -it hot-update-test-6fd96995b6-jfw2w -- cat /etc/config/log_level
      11. INFO
    • 修改 ConfigMap(log-config)中的内容 (将INFO改成DEBUD)

        1. [root@k8smaster configmap]# kubectl edit configmap log-config
        2. configmap/log-config edited
        3. [root@k8smaster configmap]# kubectl describe configmap log-config
        4. Name: log-config
        5. Namespace: default
        6. Labels: <none>
        7. Annotations:
        8. Data
        9. ====
        10. log_level:
        11. ----
        12. DEBUG
        13. Events: <none>
        1. # 查看log_level 文件内容发生了改变
        2. [root@k8smaster configmap]# kubectl exec -it hot-update-test-6fd96995b6-jfw2w -- cat /etc/config/log_level
        3. DEBUG

2、Secret

  • ConfigMap将数据以明文的方式存放,不太安全,Secret可以用Base64编码存放,比较安全
  • Secret 解决了密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者 Pod Spec中。Secret 可以以 Volume 或者环境变量的方式使用
  • Secret 有三种类型
    • Service Account :用来访问Kubernetes API,由Kubernetes自动创建,并且会自动挂载到Pod的/run/secrets/kubernetes.io/serviceaccount目录中,比如coredns、kube-proxy可以访问(不是什么都可以访问Kubernetes API)
    • Opaque :base64编码格式的Secret,用来存储密码、密钥等
    • kubernetes.io/dockerconfigjson :用来存储私有 docker registry 的认证信息

2.1、Service Account

    1. # 查找系统的Pod
    2. [root@k8smaster secret]# kubectl get pod -n kube-system
    3. NAME READY STATUS RESTARTS AGE
    4. coredns-7ff77c879f-494fb 1/1 Running 2 46h
    5. coredns-7ff77c879f-tvgrz 1/1 Running 2 46h
    6. etcd-k8smaster 1/1 Running 3 6d19h
    7. kube-apiserver-k8smaster 1/1 Running 3 6d19h
    8. kube-controller-manager-k8smaster 1/1 Running 16 6d19h
    9. kube-flannel-ds-amd64-hflj8 1/1 Running 4 6d6h
    10. kube-flannel-ds-amd64-s9xhk 1/1 Running 3 6d6h
    11. kube-flannel-ds-amd64-wp7mp 1/1 Running 4 6d6h
    12. kube-proxy-5l8kb 1/1 Running 2 47h
    13. kube-proxy-6n8vp 1/1 Running 2 47h
    14. kube-proxy-lgcxp 1/1 Running 2 47h
    15. kube-scheduler-k8smaster 1/1 Running 17 6d19h
    16. # 查看 kube-proxy/run/secrets/kubernetes.io/serviceaccount 下的文件
    17. # ca.crt 是https的证书信息 namespace 是命名空间 token 是访问时携带的token
    18. [root@k8smaster secret]# kubectl exec -it -n kube-system kube-proxy-5l8kb -- ls /run/secrets/kubernetes.io/serviceaccount
    19. ca.crt namespace token

2.2、Opaque

  • Opaque 类型的数据是一个 map 类型,要求 value 是 base64 编码格式

      1. [root@k8smaster secret]# echo admin | base64
      2. YWRtaW4K
      3. [root@k8smaster secret]# echo 123456 | base64
      4. MTIzNDU2Cg==
      5. # 解码
      6. [root@k8smaster secret]# echo YWRtaW4K | base64 -d
      7. admin
  • 资源清单示例

      1. apiVersion: v1
      2. kind: Secret
      3. metadata:
      4. name: mysecret
      5. type: Opaque
      6. data:
      7. username: YWRtaW4=
      8. password: MTIzNDU2Cg==
      1. # 创建 secret 并查看
      2. [root@k8smaster secret]# kubectl apply -f secret-test.yaml
      3. secret/mysecret created
      4. [root@k8smaster secret]# kubectl get secret
      5. NAME TYPE DATA AGE
      6. default-token-99w8n kubernetes.io/service-account-token 3 6d19h
      7. mysecret Opaque 2 8s
  • 将 Secret 挂载到 Volume 中

    • Secret中的键值对会以文件的方式存在在容器挂载的目录下 key为文件名 value为文件值(自动解码)

    • 资源清单示例

        1. apiVersion: v1
        2. kind: Pod
        3. metadata:
        4. name: opaque-test
        5. labels:
        6. name: opaque-test
        7. spec:
        8. volumes:
        9. - name: secrets
        10. # 使用secret secret的名称是mysecret
        11. secret:
        12. secretName: mysecret
        13. containers:
        14. - image: nginx
        15. name: opaque-nginx
        16. volumeMounts:
        17. - name: secrets
        18. mountPath: /etc/opaque
        19. # 只读
        20. readOnly: true
        1. # 创建Pod
        2. [root@k8smaster secret]# kubectl apply -f opaque-test.yaml
        3. pod/opaque-test created
        4. [root@k8smaster secret]# kubectl get pod
        5. NAME READY STATUS RESTARTS AGE
        6. hot-update-test-6fd96995b6-jfw2w 1/1 Running 0 60m
        7. opaque-test 1/1 Running 0 51s
        8. # 查看挂载目录下的文件
        9. [root@k8smaster secret]# kubectl exec -it opaque-test -- ls /etc/opaque
        10. password username
        11. # 查看挂载目录下的文件内容 自动解码
        12. [root@k8smaster secret]# kubectl exec -it opaque-test -- cat /etc/opaque/username
        13. admin
  • 将 Secret 导出到环境变量中

    • 资源清单示例

        1. apiVersion: apps/v1
        2. kind: Deployment
        3. metadata:
        4. name: opaque-env
        5. spec:
        6. replicas: 2
        7. # 这个版本的Deployment不能省去selector
        8. selector:
        9. matchLabels:
        10. app: opaque-deployment
        11. template:
        12. metadata:
        13. labels:
        14. app: opaque-deployment
        15. spec:
        16. containers:
        17. - name: pod-1
        18. image: nginx
        19. ports:
        20. - containerPort: 80
        21. # 设置环境变量
        22. env:
        23. # 环境变量名称
        24. - name: TEST_USER
        25. # 环境变量值得来源为secret secret的名称是mysecret 用的是key为username的value
        26. valueFrom:
        27. secretKeyRef:
        28. name: mysecret
        29. key: username
        30. - name: TEST_PASSWORD
        31. valueFrom:
        32. secretKeyRef:
        33. name: mysecret
        34. key: password
        1. # 创建deployment 并查看Pod
        2. [root@k8smaster secret]# kubectl apply -f opaque-env.yaml
        3. deployment.apps/opaque-env created
        4. [root@k8smaster secret]# kubectl get pod
        5. NAME READY STATUS RESTARTS AGE
        6. opaque-env-54d4fd67f4-9xrrs 1/1 Running 0 11s
        7. opaque-env-54d4fd67f4-h7689 1/1 Running 0 11s
        8. # 查看两个Pod中的环境变量 均已解码
        9. [root@k8smaster secret]# kubectl exec -it opaque-env-54d4fd67f4-9xrrs -- env
        10. TEST_USER=admin
        11. TEST_PASSWORD=123456
        12. [root@k8smaster secret]# kubectl exec -it opaque-env-54d4fd67f4-h7689 -- env
        13. TEST_USER=admin
        14. TEST_PASSWORD=123456

2.3、kubernetes.io/dockerconfigjson

  • 用来存储私有 docker registry 的认证信息

  • 使用命令创建(docker信息换成自己的)

      1. kubectl create secret docker-registry myregistrykey --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL
      1. # 查看 myregistrykey 查看具体信息也是编码过的
      2. [root@k8smaster secret]# kubectl get secret
      3. NAME TYPE DATA AGE
      4. default-token-99w8n kubernetes.io/service-account-token 3 6d20h
      5. myregistrykey kubernetes.io/dockerconfigjson 1 10s
      6. mysecret Opaque 2 50m
  • 使用docker的登录文件创建

    • cat ~/.docker/config.json 这个docker的登录文件登录docker的仓库后自动生成

      1. # 将登录文件的内容进行base64编码
      2. cat ~/.docker/config.json | base64
      3. # 将编码后的结果写入资源清单中
      4. cat > myregistrykey.yaml <<EOF
      5. apiVersion: v1
      6. kind: Secret
      7. metadata:
      8. name: myregistrykey
      9. data:
      10. .dockerconfigjson: docker的登录文件内容的base64编码
      11. type: kubernetes.io/dockerconfigjson
      12. EOF
      13. # 创建serret
      14. kubectl create -f myregistrykey.yaml
    • 资源清单示例

        1. apiVersion: v1
        2. kind: Secret
        3. metadata:
        4. name: myregistrykey
        5. data:
        6. .dockerconfigjson: docker的登录文件内容的base64编码
        7. type: kubernetes.io/dockerconfigjson
  • 资源清单示例

      1. apiVersion: v1
      2. kind: Pod
      3. metadata:
      4. name: docker-pod
      5. spec:
      6. containers:
      7. - name: foo
      8. # 这个镜像需要在自己的仓库中 需要身份认证
      9. image: registry.cn-hangzhou.aliyuncs.com/******/mytomcat:8.1.0
      10. # 使用镜像拉取的secret 包含镜像仓库的地址 用户名 密码等
      11. imagePullSecrets:
      12. - name: myregistrykey
      1. # 查看pod 已经运行
      2. [root@k8smaster secret]# kubectl get pod
      3. NAME READY STATUS RESTARTS AGE
      4. docker-pod 1/1 Running 0 6m22s

3.k8s存储之ConfigMap、Secret的更多相关文章

  1. k8s配置中心-configmap,Secret密码

    目录 k8s配置中心-configmap,Secret 创建ConfigMap 使用ConfigMap subPath参数 Secret 官方文档 编写secret清单 使用secret 在 Pod ...

  2. k8s存储卷概述

    pod本身具有生命周期,故其内部运行的容器及其相关数据自身均无法持久存在.docker支持配置容器使用存储卷将数据持久存储于容器自身文件系统之外的存储空间中,它们可以是节点文件系统或网络文件系统之上的 ...

  3. 二十、Pod的存储之Configmap

    Pod 的存储之Configmap 一.Configmap介绍 ​ConfigMap 功能在 Kubernetes1.2 版本中引入,许多应用程序会从配置文件.命令行参数或环境变量中读取配置信息.Co ...

  4. 使用kubeseal加密和管理k8s集群的secret

    使用kubeseal加密和管理k8s集群的secret 在k8s的管理过程中,像secret这种资源并不好维护,kubeseal提供了一种相对简单的方式来对原始secret资源进行加密,并通过控制器进 ...

  5. kubernetes系列12—二个特色的存储卷configmap和secret

    本文收录在容器技术学习系列文章总目录 1.configmap 1.1 认识configmap ConfigMap用于保存配置数据的键值对,可以用来保存单个属性,也可以用来保存配置文件.ConfigMa ...

  6. k8s env、configmap、secret外部数据加载配置

    K8s提供了多种外部数据注入容器的方式,今天我们主要学习环境变量.ConfigMap以及Secret的使用和配置. 环境变量 在docker项目中,对一个容器添加环境变量可以在容器创建时通过-e EN ...

  7. K8S存储相关yaml

    一.ConfigMap 1.使用目录创建 vim game.properties vim ui.properties 在一个文件夹下创建两个文件,通过以下命令创建 kubectl create con ...

  8. k8s配置集ConfigMap详解

    ConfigMap介绍 ConfigMap和Secret是Kubernetes系统上两种特殊类型的存储卷,ConfigMap对象用于为容器中的应用提供配置文件等信息.但是比较敏感的数据,例如密钥.证书 ...

  9. 09-kubernetes configMap secret

    目录 配置容器化应用配置的方式 命令创建和测试configMap 创建一个Pod 挂在测试 命令行文件类创建方式 创建Pod测试 创建后测试 贴近实际进行测试 创建后测试 secret 举例测试 ge ...

随机推荐

  1. Elements-of-Python_03_LanguageFeature

    (内容包括Python语法概述,流程控制,条件表达式) 1 Python语法 1.1 Python的特点 Python是一种完全面向对象的.解释性的.可移植的.开源的脚本编程高级语言,具有丰富的库,允 ...

  2. IDM 汉化版v1.1.10 (NDM汉化版)

    提升你的下载速度最多达 5 倍,安排下载时程,或续传一半的软件.Internet Download Manager 的续传功能可以恢复因为断线.网络问题.计算机当机甚至无预警的停电导致下传到一半的软件 ...

  3. 一些vue项目

    https://segmentfault.com/a/1190000010330905

  4. AH/HNOI 2017 礼物

    题目链接 描述 两个序列 \(x, y\),可以将一个序列每个值同时加非负整数 \(c\),其中一个序列可以循环移位,要求最小化: \[\sum_{i = 1}^{n}(x_i - y_i) ^ 2 ...

  5. Codeforces Edu Round 49 A-E

    A. Palindromic Twist 由于必须改变.所以要使\(a[i] = a[n - i + 1]\). 要么同向走,但必须满足之前的\(a[i] = a[n - i + 1]\). 要么相遇 ...

  6. SpringBoot整合Swagger2详细教程

    1. 简介   随着前后端分离开发模式越来越流行,编写接口文档变成了开发人员非常头疼的事.而Swagger是一个规范且完整的web框架,用于生成.描述.调用可视化的RESTful风格的在线接口文档,并 ...

  7. win10平衡模式、高性能模式和卓越模式三种电池模式的区别

    win10在1803版本后,有了很多隐藏的功能.电池模式中的"卓越模式"就是其中之一. 互相比较一下: 节能模式:顾名思义是最省电的,此模式下会禁用一些系统特效,且CPU运行频率是 ...

  8. pandas的学习3-设置值

    import pandas as pd import numpy as np # 我们可以根据自己的需求, 用 pandas 进行更改数据里面的值, 或者加上一些空的,或者有数值的列. # 首先建立了 ...

  9. Kali Linux破解wifi密码(无须外置网卡)

    环境准备:  方式一(选择该方式):Kali Linux.笔记本一台.U盘(至少8G)  方式二:Kali Linux.外置网卡.笔记本一台.VM   特别说明,主要是使用方式一进行破解,如果有外置网 ...

  10. 一听就懂:用Python做一个超简单的小游戏

    写它会用到 while 循环random 模块if 语句输入输出函数