kustomize使用すると、複数の目的でRAWのテンプレートフリーのYAMLファイルをカスタマイズでき、元のYAMLをそのまま使用できます。
kustomize Kubernetesをターゲットにします。 KubernetesスタイルのAPIオブジェクトを理解し、パッチすることができます。それはmakeようなものであり、それが行うことはファイルで宣言されており、編集されたテキストを排出するという点でsedのようなものです。
このツールは、Sig-Cli(KEP)が後援しています。
Kubectlの最近のバージョンに組み込まれたKustomizeバージョンを見つけるには、 kubectl versionを実行します。
> kubectl version --client
Client Version: v1.31.0
Kustomize Version: v5.4.2v2.0.3のKustomizeビルドフローをKubectl v1.14に追加しました。 KubectlのKustomize Flowは、Kubectl v1.21までv2.0.3で凍結されたままで、v4.0.5に更新されました。今後の定期的に更新され、そのような更新はKubernetesリリースノートに反映されます。
| Kubectlバージョン | Kustomizeバージョン |
|---|---|
| <v1.14 | n/a |
| 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 |
Kubectl統合を使用するための例とガイドについては、Kubernetesのドキュメントを参照してください。
YAMLリソースファイル(展開、サービス、ConfigMapsなど)を含む一部のディレクトリで、Kustomizationファイルを作成します。
このファイルは、これらのリソースとそれらに適用するカスタマイズを宣言する必要があります。たとえば、共通のラベルを追加します。
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 |
+-------------------------------------------------------+
ファイル構造:
~/someApp ├── deployment.yaml ├── kustomization.yaml └── service.yaml
このディレクトリのリソースは、他の誰かの構成のフォークになる可能性があります。もしそうなら、リソースを直接変更しないため、ソース素材から簡単に改善して改善をキャプチャできます。
カスタマイズされたYAMLを生成します:
kustomize build ~/someApp
YAMLはクラスターに直接適用できます。
kustomize build ~/someApp | kubectl apply -f -
共通のベースを変更するオーバーレイを使用して、開発、ステージング、生産などの構成の従来のバリエーションを管理します。
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" |
+------------------------------------------+
ファイル構造:
~/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
上記のステップ(1)から作業を行い、 baseと呼ばれるsomeAppサブディレクトリに移動してから、オーバーレイを兄弟ディレクトリに配置します。
オーバーレイは、ベースを参照し、そのベースに適用するパッチを参照する別のkustomizationに過ぎません。
この配置により、 gitで構成を簡単に管理できます。ベースには、他の誰かが管理する上流リポジトリのファイルを持つことができます。オーバーレイは、所有するリポジトリにある可能性があります。ディスク上の兄弟としてリポジトリのクローンを配置すると、Gitサブモジュールの必要性が回避されます(ただし、サブモジュールファンの場合は正常に機能します)。
yamlを生成します
kustomize build ~ /someApp/overlays/productionYAMLはクラスターに直接適用できます。
kustomize build ~ /someApp/overlays/production | kubectl apply -f -
Kubernetesコミュニティへの参加は、Kubernetes行動規範に準拠しています。