跳至主要內容

K8s运维操作-configmap格式错乱问题

HFwas约 712 字大约 2 分钟

K8s运维操作-configmap格式错乱问题

  • 经常命令行操作k8s cm的话,肯定会遇到configmap 格式错乱的问题,例如下

  • 这时候需要手动修改错乱的格式,执行脚本./update-configmap.sh namesapce configmap-name

  • 脚本内容如下:需要动态替换.data."main.conf"data后的值

#!/bin/bash
namespce=$1
configmap=$2

rm -rf ${configmap}.txt
rm -rf ${configmap}.txt-E
rm -rf ${configmap}.txt_bak

kubectl -n ${namespce} get cm ${configmap} -o json |jq '.data."main.conf"' -r  > ${configmap}.txt
sed -i -E 's/[[:space:]]+$//g' ${configmap}.txt
sed -i "_bak"  's/\t/    /g' ${configmap}.txt
cat ${configmap}.txt

#kubectl -n ${namespce} get cm ${configmap} -o yaml > ${configmap}.yaml

示例

  • 执行kubectl -n namespace get cm configmap-name -o yaml获取错乱的 configmap 内容
apiVersion: v1
data:
  application.yml: "server:\n  port: 9060\n  max-http-header-size: 21024\nfile:\n
    \ server:\n    # 目前只支持minio\n    type: minio\nminio:\n  url: #执行器通讯TOKEN [选填]:非空时启用;\n    accessToken:\n
    \   executor:\n      #执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册\n      appname: app-management-svc\n
    \     #执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题\n
    \     address:\n      #执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于
    \"执行器注册\" 和 \"调度中心请求并触发任务\"\n      ip:\n      #执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口\n
    \     port: \n      #执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径\n      logpath:
    /tmp/log\n      #执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能\n
    \     logretentiondays: 30\nuser:\n  manager:\n    password: 1qaz@2wsx"
kind: ConfigMap
metadata:
  annotations:
    application.yml: ""
    description: ""
    meta.helm.sh/release-name: 
    meta.helm.sh/release-namespace: 
    user: houfei
  creationTimestamp: "2023-09-04T02:46:59Z"
  labels:
    image: ""
  resourceVersion: "2186919987"
  • 将多余字段干掉,整理一份干净的 configmap yaml 文件
apiVersion: v1
data:
  application.yml: |-
    yaml内容
kind: ConfigMap
metadata:
  name: configmap-name
  namespace: namespace
  • 新建脚本,将文档上述的脚本内容粘贴进去,名称示例为:update-cm.sh,执行chmod u+x update-cm.sh
  • 执行脚本,获取格式化好的yaml文件内容,./update-cm.sh namespace configmap-name
server:
  port: 9060
  max-http-header-size: 21024
file:
  server:
    # 目前只支持minio
    type: minio
  • 将上述格式化好的放到yaml当中,如下:
apiVersion: v1
data:
  application.yml: |-
    server:
      port: 9060
      max-http-header-size: 21024
    file:
      server:
        # 目前只支持minio
        type: minio
kind: ConfigMap
metadata:
  name: app-management-svc
  namespace: cloudnative-dky-devops
  • 最后执行kubectl -n namespace apply -f configmap-name.yaml
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.1.3