このドキュメントは The Kubectl Book の翻訳です。翻訳の GitHub リポジトリはこちら。
- Apply コマンドは Kubernetes リソースを定義するファイル (リソース構成) を通じてアプリケーションを管理する
- Kustomize はリソース構成を記述するために使用される
宣言的なアプリケーション管理
この章では、ワークロードとアプリケーションを宣言的に管理する方法を説明します。
クラスタ内のワークロードはリソース構成 (Resource Config) と呼ばれるファイルを通じて設定できます。これらのファイルは通常、バージョン管理の下に置かれ、クラスタの状態を検査・適用する前に設定の変更をレビューできるようにします。
アプリケーション管理は二つのコンポーネントから構成されます。
クライアントコンポーネント
クライアントコンポーネントは、アプリケーションの望ましい状態を定義するリソース構成を書くことからなります。生のリソース構成ファイル群を書くこともありますが、別々のチームが書いたリソース構成をまとめ上げることもあります (kustomization.yaml
を使うには -k
フラグを使用)。
Kustomize はリソース構成を書く作業を簡単にするため、低レベルのツールを提供しています。
- リソース構成の生成。たとえば ConfigMap や Secret を基準となる他のソースから生成する
- 一つ以上のリソース構成のファイル群を再利用・構成する
- リソース構成をカスタマイズする
- 横断的にフィールドを設定する - たとえば名前空間、ラベル、アノテーション、名前の接頭辞など
例: 一人がアプリケーションのベース (Base) を定義し、別の人がベースの特定のインスタンスをカスタマイズするというやり方が可能です。
サーバーコンポーネント
サーバーコンポーネントは、記述されたリソース構成をクラスタに適用することからなります。Apply が実行されると、Kubernetes クラスタはリソースを作成・更新することになりますが、リソース構成ファイルには書かれていないリソース上の望ましい状態を追加します。たとえば、指定されていないフィールドをデフォルト値で埋め、IP アドレスを入力し、レプリカ数をオートスケールさせるといったことです。
留意点として、アプリケーション管理はユーザーと Kubernetes システム自身とが協調するプロセスです。望ましい状態を定義するため、互いに貢献し合います。
例: クラスタ内の Autoscaler コントローラは Deployment のフィールドにユーザーが管理するスケールフィールドを設定することができます。