構成の概要

このページでは、Anthos Config Management が Git から読み取り、クラスタに自動的に適用するファイルであるコンフィグについて説明します。構成を作成してリポに commit できます。

Anthos Config Management はコンフィグを使用して、登録されたクラスタを同期させます。コンフィグはリポジトリに保存されている YAML または JSON ファイルであり、これには kubectl apply コマンドを使用して手動でクラスタに適用できるものと同じタイプの構成情報が含まれています。このトピックでは、コンフィグが動作するしくみ、コンフィグの記述方法、Anthos Config Management が登録済みクラスタにコンフィグを適用する方法について説明します。

Anthos Config Management は、多数のクラスタを管理するクラスタ オペレータ向けに設計されています。Anthos Config Management にすべてのクラスタの名前空間、Role、RoleBinding、ResourceQuota、その他の重要な Kubernetes オブジェクトの管理を任せることで、運用するクラスタをビジネスやコンプライアンスの基準に確実に準拠させることができます。クラスタ内に存在可能な Kubernetes オブジェクトのコンフィグを作成できます。

運用中のコンフィグの操作

次のディシジョン ツリーは、運用中に Anthos Config Management によって管理されている仮想的なクラスタのグループでのさまざまな構成変更の結果を示したものです。この図に従ってクラスタ オペレータによる仮想的なアクションとその結果を説明し、Anthos Config Management がどのように機能するかを示します。

このクラスタではサンプルリポが使用されています。 クラスタはすでに Operator に登録されています。

Anthos Config Management の運用中のアクションとその結果を示すディシジョン ツリーの例

  • Anthos Config Management は、次の少なくとも 1 つが当てはまる場合にのみコンフィグを適用します。

    • 関連するコンフィグがリポに存在する
    • アノテーション configmanagement.gke.io/managed: enabled が Kubernetes オブジェクトに適用されている

    foo-corp クラスタには pod-accountant という名前の ClusterRole がありますが、これには configmanagement.gke.io/managed: enabled アノテーションが付いておらず、ClusterRole オブジェクト用のコンフィグはリポジトリには存在しません。Anthos Config Management は pod-accountant ClusterRole を構成しません。

  • 変更をリポに commit すると、Anthos Config Management によって関連する変更が自動的に適用されます。

    クラスタ管理者が、リポジトリ内の cluster/quota-viewer-clusterrole.yaml ファイルにコンフィグを commit します。このコンフィグは quota-viewer という ClusterRole を定義します。このコンフィグは cluster/ ディレクトリに作成されているため、登録されているすべてのクラスタに関係します。Anthos Config Management は、新しく commit されたコンフィグを検出して適用します。これで、quota-viewer ClusterRole がクラスタに存在するようになり、configmanagement.gke.io/managed: enabled アノテーションが付けられ、quota-viewer-clusterrole.yaml の内容と同期されます。

    しばらくして、リポジトリから cluster/quota-viewer-clusterrole.yaml ファイルを削除されると、この変更は Anthos Config Management によって検出され、quota-viewer ClusterRole はクラスタから削除されます。

  • configmanagement.gke.io/managed: enabled アノテーションを追加して、含まれている既存のオブジェクトの管理を開始できます。

    foo-corp クラスタには、shipping-dev という名前の名前空間ディレクトリがあります。 この名前空間ディレクトリ内には、job-creator という名前の Role のコンフィグが存在し、configmanagement.gke.io/managed: enabled アノテーションが付けられています。namespaces/dev/shipping-dev/job-creator-role.yaml ファイルが更新されると、Operator によって変更が検出され、適用されます。

  • Anthos Config Management では、グループ化された階層的な方法で名前空間に構成変更を適用できます。

    foo-corp クラスタには、pod-creator という名前の RoleBinding があり、それに対応する /namespaces/pod-creator/pod-creator.yaml ファイルがリポジトリに存在します。ディレクトリ構造を見ると、shipping-prodshipping-stagingshipping-dev はすべて shipping-dev-backend 抽象名前空間ディレクトリ内にある名前空間であることがわかります(それぞれが、名前空間を定義する namespace.yaml ファイルを持っています)。これらの各名前空間は pod-creator RoleBinding を継承します。

    しばらくして、shipping-prod 名前空間ディレクトリ内の pod-creator RoleBinding が変更されると、この変更は Operator によって検出され、リポジトリ内のコンフィグと一致するように pod-creator が更新されます。

    最終的に、pod-creator コンフィグがリポから削除されると、 Anthos Config Management によって変更が検出され、3 つの名前空間のそれぞれから pod-creator RoleBinding が削除されます。

  • Anthos Config Management を使用すると、変更を手動で適用できますが、オブジェクトに configmanagement.gke.io/managed: enabled アノテーションがない場合は、オブジェクトを管理しません。

    shipping-prod 名前空間に secret-admin という新しい Role が手動で作成されるとします。secret-admin Role のコンフィグはリポジトリに存在せず、secret-admin Role には、configmanagement.gke.io/managed: enabled アノテーションは付いていません。したがって、Anthos Config Management は何もしません。

    しばらくして、secret-admin Role に configmanagement.gke.io/managed:enabled アノテーションが手動で追加されると、リポジトリにはまだ対応するコンフィグがないため、Anthos Config Management は名前空間から secret-admin Role を削除します。

  • 対応するコンフィグが存在する名前空間が見つからない場合、Anthos Config Management はその名前空間を作成します。

    クラスタに存在しない audit 名前空間の新しいコンフィグが commit されると、Anthos Config Management によりクラスタに audit 名前空間が作成され、それに configmanagement.gke.io/managed: enabled アノテーションが適用されます。

  • Anthos Config Management は、configmanagement.gke.io/managed: enabled アノテーションのない名前空間のコンフィグを管理できます。

    shipping-dev 名前空間がクラスタに存在しますが、configmanagement.gke.io/managed: enabled アノテーションが付いていません。ただし、リポジトリ内の shipping-dev 名前空間ディレクトリには job-creators という RoleBinding があり、これには configmanagement.gke.io/managed: enabled アノテーションが付いています。

    shipping-dev 名前空間のコンフィグがリポに追加されましたが、job-creators RoleBinding のコンフィグはありません。この RoleBinding にはコンフィグが存在しませんが、RoleBinding に configmanagement.gke.io/managed: enabled アノテーションがあるため、Anthos Config Management により、この RoleBinding は削除されます。

    その後、job-creators RoleBinding のコンフィグが追加されると、そのコンフィグで定義されたプロパティを使用して job-creators RoleBinding が再作成されます。

次のステップ