クイックスタート: 複数のリポジトリからの同期

このクイックスタートでは、新しい Google Kubernetes Engine(GKE)クラスタを作成し、Config Sync を使用して Anthos Config Management samples リポジトリの構成ファイルに同期させます。

たとえば、コンプライアンス チームは、組織内の全員が内部ルールに従うようにすることが任務であるとします。その内部ルールを適用するために、コンプライアンス チームでは、構成ファイルを作成して、サンプル リポジトリに追加しました。組織内の各クラスタは、そのリポジトリと同期する必要があり、お客様がクラスタの作成と同期を担当しているとします。

始める前に

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。

    Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

    Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する

環境を準備する

以降のセクションでは、Config Sync で使用できるクラスタを作成して構成します。

クラスタの作成

Config Sync で使用できるクラスタを作成するには、次の手順を行います。

  1. Google Cloud Console で、Google Kubernetes Engine のページに移動します。

    Google Kubernetes Engine に移動

  2. [ 作成] をクリックします。

  3. [Standard] セクションで [構成] をクリックします。

  4. [クラスタの基本] セクションで、次の操作を行います。

    1. クラスタの [名前] に、「cs-cluster」を入力します。
    2. 他のフィールドは、すべて推奨されたデフォルトのままにしておきます。
  5. 左側のメニューで、[クラスタ] の下にある [セキュリティ] を選択します。

  6. [セキュリティ] ページで、[Workload Identity を有効にする] チェックボックスをオンにします。

  7. [作成] をクリックします。クラスタの作成には、数分かかる場合があります。

自身に管理者権限を付与する

クラスタを作成したら、Google Cloud Console で Config Sync を使用するために必要な GKE Hub 管理者ロールを自身に付与します。

  1. Cloud Console で [IAM] ページに移動します。

    [IAM] に移動

  2. [追加] をクリックします。

  3. [新しいプリンシパル] フィールドに、Google Cloud への登録に使用したメールアドレスを入力します。

  4. [ロールを選択] プルダウン リストで、[GKE Hub 管理者] を検索して選択します。

  5. [保存] をクリックします。

Anthos Config Management を有効にする

Anthos Config Management を有効にするには、次の手順を行います。

  1. Cloud Console で [構成管理] ページに移動します。

    [構成管理] に移動

  2. [CONFIG MANAGEMENT を設定] をクリックします。

  3. Config Management API を有効にするには、[次へ] をクリックします。[次へ] をクリックすると、[構成管理の登録済みクラスタを選択する] ページが表示され、クラスタを登録できます。

クラスタの登録

クラスタの作成後に、クラスタをフリートに登録します。

  1. [構成管理の登録済みクラスタを選択する] ページで、[このプロジェクトの未登録のクラスタ] テーブルを探し、cs-cluster を見つけます。
  2. [cs-cluster] の横にある [登録] をクリックします。

    クラスタが正常に登録されると、[構成管理の登録済みクラスタを選択する] テーブルに表示されます。

クラスタを構成する

クラスタが作成されたので、Anthos Config Management サンプル リポジトリの quickstart ディレクトリの構成ファイルと同期するように Config Sync を構成できます。

Google Cloud Console で Config Sync を構成するには、次の手順を行います。

  1. [構成管理の登録済みクラスタを選択する] テーブルで、cs-cluster を選択し、[次へ] をクリックします。
  2. 表示された [Config Sync] ページで、Anthos Config Management バージョン 1.7.0 以降を選択します。このバージョンは、デフォルトで複数のリポジトリからの同期を有効にします。
  3. [Config Sync を有効にする] のチェックボックスをオンのままにします。
  4. [URL] フィールドに https://github.com/GoogleCloudPlatform/anthos-config-management-samples を追加します。
  5. [認証タイプ] プルダウン リストで、[なし] を選択します。
  6. [ブランチ] フィールドに main を追加します。
  7. デフォルト値の HEAD を使用しているため、[タグ / commit] フィールドは空白のままにします。
  8. [ポリシーのディレクトリ] フィールドに、quickstart/multirepo/root を追加します。
  9. デフォルト値の 15 秒と HTTPS をそれぞれ使用するため、[同期の待機時間] と [Git プロキシ] は空白のままにします。
  10. [ソース形式] プルダウン リストで、[非構造化] を選択します。非構造化形式を使用することをおすすめします。この形式では、自分が一番使いやすい方法で構成ファイルを整理できます。
  11. [次へ] をクリックします。
  12. [Policy Controller を有効にする] チェックボックスをオフにして、[完了] をクリックします。

    [構成管理] メニューに戻ります。数分後、[Config Sync のステータス] 列の cs-cluster の横に同期済みと表示されます。

以上で Config Sync がリポジトリと同期し、常にクラスタの状態をリポジトリの構成ファイルに一致させるようになります。

Config Sync のインストールを調べてテストする

以降のセクションでは、Cloud Shell を使用して Config Sync のインストールを確認して、マネージド オブジェクトの変更を試みます。

Cloud Shell を開く

Cloud Shell を起動するには、以下に記載するコマンドを実行します。

  1. Google Cloud Console に移動します。

    Google Cloud Console に移動

  2. コンソールの右上隅にある [Cloud Shell をアクティブにする] ボタン をクリックします。

    コンソールの下部にあるフレーム内で Cloud Shell セッションが開きます。このシェルを使用して、gcloudnomoskubectl の各コマンドを実行します。

  3. 続くセクションでコマンドを使用するには、次のコマンドを実行して 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.
    

クラスタとリポジトリを調べる

quickstart ディレクトリには、ClusterRole、CustomResourceDefinition、モニタリング用 Prometheus Operator の構成、Rolebinding、Namespace、RepoSync があります。リポジトリから読み取るように 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 の Anthos Config Management リポジトリの /quickstart/multirepo/ フォルダに移動して確認できます。

ClusterRole、Reposync、CRD、Rolebindings などの他のオブジェクトも同様の方法で確認できます。

マネージド オブジェクトを手動で変更しようとした場合

Config Sync は、アドミッション Webhook による管理対象オブジェクトのミューテーションを回避します。

Config Sync が管理する Kubernetes オブジェクトを手動で変更して競合する変更を行おうとすると、エラーが発生します。

この動作をテストするには、gamestore Namespace を削除してみます。

kubectl delete namespace gamestore

予想される出力:

error: admission webhook "v1.admission-webhook.configsync.gke.io" denied the request: requester is not authorized to delete managed resources

クリーンアップ

Config Sync の構成ファイルの変更のチュートリアルを行う場合は、まだクリーンアップしないでください。このクイックスタートは、そのチュートリアルの前提条件になります。また、クリーンアップの手順は、そちらにも記載されています。

そのチュートリアルを行わない場合は、このチュートリアルで使用したクラスタを削除してクリーンアップします。

  1. Cloud Console の GKE メニューに移動します。

    GKE に移動

  2. cs-cluster の横にある [操作]() をクリックし、[削除]()をクリックします。

  3. 確認するメッセージが表示されたら、もう一度 [削除] をクリックします。

次のステップ