このクイックスタートでは、Config Sync を使用して、Google Kubernetes Engine クラスタを管理するための GitOps アプローチを実装する方法について説明します。GitOps ワークフローでは、Git リポジトリをクラスタ構成の信頼できる唯一の情報源として使用します。
Config Sync を使用すると、次のメリットがあります。
- 整合性の確保: すべてのクラスタで同じ構成を使用することで、構成のずれのリスクを軽減します。
- セキュリティの強化: クラスタ構成を一元的に管理して監査することで、セキュリティ ポリシーの適用が容易になります。
- ベロシティの向上: 構成変更のロールアウトを自動化することで、変更をより迅速かつ確実にデプロイできます。
このチュートリアルでは、GKE クラスタを作成して Config Sync を構成し、サンプル リポジトリから構成ファイルを同期します。このチュートリアルでは、Config Sync の仕組みを理解できると同時に、Config Sync を使用してクラスタを一貫性のある自動化された方法で管理する経験が得られます。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Make sure that you have the following role or roles on the project: Kubernetes Engine Admin
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
IAM に移動 - プロジェクトを選択します。
- [ アクセスを許可] をクリックします。
-
[新しいプリンシパル] フィールドに、ユーザー ID を入力します。 これは通常、Google アカウントのメールアドレスです。
- [ロールを選択] リストでロールを選択します。
- 追加のロールを付与するには、 [別のロールを追加] をクリックして各ロールを追加します。
- [保存] をクリックします。
Google Kubernetes Engine API を有効にします。
Google Cloud コンソールで、[Kubernetes Engine] ページに移動します。
[add_box 作成] をクリックします。
[Autopilot] セクションで、[構成] を選択します。
[クラスタの基本] セクションで、[名前] フィールドに「
cs-cluster
」と入力します。他のフィールドは、すべて推奨されたデフォルトのままにしておきます。[作成] をクリックします。[Kubernetes クラスタ] ページが表示されます。クラスタの作成には数分かかります。クラスタの横にある [ステータス] 列に緑色のチェックマークが表示されたら、準備完了です。
- Google Cloud コンソールで、[機能] セクションの [構成] ページに移動します。
- [add Config Sync のインストール] をクリックします。
- 使用する Config Sync のバージョンを選択します。
- [インストール オプション] で、[個別のクラスタに Config Sync をインストールする] を選択します。
- [使用可能なクラスタ] テーブルで、
cs-cluster
を選択し、[Config Sync をインストールする] をクリックします。数分後に、[設定] タブでcs-cluster
のステータスが [有効] として表示されます。 - Config Sync ダッシュボードで、[クラスタ パッケージをデプロイ] をクリックします。
- [パッケージ デプロイのクラスタの選択] テーブルで、
cs-cluster
を選択し、[続行] をクリックします。 - [Git でホストされているパッケージ] を選択したままにして、[続行] をクリックします。
- [パッケージ名] フィールドに「
sample-repository
」と入力します。 - [リポジトリの URL] フィールドに「
https://github.com/GoogleCloudPlatform/anthos-config-management-samples
」と入力します。 - [パス] フィールドに「
config-sync-quickstart/multirepo/root
」と入力します。 - 他のフィールドはデフォルト値のままにしておきます。
[パッケージをデプロイ] をクリックします。
数分後、
cs-cluster
の [同期ステータス] 列に「同期済み」と表示されます。- Namespace の作成:
namespace-gamestore.yaml
などのファイルは Namespace 自体を作成します。 - クラスタ スコープのリソース: クラスタ全体に影響するファイルには、権限を付与するクラスタ全体のロールを追加する
ClusterRole
オブジェクトなどのリソースが含まれます。 - Namespace リポジトリの接続: このマルチリポジトリ設定のキーファイルは
reposync-gamestore.yaml
ファイルです。このRepoSync
オブジェクトは、gamestore
Namespace の構成を別のパスから同期するように Config Sync に指示します。この例では、RepoSync
オブジェクトは同じリポジトリ内のconfig-sync-quickstart/multirepo/ namespaces/gamestore
ディレクトリを参照していますが、実際のシナリオでは別の Git リポジトリを参照することもできます。 Google Cloud コンソールの GKE メニューに移動します。
cs-cluster
の横にある [操作](more_vert) をクリックし、[削除](delete)をクリックします。確認するメッセージが表示されたら、もう一度 [削除] をクリックします。
- 構成ファイルの検証について詳細を確認する。
クラスタを作成する
このセクションでは、このチュートリアルで使用できるクラスタを作成します。実際には、複数のクラスタを管理することをおすすめしますが、このチュートリアルでは、クラスタを 1 つだけ作成して管理します。
デプロイを作成するには、次の手順を完了します。
クラスタを構成する
クラスタが作成されたので、Config Sync を構成し、Git リポジトリから構成ファイルを同期します。
Google Cloud コンソールで Config Sync を構成するには、次の手順を完了します。
以上で Config Sync がリポジトリと同期し、常にクラスタの状態をリポジトリの構成ファイルに一致させるようになります。
パッケージの詳細を表示する
Config Sync で管理されているオブジェクトを表示するには、[パッケージ] タブに移動して
cs-cluster
をクリックします。パッケージの詳細ページには、リソースタイプやリソースの同期先の Namespace など、すべての同期済みリソースの概要が表示されます。(省略可)サンプル リポジトリを調べる
クラスタに適用される構成は、
/config-sync-quickstart/multirepo/
リポジトリで定義されます。このサンプルは、root
リポジトリで表されるクラスタ管理者レベルの構成が、namespaces
リポジトリで表される Namespace レベルの構成から分離されているマルチリポジトリ設定を示しています。この例では、これらの構成は別々のフォルダに分割されています。実際のシナリオでは、アクセス権限の異なる 2 つのリポジトリに構成を保存できます。大まかに、クラスタレベルのリポジトリまたはルート リポジトリは、通常は中央管理者によって管理されます。このリポジトリには、クラスタ全体のリソース、Namespace 構成、ポリシーが格納されます。Namespace レベルのリポジトリには通常、個々の Namespace に固有の構成が格納されます。このリポジトリは、通常はアプリケーション チームによって管理されます。
ルート リポジトリに保存する可能性のある主なファイルタイプには、次のようなものがあります。
Namespace リポジトリには、
gamestore
Namespace 用のアプリケーション固有の構成が格納されます。たとえば、configmap-inventory.yaml
ファイルにはgamestore
アプリケーションのインベントリ データが含まれています。このタイプの GitOps 設定により、アプリケーション チームは中央のルート リポジトリを変更する必要がなくなり、独自のデプロイと Namespace スコープのリソースをより自律的に管理できるようになります。クリーンアップ
次のステップ
-