このチュートリアルでは、Google Kubernetes Engine(GKE)Enterprise エディションのクラスタを作成し、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.
-
Make sure 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.
-
Make sure that billing is enabled for your Google Cloud project.
-
Make sure that you have the following role or roles on the project: GKE Hub 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 colunn 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 アカウントのメールアドレスです。
- [ロールを選択] リストでロールを選択します。
- 追加のロールを付与するには、 [別のロールを追加] をクリックして各ロールを追加します。
- [保存] をクリックします。
クラスタを作成する
このセクションでは、このチュートリアルで使用できるクラスタを作成します。実際には、複数のクラスタを管理することをおすすめしますが、このチュートリアルでは、クラスタを 1 つだけ作成して管理します。
デプロイを作成するには、次の手順を完了します。
Google Cloud コンソールで、[Kubernetes Engine] ページに移動します。
GKE を初めて使用する場合は、[有効にする] をクリックして Kubernetes Engine API を有効にします。
[add_box 作成] をクリックします。
[Autopilot] セクションで、[構成] を選択します。
[クラスタの基本] セクションで、[名前] フィールドに「
cs-cluster
」を入力します。他のフィールドはすべてデフォルト値のままにします。[作成] をクリックします。[Kubernetes クラスタ] ページが表示されます。クラスタの作成には数分かかります。クラスタの横にある [ステータス] 列に緑色のチェックマークが表示されたら、準備完了です。
クラスタを構成する
クラスタが作成されたため、サンプル リポジトリの
config-sync-quickstart
ディレクトリの構成ファイルと同期するように Config Sync を構成できます。Google Cloud コンソールで Config Sync を構成するには、次の手順を完了します。
Google Cloud コンソールで、GKE Hub API を有効にします。
- 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
の [同期ステータス] 列に「同期済み」と表示されます。
以上で Config Sync がリポジトリと同期し、常にクラスタの状態をリポジトリの構成ファイルに一致させるようになります。
Config Sync のインストールを確認する
次のセクションでは、Cloud Shell を使用して
cs-cluster
の同期元のリポジトリを調査し、リポジトリ内の構成ファイルがデプロイされていることを確認します。Cloud Shell を開く
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
次のセクションのコマンドを使用するには、
kubectl
コマンドライン アクセスを構成します。gcloud container clusters get-credentials cs-cluster \ --zone ZONE \ --project PROJECT_ID
次のように置き換えます。
ZONE
: クラスタを作成したゾーンPROJECT_ID
: プロジェクト ID
次のような出力が表示されます。
Fetching cluster endpoint and auth data. kubeconfig entry generated for cs-cluster.
承認を求められたら、[承認] をクリックします。
クラスタとリポジトリを調べる
config-sync-quickstart
ディレクトリには、ClusterRole、CustomResourceDefinition、Rolebinding、Namespace、RepoSync の構成が含まれます。また、モニタリング用の Prometheus Operator の構成も含まれています。これらの構成ファイルは、Config Sync がリポジトリから読み取るように構成されると、すぐに適用されます。Config Sync で管理されるオブジェクトの
app.kubernetes.io/managed-by
ラベルはconfigmanagement.gke.io
に設定されています。 このラベルを使用して、マネージド オブジェクトを表示できます。Config Sync が管理する Namespace を一覧表示するには、次のコマンドを実行します。
kubectl get ns -l app.kubernetes.io/managed-by=configmanagement.gke.io
出力は次のようになります。
NAME STATUS AGE gamestore Active 58s monitoring Active 58s
これらの Namespace が作成される元となった構成ファイルは、GitHub のリポジトリの /config-sync-quickstart/multirepo/ フォルダに移動して確認できます。
ClusterRole、Reposync、CRD、Rolebindings などの他のオブジェクトも同様の方法で確認できます。
同期ステータスを確認する
Config Sync を使用している場合は、
nomos
コマンドライン ツールを使用できます。このツールを使用すると、Config Sync の追加機能を利用できます。このセクションでは、
nomos status
コマンドを使用して、Config Sync がすべての構成ファイルをクラスタに正常に同期しているかどうか確認します。nomos status
出力は次のようになります。
*gke_PROJECT_ID_ZONE_cs-cluster -------------------- <root>:root-sync https://github.com/GoogleCloudPlatform/anthos-config-management-samples/config-sync-quickstart/multirepo/root@main SYNCED @ 2023-02-03 16:58:42 +0000 UTC 1fbab5c90af9029b26451fec92e9900d8db23aee Managed resources: NAMESPACE NAME STATUS SOURCEHASH clusterrole.rbac.authorization.k8s.io/namespace-reader Current 1fbab5c clusterrole.rbac.authorization.k8s.io/prometheus-acm Current 1fbab5c clusterrole.rbac.authorization.k8s.io/prometheus-operator Current 1fbab5c clusterrole.rbac.authorization.k8s.io/webstore-admin Current 1fbab5c clusterrolebinding.rbac.authorization.k8s.io/prometheus-acm Current 1fbab5c clusterrolebinding.rbac.authorization.k8s.io/prometheus-operator Current 1fbab5c customresourcedefinition.apiextensions.k8s.io/alertmanagerconfigs.monitoring.coreos.com Current 1fbab5c customresourcedefinition.apiextensions.k8s.io/alertmanagers.monitoring.coreos.com Current 1fbab5c customresourcedefinition.apiextensions.k8s.io/anvils.acme.com Current 1fbab5c customresourcedefinition.apiextensions.k8s.io/podmonitors.monitoring.coreos.com Current 1fbab5c customresourcedefinition.apiextensions.k8s.io/probes.monitoring.coreos.com Current 1fbab5c customresourcedefinition.apiextensions.k8s.io/prometheuses.monitoring.coreos.com Current 1fbab5c customresourcedefinition.apiextensions.k8s.io/prometheusrules.monitoring.coreos.com Current 1fbab5c customresourcedefinition.apiextensions.k8s.io/servicemonitors.monitoring.coreos.com Current 1fbab5c customresourcedefinition.apiextensions.k8s.io/thanosrulers.monitoring.coreos.com Current 1fbab5c customresourcedefinition.apiextensions.k8s.io/webstores.marketplace.com Current 1fbab5c namespace/gamestore Current 1fbab5c namespace/monitoring Current 1fbab5c gamestore reposync.configsync.gke.io/repo-sync Current 1fbab5c gamestore rolebinding.rbac.authorization.k8s.io/gamestore-admin Current 1fbab5c gamestore rolebinding.rbac.authorization.k8s.io/gamestore-webstore-admin Current 1fbab5c monitoring deployment.apps/prometheus-operator Current 1fbab5c monitoring prometheus.monitoring.coreos.com/acm Current 1fbab5c monitoring service/prometheus-acm Current 1fbab5c monitoring service/prometheus-operator Current 1fbab5c monitoring serviceaccount/prometheus-acm Current 1fbab5c monitoring serviceaccount/prometheus-operator Current 1fbab5c monitoring servicemonitor.monitoring.coreos.com/acm-service Current 1fbab5c -------------------- gamestore:repo-sync https://github.com/GoogleCloudPlatform/anthos-config-management-samples/config-sync-quickstart/multirepo/namespaces/gamestore@main SYNCED @ 2023-02-03 16:58:51 +0000 UTC 1fbab5c90af9029b26451fec92e9900d8db23aee Managed resources: NAMESPACE NAME STATUS SOURCEHASH gamestore configmap/store-inventory Current 1fbab5c gamestore webstore.marketplace.com/gameplace Current 1fbab5c
この出力では、
cs-cluster
が 2 つのリポジトリから正常に同期されていることがわかります。また、すべてのリソースのステータスはCurrent
であるため、リソースの状態は望ましい状態と一致します。クリーンアップ
Google Cloud コンソールの GKE メニューに移動します。
cs-cluster
の横にある [操作](more_vert) をクリックし、[削除](delete)をクリックします。確認するメッセージが表示されたら、もう一度 [削除] をクリックします。
次のステップ
- 構成ファイルの検証について詳細を確認する。
-