zoukankan      html  css  js  c++  java
  • kubernetes配置文件热更新细节

    Secret与ConfigMap都是kubernetes用于文件配置的调用对象,细微的区在于Secret存储敏感信息,例如密码,OAuth token和SSH key等等,Secret更加安全和灵活。平时调用的时候也没有在乎配置文件是否热更新的问题,所以专门测试记录。

    1.ConfigMap测试
    Configmap使用有两种方式,一种是env系统变量赋值,一种是volume挂载赋值,以下为ConfigMap的yaml文件,创建了三个数据对,并为configmap取名为info。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: info
    data:
      name: leo_zhou
      sex: m
      city: chengdu

    创建deployment,并且调用configmap

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: busybox
    spec:
      selector:
        matchLabels:
          app: busybox
      replicas: 1
      template:
        metadata:
          labels:
            app: busybox
        spec: 
          containers: 
          - image: library/busybox:latest
            name: busybox
            args:
            - /bin/sh
            - -c
            - sleep 10; touch /tmp/healthy; sleep 30000
            env:
              - name: city
                valueFrom:
                  configMapKeyRef:
                    name: info
                    key: city
            volumeMounts:
            - name: etc
              mountPath: "/data"
              readOnly: true
          volumes:
          - name: etc
            configMap:
              name: info
              items:
              - key: name
                path: xxx
              - key: sex
                path: yyy

    ①env方式调用city获取数据值
    ②volume方式调用name和sex值
    创建完毕后进入容器,检查赋值情况

    更新configmap的yaml文件,city修改为beijing,sex为f,重新进入刚才的容器进行测试

    发现env写入系统的configmap是不会热更新的,而volume写入的方式支持热更新!

    2.Secret测试
    Secret同样使用有两种方式,一种是env系统变量赋值,一种是volume挂载赋值,以下为Secret的yaml文件,创建了三个数据对,并为Secret取名为sc,需要注意的是只支持base64的字符串,普通的字符不能在配置文件种,不然会报错!

    echo -n 'chengdu' | openssl base64
    Y2hlbmdkdQ==
    #需要用openssl base64转换字符

    name:leo_zhou
    sex:m
    city:chengdu

    apiVersion: v1
    kind: Secret
    metadata:
      name: sc
    data:
      name: bGVvX3pob3U=
      sex: bQ==
      city: Y2hlbmdkdQ==

    创建deployment,并且调用secret

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: busybox-2
    spec:
      selector:
        matchLabels:
          app: busybox-2
      replicas: 1
      template:
        metadata:
          labels:
            app: busybox-2
        spec:
          containers:
          - image: library/busybox:latest
            name: busybox-2
            args:
            - /bin/sh
            - -c
            - sleep 10; touch /tmp/healthy; sleep 30000
            env:
              - name: city
                valueFrom:
                  secretKeyRef:
                    name: sc
                    key: city
            volumeMounts:
            - name: etc
              mountPath: "/data"
              readOnly: true
          volumes:
          - name: etc
            secret:
              secretName: sc
              items:
              - key: name
                path: xxx
              - key: sex
                path: yyy

    创建完毕后进入容器,检查赋值情况


    更新secret的yaml文件,city修改为beijing,sex为f,重新进入刚才的容器进行测试。

    同样发现env写入系统的secret是不会热更新的,而volume写入的方式支持热更新!所以以后在需要更新文件配置时需要区分进行判断。

  • 相关阅读:
    jQuery.hover() 函数详解
    深入了解css的行高Line Height属性
    yii2 restfulapi QueryParamAuth验证
    yii2 restfulapi 的配置和访问
    yii2 urlmanager的配置
    xubuntu install nodejs
    使用Putty连接VirtualBox的Ubuntu
    mvc与mvvm
    对二叉树进行广度优先遍历
    JavaScript 中的 FileReader
  • 原文地址:https://www.cnblogs.com/zhouzhifei/p/12035190.html
Copyright © 2011-2022 走看看