Connect を使用するプロダクト

トピックの最終更新日: 2020 年 8 月 11 日

Connect を使用して Kubernetes クラスタを Google Cloud に登録すると、クラスタと Google Cloud コントロール プレーンの間に認証され、暗号化された長期間継続する接続が確立されます。この接続により、クラスタに関する情報が Google Cloud Console に提供され、Anthos Config Management などの Anthos コンポーネントと機能を使用して構成とリソースを管理し、クラスタにデプロイできるようになります。

このトピックでは、Google Cloud と Connect 間の接続特性と、Connect を介してクラスタで動作する Google Cloud 側のコントローラの詳細について説明します。

Google Cloud と Connect 間の接続について

セキュリティ機能のトピックで説明されているとおり、Connect を介して接続されている各クラスタ(クラスタの API サーバーなど)へのリクエストは、Google Cloud コントロール プレーンによってのみ行われ、クラスタからコントロール プレーンへのレスポンスが送信されます(クラスタのサービスとリソースは、Connect 経由でコントロール プレーンへのリクエストを送信できません)。この接続により、承認されたユーザーと Google 側の自動化機能がクラスタにアクセスし、認証できるようになります。

たとえば、Connect を使用すると Google Cloud Console でワークロードとサービスに関する情報を取得できるようになります。また、Anthos Config Management が Connect クラスタ内のエージェントをインストールまたは更新し、同期ステータスを監視できるようになります。さらに、測定エージェントが、接続されたクラスタ内の vCPU の数をモニタリングすることも可能になります。

Connect では、コンテナ イメージ、負荷分散、データベース接続、Logging、Monitoring 用のデータ転送はサポートされません。それぞれ独自の仕組みを使用し、並列に接続を確立する必要があります。

Connect を介した Google Cloud Console ユーザーのクラスタへのアクセス

組織内のユーザーが Google Cloud Console を使用してクラスタにログインすると、ロールベースのアクセス制御(RBAC)によって特定のクラスタ権限が割り当てられます。その権限は、Connect ではなくクラスタが適用します。各ユーザーがクラスタを管理する際に行った操作は、標準の Kubernetes ログで確認できます。

次の表に、ユーザーが Connect を介して Google Cloud Console でクラスタに実行できる操作を示します。

Google Cloud Console のセクション ユーザーができること
Anthos Environ 登録済みのクラスタとワークロードの管理、Anthos コンポーネントの管理。
Kubernetes Engine Environ 登録済みのクラスタとワークロードの管理。
Cloud Run アプリケーションのデプロイと管理。
Marketplace サードパーティ アプリケーションのデプロイと管理。

Connect を介した Google Cloud 側コントローラからクラスタへのアクセス

Google Cloud 側のコントローラは、Connect Agent を使用して Google Cloud コントロール プレーンからクラスタにアクセスします。これらのコントローラは、クラスタで有効にする機能の管理と自動化を行います。たとえば、Anthos Config Management の Google Cloud 側のコントローラはクラスタ内エージェントのライフサイクルをサポートし、複数のクラスタで実行されている Anthos Config Management のステータスの構成と表示に使用する UI を提供します。

複数のコントローラが異なる ID でクラスタにアクセスする場合、Kubernetes の監査ログで各コントローラのアクティビティを確認できます。

次の表に、Google Cloud 側のコントローラが Connect を介してどのように動作するかをまとめます。この表は、コントローラに関する重要な詳細(必要な権限、Kubernetes 監査ログの ID、それらを無効にするかどうか)を示しています。

ここで、コンポーネントを無効にするとは、コンポーネントが完全にオフになり、コンポーネントのどの部分もクラスタで使用できなくなることを意味します。

コンポーネント名 無効化が可能か クラスタのロール / RBAC 権限 説明 クラスタ監査ログの ID
Feature Authorizer いいえ(デフォルトでは有効 cluster-admin

Feature Authorizer は、Kubernetes クラスタで動作する Environ が有効なコンポーネント(または機能)に RBAC を追加し、各コンポーネントが機能の実行に必要な特定の権限のみを持つようにします。

プロジェクトに登録されたメンバーシップがある限り、Feature Authorizer は無効にできません。

詳細については、Environ の機能の認証をご覧ください。

service-project-number@gcp-sa-gkehub.iam.gserviceaccount.com
Anthos Config Management はい(デフォルトでは無効 cluster-admin

Anthos Config Management コントローラは、独自のクラスタ内エージェントを管理し、Environ 内のすべてのクラスタの Anthos Config Management のステータスを表示する UI を提供します。

コントローラは、クラスタ内コンポーネントをインストールして、ユーザーに代わってすべてのタイプの Kubernetes 構成をデプロイするために必要な権限を持つローカル サービス アカウントを作成します。クラスタ内コンポーネントをインストールまたは管理しない場合、Anthos Config Management コントローラがクラスタ内エージェントからステータス情報を読み取ります。

service-project-number@gcp-sa-acm.iam.gserviceaccount.com
使用状況測定 いいえ(デフォルトでは有効 RBAC の定義をご覧ください。

測定コントローラは、課金サービスを提供するために、接続されたクラスタに関する基本情報を読み取ります。

このコントローラには、次の処理を行うための権限が必要です。

  • ノードの vCPU 容量に基づく測定。
  • metering.gke.io/usagerecords カスタム リソースの監視と削除。
  • anthos.gke.io/entitlements カスタム リソースの作成と更新。

プロジェクト内に登録されたメンバーシップがある限り、メータリングは無効にできません。

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