フリートを使用すると、複数のクラスタで同時にエンタープライズ機能とその他のフリート対応機能を管理できます。これによって、たとえば、一連の共通のポリシーを適用することや、クラスタのフリート全体に単一のサービス メッシュを作成することができます。このページでは、フリートの機能を管理する方法の概要について説明します。個別の機能を構成して使用することの詳細については、ドキュメントをご覧ください。
Google Kubernetes Engine(GKE)Enterprise エディションを有効にしている場合は、Google Cloud コンソールで機能を管理できます。すべてのフリート ユーザーは、コマンドラインを使用して機能を管理できます。
一部の機能によって、フリート クラスタでフリートレベルのデフォルトの機能構成を作成できます。たとえば、フリートで作成したすべてのクラスタに Policy Controller をインストールして構成するようにできます。フリートレベルのデフォルト構成は、GKE Enterprise が有効なユーザーのみが使用できます。
クラスタでのフリートレベルの機能管理の「仕組み」について詳しくは、機能の認可セクションをご覧ください。
フリートレベルの機能
次の機能をフリートレベルで管理できます。
- マネージド Cloud Service Mesh
- セキュリティ ポスチャー
- Config Sync
- Policy Controller
- GKE Identity Service
- マルチクラスタ Ingress
- マルチクラスタ Service(GKE クラスタのみ)
- Binary Authorization の継続的検証
このリスト以外にも、フリートを使用または必要とする機能があります。たとえば、フリートの Workload Identity 連携は、クラスタがフリートのメンバーであることに依存しますが、フリートレベルでの構成は必要ありません。Cloud Service Mesh では、すべてのコントロール プレーンとセットアップ オプションにフリート メンバーシップが必要です。
GKE Enterprise を有効にしている場合は、追加料金なしでこれらの機能をすべて使用できます。GKE スタンダード ティアを使用している場合は、これらの機能のサブセットごとに追加料金が発生します。各機能を利用できる環境については、デプロイ オプションのページをご覧ください。
フリート単位の機能を設定する
以降のセクションでは、フリートレベルの機能を有効にして構成する方法について説明します。
通常、フリートレベルの機能を使用するには、フリートで機能を有効にして、フリート メンバーに構成します。通常、この機能をクラスタやワークロードで実際に使用するには、いくつかの構成(または追加でその他の設定)が必要になります。
GKE Enterprise を有効にしている場合は、一部の機能にフリートのデフォルトのクラスタ構成を作成できます。つまり、フリートで作成する新しいエンタープライズ クラスタは、すでに構成されている機能に指定済みの設定で作成されます。他の機能の場合、またはエンタープライズ ティアを使用していない場合は、個々のクラスタで機能を構成する必要があります。
フリートレベルのデフォルトを使用して機能を有効にする
GKE Enterprise を使用すると、一部の機能について GKE クラスタのフリートレベルのデフォルト設定を作成できます。これらの設定を作成すると、エンタープライズ ティアに登録し、クラスタの作成時に登録した GKE クラスタが、フリートレベルの構成で自動的に構成されます。たとえば、Policy Controller のデフォルトを設定すると、フリートで作成する新しいクラスタごとに、指定したバージョンの Policy Controller がインストールされ、指定したポリシー バンドルやその他の設定が適用されます。フリートのデフォルト設定は、既存のフリート メンバー クラスタに自動的に適用されませんが、Google Cloud コンソールで既存のクラスタをデフォルト設定に同期できます。
フリートレベルのデフォルトで機能を有効にする一般的なプロセスは次のとおりです。
コンソール
フリートのホスト プロジェクトで、[機能マネージャー] ページに移動します。
Google Cloud コンソールでフリートレベルのデフォルトを構成できる機能は、[フリートレベルの機能管理] に表示されています。
選択した機能で [構成] をクリックし、機能の有効化とデフォルトの設定を行います。
省略可: フリート内の既存のクラスタを選択して、新しい設定に同期します。
gcloud
- 機能に選択したフリートのデフォルトを指定する YAML ファイルを作成します。
機能の
enable
コマンドを実行し、構成ファイルを渡します。フリートレベルの機能ごとに、専用のenable
コマンドがあります。たとえば、mesh.yaml
で指定されたデフォルト構成を使用してフリートで Cloud Service Mesh を有効にするには、フリートのホスト プロジェクトで次のコマンドを実行します。gcloud container fleet mesh enable --fleet-default-member-config mesh.yaml
一部の機能では、fleet create
コマンドまたは fleet update
コマンドのパラメータでフリートのデフォルトを指定することもできます。詳しくは、選択した機能のガイドをご覧ください。
Terraform
選択したフリートのデフォルトを指定する fleet_default_member_config
ブロックを使用して google_gke_hub_feature
リソースを定義します。詳細とサポートされているフリート機能については、Terraform のドキュメントをご覧ください。
すべての機能が、これらのオプションのすべてを使用するフリートのデフォルト構成をサポートしているわけではありません。サポートされている各機能のフリートのデフォルトを設定する方法については、以下のドキュメントをご覧ください。
- Cloud Service Mesh
- Config Sync
- Policy Controller
- セキュリティ ポスチャー
- GKE Identity Service(コマンドラインのみ)
- Binary Authorization の継続的検証(プレビュー版、コマンドラインのみ)
クラスタごとにフリート機能を有効にして構成する
フリートのデフォルト構成の代わりに、個々のクラスタでフリート機能を個別に構成することもできます。次のような場合は、この方法が適しています。
- GKE Enterprise が有効になっていない。
- 機能を使用するように既存のクラスタを構成したい。
- フリートのデフォルト構成が使用できないサービス、または選択したツールで使用できないサービスを使用したい。
機能を有効にする
この手順はすべての機能で必要なわけではありません。詳しくは、選択した機能のガイドをご覧ください。
コンソール
GKE Enterprise を有効にしている場合は、Google Cloud コンソールの [機能マネージャー] ページで機能を有効にできます。
フリートで機能を有効にするには:
フリートのホスト プロジェクトで、[機能マネージャー] ページに移動します。
このページで有効にできるが、構成できない機能は、[他のエンタープライズ対応機能の管理] に表示されています。
有効にする機能のパネルで [有効にする] をクリックします。
表示された詳細パネルの [有効にする...] ボタンをクリックします。
gcloud
フリートレベルの機能ごとに、専用の enable
コマンドがあります。たとえば、フリートで GKE Identity Service を有効にするには、フリートのホスト プロジェクトで次のコマンドを実行します。
gcloud container fleet identity-service enable
コマンドの完全なリストや、個別の機能についての詳細を説明する一連のドキュメントについては、Google Cloud SDK リファレンス ドキュメント(およびそのベータ版とアルファ版のドキュメント)をご覧ください。
機能がすでに有効になっているかどうかを確認する方法と、他の機能のステータスを確認する方法については、フリート機能のステータスを確認するをご覧ください。
個々のクラスタを構成する
その後の構成手順は、機能によって異なります。詳細については、次のガイドをご覧ください。
フリート機能のステータスを確認する
GKE Enterprise を有効にしている場合は、Google Cloud コンソールの [機能マネージャー] ダッシュボードでフリート機能のステータスを確認するのが最も簡単な方法です。
サポートされている機能については、次のステータスのフリート クラスタの数が表示されます。
- この機能が有効になっている
- この機能の有効化に成功している
- この機能に関する警告がある
- この機能に関するエラーがある
また、機能にフリートのデフォルト設定が構成されているかどうかと、これらの設定が適用されているフリート メンバー クラスタの数も確認できます。有効になっている機能については、詳細ページに移動して、その機能を使用するクラスタを確認できます。構成されている場合は、クラスタを選択してフリートのデフォルト設定に同期できます。
このページで構成できない機能([他のエンタープライズ対応機能の管理] に表示)については、フリートで機能が有効になっているかどうかを確認できます。また、詳細パネルを表示して、機能がインストールされているクラスタの数やその他の関連情報を確認することもできます。
gcloud を使用して機能のステータスを表示する
gcloud
次のコマンドを実行して、有効になっているすべての機能を一覧表示します。
gcloud container fleet features list
フリートレベルの機能を無効にする
フリートレベルで機能を無効にするには、フリートホスト プロジェクトで次のようにします。
コンソール
Google Cloud コンソールで無効にできるのは、[他のエンタープライズ対応機能の管理] に表示されているフリート機能のみです。
フリートのホスト プロジェクトで、[機能マネージャー] ページに移動します。
無効にする機能のパネルで [詳細] をクリックします。
表示された詳細パネルの [無効にする...] ボタンをクリックします。
gcloud
フリートレベルの機能ごとに、専用の disable
コマンドがあります。たとえば、フリートで Cloud Service Mesh を無効にするには、フリートのホスト プロジェクトで次のコマンドを実行します。
gcloud container fleet mesh disable
コマンドの完全なリストや、個別の機能についての詳細を説明する一連のドキュメントについては、Google Cloud SDK リファレンス ドキュメント(およびそのベータ版とアルファ版のドキュメント)をご覧ください。
フリートで機能を無効にした後に想定される動作については、関連する機能のドキュメントをご覧ください。多くの場合、関連する構成は引き続きクラスタに存在しますが、フリート コマンドや Google Cloud コンソールを使用してその機能を一元管理できなくなります。
機能の認可
フリートレベルで機能を管理するには、ロールベースのアクセス制御を通じて機能を承認してクラスタで機能を実行する必要があります。Google Cloud は、フリート対応機能のアクセス許可を自動的に設定、更新する Feature Authorizer というサービスを使用します。これにより、特に Google が機能の更新をリリースする際に、すべてのクラスタで機能の権限を手動で設定する必要がなくなります。
クラスタを登録すると、クラスタに適用されるマニフェストには、Feature Authorizer にクラスタでの cluster-admin
ロールを付与する ClusterRoleBinding
が含まれ、ロールが service-project-number@gcp-sa-gkehub.iam.gserviceaccount.com
という名前のサービス アカウントに関連付けられます。
プロジェクトでフリート対応機能を無効にすると、Feature Authorization は対象機能の対応する ClusterRole
と ClusterRoleBinding
を削除します。これにより、クラスタで対象機能が動作しなくなります。
監査ログで Feature Authorizer を表示する
GKE の監査ログで Feature Authorizer のアクティビティを表示するには:
Google Cloud コンソールでログ エクスプローラを開きます。
次の高度なクエリを実行します。
resource.type="k8s_cluster" resource.labels.cluster_name="CLUSTER_NAME" resource.labels.location="CLUSTER_LOCATION" protoPayload.authenticationInfo.principalEmail="system:serviceaccount:gke-connect:connect-agent-sa" protoPayload.authenticationInfo.authoritySelector="service-PROJECT_NUMBER@gcp-sa-gkehub.iam.gserviceaccount.com"
次のように置き換えます。
CLUSTER_NAME
: ログを表示するクラスタの名前。CLUSTER_LOCATION
: クラスタが作成された Google Cloud のロケーション。PROJECT_NUMBER
: クラスタを所有するプロジェクトの Google Cloud プロジェクト番号。
GKE 以外のクラスタの場合は、Kubernetes 監査ログが保存されている場所を確認し、同様のクエリを実行します。