第1章 Kubernetes Operator のマルチクラスターエンジンの概要

1.1. Kubernetes operator のマルチクラスターエンジンについて

Kubernetes operator のマルチクラスターエンジンは、Red Hat OpenShift Container Platform にマルチクラスターライフサイクル機能を提供するクラスターライフサイクルの Operator です。The multicluster engine for Kubernetes operator 2.1 support matrix、および Kubernetes operator のマルチクラスターエンジンに関する次のドキュメントを参照してください。

1.1.1. 要件および推奨事項

Kubernetes Operator のマルチクラスターエンジンをインストールする前に、次のシステム設定要件と設定を確認してください。

重要: 2.5 より前の Red Hat Advanced Cluster Management for Kubernetes がインストールされていないクラスターには、Kubernetes Operator 用のマルチクラスターエンジンをインストールする必要があります。バージョン 2.5 以降で Red Hat Advanced Cluster Management を使用している場合、Kubernetes 用のマルチクラスターエンジンはすでにクラスターにインストールされています。

1.1.1.1. サポートされているブラウザーとプラットフォーム

multicluster engine for Kubernetes operator 2.1 support matrix で、サポートされているブラウザーと機能に関する重要な情報を参照してください。

1.1.2. ネットワーク

Kubernetes オペレーターハブクラスターおよびマネージドクラスター用のマルチクラスターエンジンのネットワーク要件について説明します。

重要: 信頼できる CA バンドルは、Kubernetes オペレーターの namespace のマルチクラスターエンジンで使用できますが、その拡張にはネットワークへの変更が必要です。信頼できる CA バンドル ConfigMap は、trusted-ca-bundle のデフォルト名を使用します。この名前は、TRUSTED_CA_BUNDLE という名前の環境変数でオペレーターに提供することで変更できます。詳細については、Red Hat OpenShift Container Platform の ネットワーク セクションの クラスター全体のプロキシーの設定 を参照してください。の上。

1.1.2.1. ハブクラスターのネットワーク設定

ハブクラスターネットワークの設定を参照できます。

次の表のハブクラスターネットワーク要件を参照してください。

方向接続ポート (指定されている場合)

送信

クラウドプロバイダーの API

 

Outbound

プロビジョニングしたマネージドクラスターの Kubernetes API サーバー

6443

送信および受信

マネージドクラスターの WorkManager サービスルート

443

受信

マネージドクラスターからの Kubernetes クラスター用のマルチクラスターエンジンの Kubernetes API サーバー

6443

1.1.2.2. マネージドクラスターのネットワーク設定

マネージドクラスターネットワークの要件については、以下の表を参照してください。

方向接続ポート (指定されている場合)

送信および受信

Kubernetes クラスター用のマルチクラスターエンジンの Kubernetes API サーバー

6443

1.1.2.3. インフラストラクチャーオペレーターを使用してインストールする場合の追加のネットワーク要件

Infrastructure Operator を使用してベアメタルマネージドクラスターをインストールする場合は、以下の表で追加のネットワーク要件について参照してください。

方向プロトコル接続ポート (指定されている場合)

ISO/rootfs イメージリポジトリーへのハブクラスターの送信

HTTPS (非接続環境では HTTP)

Red Hat Advanced Cluster Management ハブで ISO イメージを作成するのに使用します。

443 (非接続環境では 80)

単一ノードの OpenShift Container Platform マネージドクラスターでの BMC インターフェイスへのハブクラスター送信

HTTPS (非接続環境では HTTP)

OpenShift Container Platform クラスターをブートします。

443

OpenShift Container Platform マネージドクラスターからハブクラスターへの送信

HTTPS

assistedService ルートを使用してハードウェア情報を報告します。

443

OpenShift Container Platform マネージドクラスターから ISO/rootfs イメージリポジトリーへの送信

HTTP、HTTPS、または TLS

rootfs イメージをダウンロードします。

HTTP 80, HTTPS 443

OpenShift Container Platform 管理クラスターから registry.redhat.com イメージリポジトリーへのアウトバウンド

HTTPS/TLS

イメージをダウンロードします

443

1.1.2.4. Hive Operator を使用してインストールする場合の追加のネットワーク要件

Central Infrastructure Management の使用が含まれる Hive Operator を使用してベアメタルマネージドクラスターをインストールする場合は、ハブクラスターと libvirt プロビジョニングホスト間で、レイヤー 2 またはレイヤー 3 のポート接続を設定する必要があります。プロビジョニングホストへのこの接続は、Hive を使用したベースベアメタルクラスターの作成時に必要になります。詳細は、以下の表を参照してください。

方向プロトコル接続ポート (指定されている場合)

libvirt プロビジョニングホストへのハブクラスターの送信および受信

IP

Hive Operator がインストールされているハブクラスターを、ベアメタルクラスターの作成時にブートストラップとして機能する libvirt プロビジョニングホストに接続します。

 

注記:これらの要件はインストール時にのみ適用され、Infrastructure Operator でインストールされたクラスターのアップグレード時には必要ありません。

1.1.2.4.1. ホステッドコントロールプレーンのネットワーク要件 (テクノロジープレビュー)

ホステッドコントロールプレーンを使用する場合、HypershiftDeployment リソースには、次の表に示すエンドポイントへの接続が必要です。

方向接続ポート (指定されている場合)

Outbound

OpenShift Container Platform コントロールプレーンおよびワーカーノード

 

Outbound

Amazon Web Services のホステッドクラスターのみ: AWS API および S3 API へのアウトバウンド接続

 

Outbound

Microsoft Azure クラウドサービスのホステッドクラスターのみ: Azure API へのアウトバウンド接続

 

Outbound

coreOS の ISO イメージと OpenShift Container Platform Pod のイメージレジストリーを格納する OpenShift Container Platform イメージリポジトリー

 

1.1.3. コンソールの概要

OpenShift Container Platform コンソールプラグインは OpenShift Container Platform 4.10 Web コンソールで利用可能であり、統合することができます。この機能を使用するには、コンソールプラグインを有効にしておく必要があります。Kubernetes Operator 用のマルチクラスターエンジンは、Infrastructure および Credentials のナビゲーション項目から特定のコンソール機能を表示します。Red Hat Advanced Cluster Management をインストールすると、より多くのコンソール機能が表示されます。

注記:プラグインが有効になっている OpenShift Container Platform 4.10 の場合は、ドロップダウンメニューから All Clusters を選択することにより、クラスタースイッチャーから OpenShift Container Platform コンソール内で Red Hat Advanced Cluster Management にアクセスできます。

  1. プラグインを無効にするには、OpenShift Container Platform コンソールの Administrator パースペクティブにいることを確認してください。
  2. ナビゲーションで Administration を探し、Cluster Settings をクリックし、続いて Configuration タブをクリックします。
  3. Configuration resources のリストから、operator.openshift.io API グループが含まれる Console リソースをクリックします。この API グループには、Web コンソールのクラスター全体の設定が含まれています。
  4. Console plug-ins タブをクリックします。mce プラグインがリスト表示されます。注記: Red Hat Advanced Cluster Management がインストールされている場合は、acm としても表示されます。
  5. テーブルからプラグインのステータスを変更します。しばらくすると、コンソールを更新するように求められます。

1.1.4. ロールベースのアクセス制御

Kubernetes Operator のマルチクラスターエンジンは、ロールベースのアクセス制御 (RBAC) をサポートします。ロールによって実行できるアクションが決まります。RBAC は、Red Hat OpenShift Container Platform と同様に Kubernetes の承認メカニズムに基づいています。RBAC の詳細は、OpenShift Container Platform ドキュメント の OpenShift Container Platform RBAC の概要を参照してください。

注記: ユーザーロールのアクセス権がない場合には、コンソールのアクションボタンが無効になります。

コンポーネントでサポートされる RBAC の詳細は、以下のセクションを参照してください。

1.1.4.1. ロールの概要

クラスター別の製品リソースと、スコープに namespace が指定されている製品リソースがあります。アクセス制御に一貫性を持たせるため、クラスターのロールバインドと、namespace のロールバインドをユーザーに適用する必要があります。サポートされている次のロール定義の表リストを表示します。

1.1.4.1.1. ロール定義表
ロール定義

cluster-admin

これは OpenShift Container Platform のデフォルトのロールです。cluster-admin ロールへのクラスターバインディングがあるユーザーは、すべてのアクセス権限を持つ OpenShift Container Platform のスーパーユーザーです。

open-cluster-management:cluster-manager-admin

open-cluster-management:cluster-manager-admin ロールにクラスターをバインドするユーザーは、すべてのアクセス権を持つスーパーユーザーです。このロールを指定すると、ユーザーは ManagedCluster リソースを作成できます。

open-cluster-management:admin:<managed_cluster_name>

open-cluster-management:admin:<managed_cluster_name> ロールへのクラスターバインディングがあるユーザーには、managedcluster-<managed_cluster_name> という名前の ManagedCluster リソースに管理者アクセス権が付与されます。ユーザーにマネージドクラスターがある場合は、このロールが自動的に作成されます。

open-cluster-management:view:<managed_cluster_name>

open-cluster-management:view:<managed_cluster_name> ロールへのクラスターバインディングがあるユーザーには、managedcluster-<managed_cluster_name> という名前の ManagedCluster リソースの表示権限が付与されます。

open-cluster-management:managedclusterset:admin:<managed_clusterset_name>

open-cluster-management:managedclusterset:admin:<managed_clusterset_name> ロールへのクラスターバインドのあるユーザーには、<managed_clusterset_name> という名前の ManagedCluster リソースへの管理者アクセスがあります。また、ユーザーには managedcluster.cluster.open-cluster-management.ioclusterclaim.hive.openshift.ioclusterdeployment.hive.openshift.io および clusterpool.hive.openshift.io リソースへの管理者アクセスがあり、cluster.open-cluster-management.ioclusterset=<managed_clusterset_name> のマネージドクラスターセットのラベルが付いています。ロールバインドは、クラスターセットの使用時に自動的に生成されます。リソースの管理方法については、ManagedClusterSet の作成と管理 を参照してください。

open-cluster-management:managedclusterset:view:<managed_clusterset_name>

open-cluster-management:managedclusterset:view:<managed_clusterset_name> ロールへのクラスターバインディングがあるユーザーには、<managed_clusterset_name>` という名前の ManagedCluster リソースへの表示権限が付与されます。また、ユーザーには managedcluster.cluster.open-cluster-management.ioclusterclaim.hive.openshift.ioclusterdeployment.hive.openshift.io および clusterpool.hive.openshift.io リソースへの表示権限があり、cluster.open-cluster-management.ioclusterset=<managed_clusterset_name> のマネージドクラスターセットのラベルが付いています。マネージドクラスターセットリソースを管理する方法の詳細については、ManagedClusterSet の作成と管理 を参照してください。

admin、edit、view

admin、edit、および view は OpenShift Container Platform のデフォルトロールです。これらのロールに対して namespace に限定されたバインドが指定されているユーザーは、特定の namespace 内の open-cluster-management リソースにアクセスでき、同じロールに対してクラスター全体のバインドが指定されている場合には、クラスター全体の全 open-cluster-management リソースにアクセス権があります。

重要:

  • ユーザーは OpenShift Container Platform からプロジェクトを作成できます。これにより、namespace の管理者ロール権限が付与されます。
  • ユーザーにクラスターへのロールアクセスがない場合、クラスター名は表示されません。クラスター名は、- の記号で表示されます。

RBAC はコンソールレベルと API レベルで検証されます。コンソール内のアクションは、ユーザーのアクセスロールの権限に基づいて有効化/無効化できます。製品の特定ライフサイクルの RBAC の詳細は、以下のセクションを参照してください。

1.1.4.1.2. クラスターライフサイクル RBAC
  • すべてのマネージドクラスターを作成および管理するには、次の情報を参照してください。

    • 以下のコマンドを入力して、クラスターロール open-cluster-management:cluster-manager-admin にバインドするクラスターロールを作成します。

      oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:cluster-manager-admin

      このロールはスーパーユーザーであるため、すべてのリソースとアクションにアクセスできます。このロールを使用すると、クラスターレベルの managedcluster リソース、マネージドクラスターを管理するリソースの namespace、namespace 内のリソースを作成できます。また、このロールで、プロバイダー接続、マネージドクラスター作成に使用するベアメタルアセットにアクセスできます。

  • cluster-name という名前のマネージドクラスターを管理するには、以下を参照してください。

    • 以下のコマンドを入力して、クラスターロール open-cluster-management:admin:<cluster-name> にバインドするクラスターロールを作成します。

      oc create clusterrolebinding (role-binding-name) --clusterrole=open-cluster-management:admin:<cluster-name>

      このロールを使用すると、クラスターレベルの managedcluster リソースに読み取り/書き込みアクセスができるようになります。managedcluster はクラスターレベルのリソースで、namespace レベルのリソースではないので、このロールが必要です。

    • 以下のコマンドを入力して、クラスターロール admin にバインドする namespace ロールを作成します。

      oc create rolebinding <role-binding-name> -n <cluster-name> --clusterrole=admin

      このロールでは、マネージドクラスターの namespace 内にあるリソースに対して読み取り/書き込みアクセスができるようになります。

  • cluster-name という名前のマネージドクラスターを表示するには、以下を参照してください。

    • 以下のコマンドを入力して、クラスターロール open-cluster-management:view:<cluster-name> にバインドするクラスターロールを作成します。

      oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:view:<cluster-name>

      このロールを使用すると、クラスターレベルの managedcluster リソースに読み取りアクセスができるようになります。managedcluster はクラスターレベルのリソースで、namespace レベルのリソースではないので、このロールが必要です。

    • 以下のコマンドを入力して、クラスターロール view にバインドする namespace ロールを作成します。

      oc create rolebinding <role-binding-name> -n <cluster-name> --clusterrole=view

      このロールでは、マネージドクラスターの namespace 内にあるリソースに対して読み取り専用アクセスができるようになります。

  • 以下のコマンドを入力して、アクセス可能なマネージドクラスターの一覧を表示します。

    oc get managedclusters.clusterview.open-cluster-management.io

    このコマンドは、クラスター管理者権限なしで、管理者およびユーザーが使用できます。

  • 以下のコマンドを入力して、アクセス可能なマネージドクラスターセットの一覧を表示します。

    oc get managedclustersets.clusterview.open-cluster-management.io

    このコマンドは、クラスター管理者権限なしで、管理者およびユーザーが使用できます。

1.1.4.1.2.1. クラスタープール RBAC

以下のクラスタープール RBAC 操作を確認してください。

  • クラスタープールのプロビジョニングクラスターを使用するには、以下を実行します。

    • クラスター管理者は、グループにロールを追加してマネージドクラスターセットを作成し、管理者権限をロールに付与します。

      • 以下のコマンドを使用して、server-foundation-clusterset マネージドクラスターセットに admin パーミッションを付与します。

        oc adm policy add-cluster-role-to-group open-cluster-management:clusterset-admin:server-foundation-clusterset
        server-foundation-team-admin
      • 以下のコマンドを使用して、server-foundation-clusterset マネージドクラスターセットに view 権限を付与します。

        oc adm policy add-cluster-role-to-group open-cluster-management:clusterset-view:server-foundation-clusterset server-foundation-team-user
    • クラスタープールの namespace (server-foundation-clusterpool) を作成します。

      • 以下のコマンドを実行して、server-foundation-team-adminserver-foundation-clusterpooladmin 権限を付与します。

        oc adm new-project server-foundation-clusterpool
        
        oc adm policy add-role-to-group admin server-foundation-team-admin --namespace  server-foundation-clusterpool
    • チーム管理者として、クラスタープール namespace に、クラスターセットラベル cluster.open-cluster-management.io/clusterset=server-foundation-clusterset を使用して ocp46-aws-clusterpool という名前のクラスタープールを作成します。

      • server-foundation-webhook は、クラスタープールにクラスターセットラベルがあるかどうか、またユーザーにクラスターセットのクラスタープールを作成するパーミッションがあるかどうかを確認します。
      • server-foundation-controller は、server-foundation-team-userserver-foundation-clusterpool namespace に view 権限を付与します。
    • クラスタープールが作成されると、クラスタープールは clusterdeployment を作成します。

      • server-foundation-controller は、server-foundation-team-adminclusterdeployment namespace に admin パーミッションを付与します。
      • server-foundation-controller は、server-foundation-team-userclusterdeployment namespace に view パーミッションを付与します。

        注記: team-admin および team-user は、clusterpoolclusterdeplyment および clusterclaim への admin 権限があります。

クラスターライフサイクルの以下のコンソールおよび API RBAC の表を表示します。

1.1.4.1.2.2. クラスターライフサイクルのコンソール RBAC の表
リソース管理編集表示

クラスター

read, update, delete

データなし

read

クラスターセット

get, update, bind, join

編集ロールなし

get

マネージドクラスター

read, update, delete

編集ロールなし

get

プロバイダー接続

create, read, update, delete

データなし

read

ベアメタルアセット

create, read, update, delete

データなし

read

1.1.4.1.2.3. クラスターライフサイクルの RBAC API テーブルのテーブル
API管理編集表示

managedclusters.cluster.open-cluster-management.io (この API のコマンドでは mcl (単数) または mcls (複数) を使用できます。)

create, read, update, delete

read, update

read

managedclusters.view.open-cluster-management.io (この API のコマンドでは mcv (単数) または mcvs (複数) を使用できます。)

read

read

read

managedclusters.register.open-cluster-management.io/accept

update

update

none

managedclusterset.cluster.open-cluster-management.io (この API のコマンドでは mclset (単数) または mclsets (複数) を使用できます。)

create, read, update, delete

read, update

read

managedclustersets.view.open-cluster-management.io

read

read

read

managedclustersetbinding.cluster.open-cluster-management.io (この API のコマンドでは mclsetbinding (単数) または mclsetbindings (複数) を使用できます。)

create, read, update, delete

read, update

read

baremetalassets.inventory.open-cluster-management.io

create, read, update, delete

read, update

read

klusterletaddonconfigs.agent.open-cluster-management.io

create, read, update, delete

read, update

read

managedclusteractions.action.open-cluster-management.io

create, read, update, delete

read, update

read

managedclusterviews.view.open-cluster-management.io

create, read, update, delete

read, update

read

managedclusterinfos.internal.open-cluster-management.io

create, read, update, delete

read, update

read

manifestworks.work.open-cluster-management.io

create, read, update, delete

read, update

read

submarinerconfigs.submarineraddon.open-cluster-management.io

create, read, update, delete

read, update

read

placements.cluster.open-cluster-management.io

create, read, update, delete

read, update

read

1.1.4.1.2.4. 認証情報ロールベースのアクセス制御

認証情報へのアクセスは Kubernetes で制御されます。認証情報は Kubernetes Secret として保存され、セキュリティーを確保します。シークレットへのアクセスには、次のアクセス許可が適用されます。

  • namespace でシークレットの作成権限のあるユーザーは認証情報を作成できます。
  • namespace でシークレットの読み取り権限のあるユーザーは、認証情報を表示することもできます。
  • Kubernetes ロール admin および edit のあるユーザーは、シークレットの作成と編集が可能です。
  • Kubernetes クラスターロール view のあるユーザーは、シークレットの内容を読み取ると、サービスアカウントの認証情報にアクセスできるようになるため、シークレットを表示できません。