使用Kustomize声明管理Kubernetes对象

kustomize 是使用kustomization文件来定制Kubernetes对象的独立工具。从Kubectl 1.14开始,Kubectl已经支持使用kustomization文件管理Kubernetes对象。

通过kubectl使用kustomize

简单来说,通过以下两条命令就可以使用kutomization文件:

  • 查看包含kutomization文件的目录:

    kubectl kutomize <kutomization_directory>
    
  • 应用这些资源,则也是使用 kubectl apply 不过参数采用 -k

    kubectl apply -k <kustomization_directory>
    

生成资源

ConfigMap和Secret薄阿喊了配置或敏感数据,这些敏感数据需要被Kubernetes对象,如Pod使用。可以信任的ConfigMap或Secret通常从某处获取,例如,一个 .properties 文件或者一个ssh密钥文件。Kubernetes提供了 secretGeneratorconfigMapGenerator 用于根据文件或literals生成 Secret 和 ConfigMap。

configMapGenerator

举例,我们通过一个 application.properties 来保存敏感的配置信息,然后使用 kustomization.yaml 来引用这配置文件。

  • 创建一个 application.properties 文件内容如下:

    FOO=Bar
    
  • 创建一个 kustomization.yaml 文件内容如下:

    configMapGenerator:
    - name: example-configmap-1
      files:
      - application.properties
    
  • 然后在这个目录下执行:

    kubectl kustomize ./
    

生成输出:

apiVersion: v1
data:
  application.properties: |
    FOO=Bar
kind: ConfigMap
metadata:
  name: example-configmap-1-8mbdf7882g

ConfigMap有支持从literal key-value对生成,将上述 kustomization.yaml 修改成:

configMapGenerator:
    - name: example-configmap-2
      literals:
          - FOO=Bar

然后执行:

kubectl kustomize ./

则生成:

apiVersion: v1
data:
  FOO: Bar
kind: ConfigMap
metadata:
  name: example-configmap-2-g2hdhfc6tk