企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
kubectl 从 1.14 版本开始支持 kustomization.yaml。我们可以使用生成器创建 ConfigMap,然后发送给 API Server 创建资源对象。生成器是在 kustomization.yaml 文件内部指定。 #### 从文件创建生成器 比如使用 configmap/game.properties 文件生成一个 ConfigMap: ~~~bash cat <<EOF >/home/shiyanlou/kustomization.yaml configMapGenerator: - name: game-config-5 files: - configmap/game.properties EOF ~~~ 执行创建: ~~~bash $ kubectl apply -k . configmap/game-config-5-c6kgkt26m6 created # 可以看到使用生成器创建的 ConfigMap 在名称末尾有一个 hash 后缀,这样可以确保每次配置文件内容修改以后生成器会生成一个新的 ConfigMap $ kubectl get configmap|grep game-config-5 game-config-5-c6kgkt26m6 1 49s $ kubectl describe configmaps/game-config-5-c6kgkt26m6 Name: game-config-5-c6kgkt26m6 Namespace: default Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"v1","data":{"game.properties":"enemies=aliens\nlives=3\nenemies.cheat=true\nenemies.cheat.level=noGoodRotten\nsecret.code.p... Data ==== game.properties: ---- enemies=aliens lives=3 enemies.cheat=true enemies.cheat.level=noGoodRotten secret.code.passphrase=UUDDLRLRBABAS secret.code.allowed=true secret.code.lives=30 Events: <none> ~~~ 类似的我们可以将配置文件的名称进行重命名,只需要将 kustomization.yaml 中的`files`如下: ~~~yaml # 使用名称 game-special-key 替代 game.properties - name: game-config-5 files: - game-special-key=configmap/game.properties ~~~ 然后执行`kubectl apply -k .`会生成新的 ConfigMap。 #### 从键值对生成 ConfigMap 在终端执行如下命令写入值: ~~~bash cat <<EOF >/home/shiyanlou/kustomization.yaml configMapGenerator: - name: special-config-2 literals: - special.how=very - special.type=charm EOF ~~~ 执行创建: ~~~bash $ kubectl apply -k . configmap/special-config-2-c92b5mmcf2 created ~~~