Google グループを GKE on Azure に接続する

このドキュメントでは、Google グループのメンバーとして GKE on Azure に接続する方法について説明します。

Google グループを使用してクラスタにアクセス権を付与するほうが、個々のユーザーに別々の認可を作成するよりも効率的です。たとえば、クラスタ管理者グループに 50 人のユーザー、編集者グループに 75 人のユーザー、閲覧者グループに 100 人のユーザーを追加するとします。このすべてのユーザーがクラスタに接続できるようにするには、Kubernetes マニフェスト ファイルに 225 人のユーザーの RBAC ルールを作成する必要があります。ただし、Google グループを使用してクラスタへのアクセスを有効にすると、3 つの Google グループに RBAC ルールを作成するだけで済むため、時間を節約できます。

始める前に

Google グループのメンバーとしてクラスタに接続するには、次の前提条件を満たしている必要があります。

  1. Google Cloud CLI が最新バージョンになっている。gcloud CLI の更新の詳細については、gcloud components update をご覧ください。

  2. GKE on Azure バージョン 1.25 以降を使用している。これは、Connect Gateway を使用した kubectl アクセスに必要です。

Google グループを使用してクラスタに接続する

Google グループの GKE on Azure への接続を認可する手順は次のとおりです。

  1. 次のコマンドを使用して connectgateway API と cloudresourcemanager API を有効にします。

      gcloud services enable --project=PROJECT_ID \
          connectgateway.googleapis.com \
          cloudresourcemanager.googleapis.com
    

    PROJECT_ID は、Azure プロジェクトの ID に置き換えます。

  2. プロジェクトのドメインのグループとして gke-security-groups というグループを作成します(存在しない場合)。

  3. gke-security-groups グループ内にクラスタ認証用のサブグループを 1 つ以上作成します。

  4. 新しく作成したサブグループにユーザーを追加します。

  5. Connect Gateway を使用した kubectl アクセスの場合、IAM ロールを Google グループに付与する必要があります。

    1. グループに適切なロールを選択します。このロールにより、グループが Connect Gateway とやり取りする方法が決まります。ロールは roles/gkehub.gatewayAdminroles/gkehub.gatewayEditorroles/gkehub.gatewayReader のいずれかです(クラスタに対して権限を付与することはありません。このステップは後で行います。ここでは、グループのユーザーが Connect Gateway を操作する方法を決定します)。

    2. 次のコマンドを実行して、グループにロールを付与します。

      gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=group:GROUP_NAME@DOMAIN \
        --role=GATEWAY_ROLE
      

      次のように置き換えます。

      • PROJECT_ID: Google プロジェクト ID
      • GROUP_NAME: アクセス権を付与するグループの名前
      • DOMAIN: Google Workspace ドメイン
      • GATEWAY_ROLE: 選択したロール。例: roles/gkehub.gatewayAdminroles/gkehub.gatewayEditorroles/gkehub.gatewayReader など。
  6. Kubernetes マニフェストで、クラスタに対して各 Google グループが持つ権限を定義します。たとえば、次のマニフェストでは Google グループ cluster-admin-team にクラスタ管理者のロールを付与しています。

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: gateway-cluster-admin-group
    subjects:
    - kind: Group
      name: cluster-admin-team@example.com
    roleRef:
      kind: ClusterRole
      name: cluster-admin
      apiGroup: rbac.authorization.k8s.io
    
  7. 次のコマンドを実行して、マニフェストをファイルに保存し、それをクラスタに適用します。

    kubectl apply -kubeconfig=KUBECONFIG_PATH -f FILENAME
    

    次のように置き換えます。

    • KUBECONFIG_PATH: kubeconfig ファイルのパス。
    • FILENAME: 作成したマニフェスト ファイルの名前。

これらの操作を完了すると、特定の Google グループに属するユーザーが、クラスタに接続できるようになります。前述の例では、Google グループ cluster-admin-team に属するユーザーが管理者としてクラスタに接続できます。