• K8S ConfigMap更新


    ConfigMap

    ConfigMap 是 configMap 是一种 API 对象,用来将非机密性的数据保存到健值对中。使用时可以用作环境变量、命令行参数或者存储卷中的配置文件。

    ConfigMap 将您的环境配置信息和 容器镜像 解耦,便于应用配置的修改。当您需要储存机密信息时可以使用 Secret 对象。

    具体用法查看官网,这里记录下使用过程中遇到的问题。

    项目中会将配置放到configmap,然后创建应用时,会读取configmap内容,映射到pod容器中,对应到项目的配置路径。

    创建configmap

    • k8s配置文件形式
      configmap-nginx.yaml
    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: nginx-config
    data:
      app.conf: |
        server {
          listen 80 default_server;
          listen [::]:80 default_server;
    
          root /var/www/html/app/;
          server_name walking.com;
          index  index.php index.html index.htm;
          location / {
            try_files $uri $uri/ /index.php$is_args$args;
          }
          location ~ .php {
            fastcgi_pass   app-php:9000;
            fastcgi_index  index.php;
            include        fastcgi.conf;
          }
        }
      abc.conf: walking.com
    

    创建configmap,

    kubectl apply -f configmap-nginx.yaml -n [namesapce]
    

    kubectl apply -f 也可以更新操作。

    -n [namesapce] 指定命名空间,没有就会是默认default命名空间。

    • 从文件或者目录加载进去
    kubectl create configmap game-config --from-file=configure-pod-container/configmap/ -n [namesapce]
    

    更新会麻烦点,使用管道,先获取内容,在使用kubectl replace -f实现更新。

    kubectl create configmap nginx-config --from-file configure-pod-container/configmap/ -o yaml --dry-run -n [namesapce] | kubectl replace -f -
    
    • 从文字生成ConfigMap
      为了从字面一个ConfigMap special.type=charm并且special.how=very,你可以指定ConfigMap发电机kustomization.yaml作为
      # Create a kustomization.yaml file with ConfigMapGenerator
      cat <<EOF >./kustomization.yaml
      configMapGenerator:
      - name: special-config-2
        literals:
        - special.how=very
        - special.type=charm
      EOF
    

    应用Kustomization目录创建ConfigMap对象。

    kubectl apply -k .
    
    configmap/special-config-2-c92b5mmcf2 created
    
    

    关于configmap的更新着实躺了个坑,当时也没查到相关资料,就自己动手用shell实现了套。

    #!/bin/bash
    
    path=./config
    
    cd $path
    
    # kubectl 更新
    kubectlUpdate() {
       `rm -rf ../configmap.yaml`
    
      if [ -f "$1" ];then
        str=$str"  "$1:" |-
    "$(awk '{print "    "$0}' $1)"
    "
      else
        callback=$(ls $1)
        str="data:
    "
        for filename in $callback
        do
          if [  -d "$1/$filename" ];then
            continue
          else
            # 获取所有配置
            str=$str"  "$filename:" |-
    "$(awk '{print "    "$0}' $1/$filename)"
    "
          fi
        done
      fi
    
      # configmap内容写入临时文件configmap.yaml
      content="---
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: $2
      namespace: namespace"
      `echo -e "${content}" >> ../configmap.yaml && echo -e "${str}" >> ../configmap.yaml`
    
      # 更新configmap
      echo `kubectl apply -f ../configmap.yaml -n bigdata`
      return
    }
    
    
    # params create
    res_params=`kubectl create configmap params-configmap --from-file=config/ -n [namespace]`
    if [ -z "$res_params" ];then
      kubectlUpdate config/ params-configmap
    else
      echo $res_params
    fi
    

    还是躺了个坑。

    查看configmap

    # -0 yaml 代表输出以yaml形式
    kubectl get configmaps special-config -o yaml
    
  • 相关阅读:
    foundation框架—结构体
    OC语言BLOCK和协议
    OC语言description方法和sel
    OC语言类的本质和分类
    清除浮动的常用方法
    php动态读取数据清除最右边距
    css背景图片定位练习(二): background-position的百分比
    css背景图片定位练习(一)
    行高不设单位的好处 line-height:1.8
    background:transparent的作用
  • 原文地址:https://www.cnblogs.com/followyou/p/13127195.html
Copyright © 2020-2023  润新知