Connect を使用して Kubernetes クラスタを Google Cloud に登録すると、クラスタと Google Cloud コントロール プレーンの間に認証され、暗号化された長期間継続する接続が確立されます。この接続により、クラスタに関する情報が Google Cloud コンソールに提供され、Config Management などの GKE Enterprise コンポーネントと機能を使用して構成とリソースを管理し、クラスタにデプロイできるようになります。
このトピックでは、Google Cloud と Connect 間の接続特性と、Connect を介してクラスタで動作する Google Cloud 側のコントローラの詳細について説明します。
Google Cloud と Connect 間の接続について
セキュリティ機能のトピックで説明されているとおり、Connect を介して接続されている各クラスタ(クラスタの API サーバーなど)へのリクエストは、Google Cloud コントロール プレーンによってのみ行われ、クラスタからコントロール プレーンへのレスポンスが送信されます(クラスタのサービスとリソースは、Connect 経由でコントロール プレーンへのリクエストを送信できません)。この接続により、承認されたユーザーと Google 側の自動化機能がクラスタにアクセスし、認証できるようになります。
たとえば、Connect を使用すると Google Cloud コンソールでワークロードとサービスに関する情報を取得できるようになります。また、Config Management が Connect クラスタ内のエージェントをインストールまたは更新し、同期ステータスを監視できるようになります。さらに、測定エージェントが、接続されたクラスタ内の vCPU の数をモニタリングすることも可能になります。
Connect では、コンテナ イメージ、負荷分散、データベース接続、Logging、Monitoring 用のデータ転送はサポートされません。それぞれ独自の仕組みを使用し、並列に接続を確立する必要があります。
Connect を介した Google Cloud コンソール ユーザーのクラスタへのアクセス
組織内のユーザーが Google Cloud コンソールを使用してクラスタにログインすると、ロールベースのアクセス制御(RBAC)によって特定のクラスタ権限が割り当てられます。その権限は、Connect ではなくクラスタが適用します。各ユーザーがクラスタを管理する際に行った操作は、標準の Kubernetes ログで確認できます。
次の表に、ユーザーが Connect を介して Google Cloud コンソールでクラスタに実行できる操作を示します。
Google Cloud コンソールのセクション | ユーザーができること |
---|---|
Kubernetes Engine | フリート登録済みのクラスタとワークロードの管理。GKE Enterprise コンポーネントの管理。 |
Knative serving | サービスとアプリケーションの構築、デプロイ、管理。 |
Marketplace | サードパーティ アプリケーションのデプロイと管理。 |
Connect を介した Google Cloud 側コントローラからクラスタへのアクセス
Google Cloud 側のコントローラは、Connect Agent を使用して Google Cloud コントロール プレーンからクラスタにアクセスします。これらのコントローラは、クラスタで有効にする機能の管理と自動化を行います。たとえば、Config Management の Google Cloud 側のコントローラはクラスタ内エージェントのライフサイクルをサポートし、複数のクラスタで実行されている Config Management のステータスの構成と表示に使用する UI を提供します。
複数のコントローラが異なる ID でクラスタにアクセスする場合、Kubernetes の監査ログで各コントローラのアクティビティを確認できます。
次の表に、Google Cloud 側のコントローラが Connect を介してどのように動作するかをまとめます。この表は、コントローラに関する重要な詳細(必要な権限、Kubernetes 監査ログの ID、それらを無効にするかどうか)を示しています。
ここで、コンポーネントを無効にするとは、コンポーネントが完全にオフになり、コンポーネントのどの部分もクラスタで使用できなくなることを意味します。
コンポーネント名 | 無効化が可能か | クラスタのロール / RBAC 権限 | 説明 | クラスタ監査ログの ID |
---|---|---|---|---|
Feature Authorizer | いいえ(デフォルトでは有効) | cluster-admin |
Feature Authorizer は、Kubernetes クラスタで動作する フリートが有効なコンポーネント(または機能)に RBAC を追加し、各コンポーネントが機能の実行に必要な特定の権限のみを持つようにします。 プロジェクトに登録されたメンバーシップがある限り、Feature Authorizer は無効にできません。 詳細については、フリートでの機能承認をご覧ください。 |
service-project-number@gcp-sa-gkehub.iam.gserviceaccount.com |
構成管理 | はい(デフォルトでは無効) | cluster-admin |
Config Management コントローラは、独自のクラスタ内エージェントを管理し、フリート内のすべてのクラスタの Config Management のステータスを表示する UI を提供します。 コントローラは、クラスタ内コンポーネントをインストールして、ユーザーに代わってすべてのタイプの Kubernetes 構成をデプロイするために必要な権限を持つローカル サービス アカウントを作成します。クラスタ内コンポーネントをインストールまたは管理しない場合、Config Management コントローラがクラスタ内エージェントからステータス情報を読み取ります。 |
service-project-number@gcp-sa-acm.iam.gserviceaccount.com |
使用状況測定 | いいえ(デフォルトでは有効) | RBAC の定義をご覧ください。 | 測定コントローラは、課金サービスを提供するために、接続されたクラスタに関する基本情報を読み取ります。 このコントローラには、次の処理を行うための権限が必要です。
プロジェクト内に登録されたメンバーシップがある限り、メータリングは無効にできません。 |
service-project-number@gcp-sa-mcmetering.iam.gserviceaccount.com |
Connect を介した特定のコンポーネントに対する RBAC 操作
次の API 定義は、Connect を介して操作するさまざまなコンポーネント リソースに対するアクセス制御の権限を示しています。
Connect を介した使用量メータリングの RBAC
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
hub.gke.io/owner-feature: metering
hub.gke.io/project: [PROJECT_ID]
name: metering
selfLink: /apis/rbac.authorization.k8s.io/v1/clusterroles/metering
rules:
- apiGroups:
- ""
resources:
- nodes
verbs:
- get
- watch
- list
- apiGroups:
- metering.gke.io
resources:
- usagerecords
verbs:
- get
- list
- watch
- delete
- apiGroups:
- anthos.gke.io
resources:
- entitlements
verbs:
- create
- delete
- get
- list
- update
- watch
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- create
- list
- watch
- apiGroups:
- apiextensions.k8s.io
resourceNames:
- entitlements.anthos.gke.io
resources:
- customresourcedefinitions
verbs:
- get