ABCABC Tech Catalog
アプリ/業務効率化

KustomizeでKubernetesマニフェストをいい感じに管理する

環境毎のKubernetesリソースを簡単管理

Kubernetesではリソースの構成や設定などをYAML形式で記述したマニフェストで管理を行います。

開発環境、本番環境など、環境が複数あると使用するクラスターが一つだけではなく、修正作業時のマニフェストの変更箇所も多くなって、手間や修正ミスのリスクも高まるのが悩ましい点です…

Kustomizeとは

KustomizeはKubernetesのマニフェスト管理ツールです。

各環境で共通となる箇所を定義したマニフェストファイル(base)と、個環境で差分となる箇所だけを定義したマニフェストファイル(overlays)を作成すると、Kustomizeはその情報を用いて、各環境のマニフェストファイルを生成してくれます。

環境差分を外出しする事で、共通箇所の変更の場合は一箇所(base)だけを修正すればOKとなるので、管理がラクになります。

ディレクトリ構成

baseディレクトリとoverlaysディレクトリを作成し、overlaysディレクトリ配下に各環境のディレクトリを作成します。

devとprodの2環境の場合ですと以下のようになります。

├── base
 │	 ├── deployment.yaml
 │	 ├── gateway.yaml
 │	 ├── http-route.yaml
 │	 ├── kustomization.yaml 
 │   └── service.yaml
 └── overlays
	   ├── dev
	   │   ├── deployment-patch.yaml
	   │   ├── gateway-patch.yaml
	   │   ├── http-route-patch.yaml
	   │   ├── kustomization.yaml
	   │   └── service-patch.yaml
	   └── prod
	       ├── deployment-patch.yaml
	       ├── gateway-patch.yaml
	       ├── http-route-patch.yaml
	       ├── kustomization.yaml
	       └── service-patch.yaml

またkustomization.yamlファイルを各ディレクトリに配置する必要があります。

kustomization.yamlには、どのファイルを使用してマニフェスト定義を作成するかをkustomizeコマンドに伝える役割があります。

overlays/dev/kustomization.yaml ですと以下のようになります。

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namePrefix: dev-
resources:
- ../../base

patches:
- path: deployment-patch.yaml
- path: gateway-patch.yaml
- path: http-route-patch.yaml
- path: service-patch.yaml

ちなみに、kustomization.yamlの配置されたディレクトリ単位で、namePrefixなどを設定する事も可能です。

コマンド

インストール(Homebrewの場合)

brew install kustomize

その他のインストール方法はこちらです。

ビルド(baseとoverlaysの合成結果の確認)

# dev環境のビルド
kustomize build overlays/dev

デプロイ

# dev環境のデプロイ
kubectl apply -k overlays/dev

リソース書き換え(おまけ)

# imageで指定した値の書き換え
kustomize edit set image sample-image=nginx:1

こちらは、CI/CDパイプラインでKustomizeを使ってデプロイをする時にリソース更新が簡単になるので、おすすめのコマンドです。

まとめ

今回はKustomizeというツールを使用して、Kubernetesマニフェストを管理する方法について紹介しました。

修正箇所が少なくなり、環境差分も一目でわかるようになったので、だいぶ快適に管理できるようになりました。

ただファイル数自体は多くなってしまうので、リソース状況を見て導入検討いただければと思います!

AUTHOR

金谷 洋佑

朝日放送テレビ株式会社 技術局 技術開発部

動画・広告配信を主に取り組んでおり、その傍らでシステムのモダナイズの提案・支援や開発も担当。アプリケーションからネットワーク・セキュリティ・インフラまで幅広く励んでます!

WORK@ABC

技術力を培うための
環境と文化

ABCに昔から根付く「自分たちで開発する」文化を支える環境や取り組みをご紹介します
ABCについてもっと知る