クイックスタート: リポジトリから構成ファイルを同期する
このチュートリアルでは、Google Kubernetes Engine(GKE)Enterprise エディションのクラスタを作成し、Config Sync を使用してマルチリポジトリ サンプル リポジトリの構成ファイルを同期します。
たとえば、コンプライアンス チームは、組織内の全員が内部ルールに従うようにすることが任務であるとします。その内部ルールを適用するために、コンプライアンス チームでは、構成ファイルを作成して、サンプル リポジトリに追加しました。組織内の各クラスタは、そのリポジトリと同期する必要があり、お客様がクラスタの作成と同期を担当しているとします。
始める前に
- Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
プロジェクトに次のロールがあることを確認します。 GKE Hub Admin
ロールを確認する
-
Google Cloud コンソールの [IAM] ページに移動します。
[IAM] に移動 - プロジェクトを選択します。
-
[プリンシパル] 列で、自分のメールアドレスを含む行を見つけます。
自分のメールアドレスがその列にない場合、ロールは割り当てられていません。
- 自分のメールアドレスを含む行の [ロール] 列で、ロールのリストに必要なロールが含まれているかどうかを確認します。
ロールを付与する
-
Google Cloud コンソールの [IAM] ページに移動します。
[IAM] に移動 - プロジェクトを選択します。
- [ アクセスを許可] をクリックします。
- [新しいプリンシパル] フィールドに、自分のメールアドレスを入力します。
- [ロールを選択] リストでロールを選択します。
- 追加のロールを付与するには、 [別のロールを追加] をクリックして各ロールを追加します。
- [保存] をクリックします。
-
クラスタを作成する
このセクションでは、このチュートリアルで使用できるクラスタを作成します。実際には、複数のクラスタを管理することをおすすめしますが、このチュートリアルでは、クラスタを 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 コンソールで Config Sync の [DASHBOARD] に移動します。
[Config Sync の設定] ボックスで、[add Config Sync のインストール] をクリックします。
[使用可能なクラスタ] テーブルで、
cs-cluster
を選択し、[Config Sync のインストール] をクリックします。数分後、[設定] タブに移動します。
cs-cluster
の [Config Sync のステータス] 列に [インストール済み] と表示されます。Config Sync ダッシュボードで、[パッケージをデプロイ] をクリックします。
[パッケージ デプロイ用のクラスタを選択] テーブルで、
cs-cluster
を選択し、[続行] をクリックします。[Git でホストされているパッケージ] を選択したままにして、[続行] をクリックします。
[パッケージ名] フィールドに「
sample-repository
」と入力します。[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 を開く
-
Google Cloud コンソールで、「Cloud Shell をアクティブにする」をクリックします。
Google Cloud コンソールの下部で Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。
-
次のセクションのコマンドを使用するには、
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)をクリックします。確認するメッセージが表示されたら、もう一度 [削除] をクリックします。
次のステップ
- 構成ファイルの検証について詳細を確認する。