kustomize permite que você personalize arquivos YAML brutos e sem modelos para vários propósitos, deixando a YAML original intocada e utilizável como está.
kustomize alvos Kubernetes; Ele entende e pode corrigir objetos da API do estilo Kubernetes. É como make , pois o que faz é declarado em um arquivo, e é como sed , na medida em que emite texto editado.
Esta ferramenta é patrocinada pelo SIG-CLI (KEP).
Para encontrar a versão Kustomize incorporada nas versões recentes do Kubectl, execute kubectl version :
> kubectl version --client
Client Version: v1.31.0
Kustomize Version: v5.4.2O fluxo de construção de Kustomize em v2.0.3 foi adicionado ao Kubectl v1.14. O fluxo de Kustomize em Kubectl permaneceu congelado em v2.0.3 até Kubectl v1.21, que o atualizou para v4.0.5. Ele será atualizado regularmente, e essas atualizações serão refletidas nas notas de lançamento do Kubernetes.
| Versão Kubectl | Versão Kustomize |
|---|---|
| <v1.14 | n / D |
| v1.14-v1.20 | v2.0.3 |
| v1.21 | v4.0.5 |
| v1.22 | v4.2.0 |
| v1.23 | v4.4.1 |
| v1.24 | v4.5.4 |
| v1.25 | v4.5.7 |
| v1.26 | v4.5.7 |
| v1.27 | v5.0.1 |
Para exemplos e guias para o uso da integração Kubectl, consulte a documentação do Kubernetes.
Em algum diretório que contém seus arquivos de recursos YAML (implantações, serviços, configurações, etc.), crie um arquivo de kustomização.
Esse arquivo deve declarar esses recursos e qualquer personalização para aplicar a eles, por exemplo, adicionar um rótulo comum .
base: kustomization + resources
kustomization.yaml deployment.yaml service.yaml
+---------------------------------------------+ +-------------------------------------------------------+ +-----------------------------------+
| apiVersion: kustomize.config.k8s.io/v1beta1 | | apiVersion: apps/v1 | | apiVersion: v1 |
| kind: Kustomization | | kind: Deployment | | kind: Service |
| commonLabels: | | metadata: | | metadata: |
| app: myapp | | name: myapp | | name: myapp |
| resources: | | spec: | | spec: |
| - deployment.yaml | | selector: | | selector: |
| - service.yaml | | matchLabels: | | app: myapp |
| configMapGenerator: | | app: myapp | | ports: |
| - name: myapp-map | | template: | | - port: 6060 |
| literals: | | metadata: | | targetPort: 6060 |
| - KEY=value | | labels: | +-----------------------------------+
+---------------------------------------------+ | app: myapp |
| spec: |
| containers: |
| - name: myapp |
| image: myapp |
| resources: |
| limits: |
| memory: "128Mi" |
| cpu: "500m" |
| ports: |
| - containerPort: 6060 |
+-------------------------------------------------------+
Estrutura de arquivo:
~/someApp ├── deployment.yaml ├── kustomization.yaml └── service.yaml
Os recursos neste diretório podem ser um garfo da configuração de outra pessoa. Nesse caso, você pode se refazer facilmente do material de origem para capturar melhorias, porque não modifica os recursos diretamente.
Gerar YAML personalizado com:
kustomize build ~/someApp
O YAML pode ser aplicado diretamente a um cluster:
kustomize build ~/someApp | kubectl apply -f -
Gerencie variantes tradicionais de uma configuração - como desenvolvimento , estadiamento e produção - usando sobreposições que modificam uma base comum.
overlay: kustomization + patches
kustomization.yaml replica_count.yaml cpu_count.yaml
+-----------------------------------------------+ +-------------------------------+ +------------------------------------------+
| apiVersion: kustomize.config.k8s.io/v1beta1 | | apiVersion: apps/v1 | | apiVersion: apps/v1 |
| kind: Kustomization | | kind: Deployment | | kind: Deployment |
| commonLabels: | | metadata: | | metadata: |
| variant: prod | | name: myapp | | name: myapp |
| resources: | | spec: | | spec: |
| - ../../base | | replicas: 80 | | template: |
| patches: | +-------------------------------+ | spec: |
| - path: replica_count.yaml | | containers: |
| - path: cpu_count.yaml | | - name: myapp |
+-----------------------------------------------+ | resources: |
| limits: |
| memory: "128Mi" |
| cpu: "7000m" |
+------------------------------------------+
Estrutura de arquivo:
~/someApp ├── base │ ├── deployment.yaml │ ├── kustomization.yaml │ └── service.yaml └── overlays ├── development │ ├── cpu_count.yaml │ ├── kustomization.yaml │ └── replica_count.yaml └── production ├── cpu_count.yaml ├── kustomization.yaml └── replica_count.yaml
Pegue o trabalho da etapa (1) acima, mova -o para um subdiretório someApp chamado base e coloque sobreposições em um diretório de irmãos.
Uma sobreposição é apenas mais uma kustomização, referindo -se à base e referindo -se a patches para aplicar a essa base.
Esse arranjo facilita o gerenciamento de sua configuração com git . A base pode ter arquivos de um repositório a montante gerenciado por outra pessoa. As sobreposições podem estar em um repositório que você possui. A organização dos clones repositórios como irmãos no disco evita a necessidade de submódulos Git (embora isso funcione bem, se você é um ventilador do submódulo).
Gerar YAML com
kustomize build ~ /someApp/overlays/productionO YAML pode ser aplicado diretamente a um cluster:
kustomize build ~ /someApp/overlays/production | kubectl apply -f -
A participação na comunidade de Kubernetes é governada pelo Código de Conduta Kubernetes.