ROSA with HCP クラスターのインストール
Red Hat OpenShift Service on AWS (ROSA) クラスターのインストール、アクセス、および削除
概要
第1章 デフォルトのオプションを使用した ROSA with HCP クラスターの作成
ROSA Classic のクイックスタートガイドをお探しの場合は、Red Hat OpenShift Service on AWS クイックスタートガイド を参照してください。
Red Hat OpenShift Service on AWS (ROSA) with Hosted Control Plane は、Red Hat OpenShift Service on AWS (ROSA) クラスターを作成するためのより効率的で信頼性の高いアーキテクチャーを提供します。ROSA with HCP では、各クラスターに ROSA サービスアカウントで分離された専用のコントロールプレーンがあります。
デフォルトのオプションと AWS Identity and Access Management (IAM) リソースの自動作成を使用して、ROSA with HCP クラスターをすばやく作成します。ROSA CLI (rosa
) を使用してクラスターをデプロイできます。
既存の ROSA クラスターを Hosted Control Plane アーキテクチャーにアップグレードまたは変換することはできないため、ROSA with HCP の機能を使用するには新しいクラスターを作成する必要があります。
現在、ROSA with HCP では 複数の AWS アカウント間での VPC の共有 はサポートされていません。別の AWS アカウントから共有されているサブネットに ROSA with HCP クラスターをインストールしないでください。詳細は、"Are multiple ROSA clusters in a single VPC supported?" を参照してください。
ROSA with HCP クラスターは、AWS Security Token Service (STS) 認証のみをサポートします。
関連資料
- ROSA with HCP と ROSA Classic の比較は、アーキテクチャーモデルの比較 のドキュメントを参照してください。
- ROSA CLI を使用して自動モードで ROSA with HCP の使用を開始する方法 は、AWS ドキュメントを参照してください。
関連情報
サポートされている証明書の完全なリストは、「Red Hat OpenShift Service on AWS のプロセスとセキュリティーについて」の コンプライアンス セクションを参照してください。
自動作成モードに関する考慮事項
このドキュメントの手順では、ROSA CLI の auto
モードを使用して、現在の AWS アカウントを使用して必要な IAM リソースを即座に作成します。必要なリソースには、アカウント全体の IAM ロールおよびポリシー、クラスター固有の Operator ロール、ならびに OpenID Connect (OIDC) ID プロバイダーが含まれます。
または、IAM リソースを自動的にデプロイする代わりに、IAM リソースの作成に必要な aws
コマンドを出力する manual
モードを使用することもできます。
次のステップ
- AWS の前提条件 を満たしていることを確認する。
1.1. デフォルトのクラスター仕様の概要
デフォルトのインストールオプションを使用して、Security Token Service (STS) で Red Hat OpenShift Service on AWS (ROSA) クラスターをすばやく作成できます。次の要約では、デフォルトのクラスター仕様を説明します。
コンポーネント | デフォルトの仕様 |
---|---|
アカウントおよびロール |
|
クラスター設定 |
|
暗号化 |
|
コントロールプレーンノードの設定 |
|
インフラストラクチャーノードの設定 |
|
コンピュートノードマシンプール |
|
ネットワーク設定 |
|
Classless Inter-Domain Routing (CIDR) の範囲 |
|
クラスターのロールおよびポリシー |
|
クラスター更新戦略 |
|
1.2. ROSA with HCP の前提条件
ROSA with HCP クラスターを作成するには、次のものが必要です。
- 設定された仮想プライベートクラウド (VPC)
- アカウント全体のロール
- OIDC 設定
- オペレーターのロール
1.2.1. ROSA with HCP クラスター用の仮想プライベートクラウドの作成
ROSA with HCP クラスターを作成するには、Virtual Private Cloud (VPC) が必要です。次の方法を使用して VPC を作成できます。
- Terraform テンプレートを使用して VPC を作成する
- AWS コンソールで VPC リソースを手動で作成する
Terraform の手順はテストとデモンストレーションを目的としています。独自のインストールでは、独自に使用するために VPC にいくつかの変更を加える必要があります。また、この Terraform スクリプトを使用するときは、クラスターをインストールする予定のリージョンと同じリージョンにあることを確認する必要があります。これらの例では、us-east-2
を使用します。
Terraform を使用した Virtual Private Cloud の作成
Terraform は、確立されたテンプレートを使用してさまざまなリソースを作成できるツールです。次のプロセスでは、必要に応じてデフォルトのオプションを使用して、ROSA with HCP クラスターを作成します。Terraform の使用の詳細は、関連情報を参照してください。
前提条件
- マシンに Terraform バージョン 1.4.0 以降がインストールされている。
- マシンに Git がインストールされている。
手順
シェルプロンプトを開き、次のコマンドを実行して Terraform VPC リポジトリーのクローンを作成します。
$ git clone https://github.com/openshift-cs/terraform-vpc-example
次のコマンドを実行して、作成したディレクトリーに移動します。
$ cd terraform-vpc-example
次のコマンドを実行して、Terraform ファイルを開始します。
$ terraform init
このプロセスが完了すると、初期化を確認するメッセージが表示されます。
既存の Terraform テンプレートに基づいて VPC Terraform プランを構築するには、
plan
コマンドを実行します。AWS リージョンを含める必要があります。クラスター名を指定することもできます。terraform plan
が完了すると、rosa.tfplan
ファイルがhypershift-tf
ディレクトリーに追加されます。オプションの詳細は、Terraform VPC リポジトリーの README ファイル を参照してください。$ terraform plan -out rosa.tfplan -var region=<region>
次のコマンドを実行して、このプランファイルを適用して VPC を構築します。
$ terraform apply rosa.tfplan
任意: 次のコマンドを実行して、Terraform でプロビジョニングされたプライベート、パブリック、およびマシンプールのサブネット ID の値を環境変数としてキャプチャーし、ROSA with HCP クラスターを作成するときに使用できます。
$ export SUBNET_IDS=$(terraform output -raw cluster-subnets-string)
次のコマンドを使用して、変数が正しく設定されたことを確認できます。
$ echo $SUBNET_IDS
出力例
$ subnet-0a6a57e0f784171aa,subnet-078e84e5b10ecf5b0
関連情報
- ニーズに合わせて VPC をカスタマイズするときに使用できるすべてのオプションの詳細なリストは、Terraform VPC リポジトリーを参照してください。
Virtual Private Cloud を手動で作成する
Terraform を使用する代わりに Virtual Private Cloud (VPC) を手動で作成することを選択した場合は、AWS コンソールの VPC ページ に移動します。VPC は、次の表に示す要件を満たしている必要があります。
要件 | 詳細 |
---|---|
VPC 名 | クラスターを作成するときは、特定の VPC 名と ID が必要です。 |
CIDR 範囲 | VPC CIDR 範囲はマシンの CIDR と一致する必要があります。 |
アベイラビリティーゾーン | 単一ゾーンの場合は 1 つの可用性ゾーンが必要で、複数ゾーンの場合は 3 つの可用性ゾーンが必要です。 |
パブリックサブネット | パブリッククラスターには、インターネットゲートウェイを備えたパブリックサブネットが 1 つ必要です。 |
プライベートサブネット | ROSA HCP クラスターにマシンプールをインストールするには、各アベイラビリティーゾーン (AZ) にプライベートサブネットが 1 つだけ必要です。インスタンスのアウトバウンドインターネットアクセスを許可するために、このサブネットに NAT ゲートウェイを関連付けることができます。プライベートクラスターにはパブリックサブネットは必要ありません。 |
DNS ホスト名と解決 | DNS ホスト名と解決が有効になっていることを確認する必要があります。 |
サブネットへのタグ付け
VPC を使用して ROSA with HCP クラスターを作成する前に、VPC サブネットにタグを付ける必要があります。自動サービスのプリフライトチェックでは、これらのリソースを使用する前に、これらのリソースが正しくタグ付けされていることを確認します。次の表は、リソースを次のようにタグ付けする方法を示しています。
リソース | キー | 値 |
---|---|---|
パブリックサブネット |
|
|
プライベートサブネット |
|
|
少なくとも 1 つのプライベートサブネットと、該当する場合は 1 つのパブリックサブネットにタグを付ける必要があります。
前提条件
- VPC を作成している。
-
aws
CLI をインストールしている。
手順
次のコマンドを実行して、ターミナルでリソースにタグを付けます。
パブリックサブネットの場合は、以下を実行します。
$ aws ec2 create-tags --resources <public-subnet-id> --region <aws_region> --tags Key=kubernetes.io/role/elb,Value=1
プライベートサブネットの場合は、以下を実行します。
$ aws ec2 create-tags --resources <private-subnet-id> --region <aws_region> --tags Key=kubernetes.io/role/internal-elb,Value=1
検証
次のコマンドを実行して、タグが正しく適用されていることを確認します。
$ aws ec2 describe-tags --filters "Name=resource-id,Values=<subnet_id>"
出力例
TAGS Name <subnet-id> subnet <prefix>-subnet-public1-us-east-1a TAGS kubernetes.io/role/elb <subnet-id> subnet 1
1.2.2. アカウント全体の STS ロールおよびポリシーの作成
Red Hat OpenShift Service on AWS (ROSA) CLI (rosa
) を使用して、Red Hat OpenShift Service on AWS (ROSA) with Hosted Control Plane クラスターを作成する前に、Operator ポリシーを含む、必要なアカウント全体のロールとポリシーを作成します。
ROSA with HCP クラスターには、AWS 管理ポリシーがアタッチされたアカウントと Operator ロールが必要です。顧客管理のポリシーはサポートされていません。ROSA with HCP クラスターの AWS 管理ポリシーの詳細は、AWS managed policies for ROSA account roles を参照してください。
前提条件
- ROSA with HCP の AWS の前提条件を完了している。
- 利用可能な AWS サービスクォータがある。
- AWS コンソールで ROSA サービスを有効にしている。
-
インストールホストに、最新の ROSA CLI (
rosa
) をインストールして設定している。 - ROSA CLI を使用して Red Hat アカウントにログインしている。
手順
AWS アカウントに存在しない場合は、次のコマンドを実行して、必要なアカウント全体の STS ロールを作成し、ポリシーをアタッチします。
$ rosa create account-roles --hosted-cp
オプション: 次のコマンドを実行して、接頭辞を環境変数として設定します。
$ export ACCOUNT_ROLES_PREFIX=<account_role_prefix>
次のコマンドを実行して、変数の値を表示します。
$ echo $ACCOUNT_ROLES_PREFIX
出力例
ManagedOpenShift
ROSA の AWS 管理 IAM ポリシーの詳細は、AWS managed IAM policies for ROSA を参照してください。
1.2.3. OpenID Connect 設定の作成
ROSA with HCP クラスターを使用する場合は、クラスターを作成する前に OpenID Connect (OIDC) 設定を作成する必要があります。この設定は、OpenShift Cluster Manager で使用するために登録されています。
前提条件
- ROSA with HCP の AWS の前提条件を完了している。
- Red Hat OpenShift Service on AWS の AWS 前提条件を完了している。
-
インストールホストに、最新の Red Hat OpenShift Service on AWS (ROSA) CLI (
rosa
) をインストールして設定している。
手順
AWS リソースと一緒に OIDC 設定を作成するには、次のコマンドを実行します。
$ rosa create oidc-config --mode=auto --yes
このコマンドは次の情報を返します。
出力例
? Would you like to create a Managed (Red Hat hosted) OIDC Configuration Yes I: Setting up managed OIDC configuration I: To create Operator Roles for this OIDC Configuration, run the following command and remember to replace <user-defined> with a prefix of your choice: rosa create operator-roles --prefix <user-defined> --oidc-config-id 13cdr6b If you are going to create a Hosted Control Plane cluster please include '--hosted-cp' I: Creating OIDC provider using 'arn:aws:iam::4540112244:user/userName' ? Create the OIDC provider? Yes I: Created OIDC provider with ARN 'arn:aws:iam::4540112244:oidc-provider/dvbwgdztaeq9o.cloudfront.net/13cdr6b'
クラスターを作成するときは、OIDC 設定 ID を指定する必要があります。CLI 出力では、
--mode auto
のこの値が提供されます。それ以外の場合は、--mode manual
のaws
CLI 出力に基づいてこれらの値を決定する必要があります。オプション: OIDC 設定 ID を変数として保存して、後で使用できます。次のコマンドを実行して変数を保存します。
$ export OIDC_ID=<oidc_config_id>1
- 1
- 上記の出力例では、OIDC 設定 ID は 13cdr6b です。
次のコマンドを実行して、変数の値を表示します。
$ echo $OIDC_ID
出力例
13cdr6b
検証
ユーザー組織に関連付けられているクラスターで使用できる可能な OIDC 設定をリストできます。以下のコマンドを実行します。
$ rosa list oidc-config
出力例
ID MANAGED ISSUER URL SECRET ARN 2330dbs0n8m3chkkr25gkkcd8pnj3lk2 true https://dvbwgdztaeq9o.cloudfront.net/2330dbs0n8m3chkkr25gkkcd8pnj3lk2 233hvnrjoqu14jltk6lhbhf2tj11f8un false https://oidc-r7u1.s3.us-east-1.amazonaws.com aws:secretsmanager:us-east-1:242819244:secret:rosa-private-key-oidc-r7u1-tM3MDN
1.2.4. Operator のロールとポリシーの作成
ROSA with HCP クラスターを使用する場合は、Red Hat OpenShift Service on AWS (ROSA) with Hosted Control Plane (HCP) デプロイメントに必要な Operator IAM ロールを作成する必要があります。クラスター Operator は、Operator のロールを使用して、バックエンドストレージ、クラウドプロバイダーの認証情報、クラスターへの外部アクセスの管理など、クラスター操作を実行するために必要な一時的なアクセス許可を取得します。
前提条件
- ROSA with HCP の AWS の前提条件を完了している。
-
インストールホストに、最新の Red Hat OpenShift Service on AWS (ROSA) CLI (
rosa
) をインストールして設定している。 - アカウント全体の AWS ロールを作成している。
手順
次のコマンドを使用して、接頭辞名を環境変数に設定します。
$ export OPERATOR_ROLES_PREFIX=<prefix_name>
Operator ロールを作成するには、次のコマンドを実行します。
$ rosa create operator-roles --hosted-cp --prefix=$OPERATOR_ROLES_PREFIX --oidc-config-id=$OIDC_ID --installer-role-arn arn:aws:iam::${AWS_ACCOUNT_ID}:role/${ACCOUNT_ROLES_PREFIX}-HCP-ROSA-Installer-Role
次の内訳は、Operator ロール作成のオプションを示しています。
$ rosa create operator-roles --hosted-cp --prefix=$OPERATOR_ROLES_PREFIX 1 --oidc-config-id=$OIDC_ID 2 --installer-role-arn arn:aws:iam::${AWS_ACCOUNT_ID}:role/${ACCOUNT_ROLES_PREFIX}-HCP-ROSA-Installer-Role 3
ROSA with HCP クラスター用の正しいロールを作成するには、
--hosted-cp
パラメーターを含める必要があります。このコマンドは次の情報を返します。出力例
? Role creation mode: auto ? Operator roles prefix: <pre-filled_prefix> 1 ? OIDC Configuration ID: 23soa2bgvpek9kmes9s7os0a39i13qm4 | https://dvbwgdztaeq9o.cloudfront.net/23soa2bgvpek9kmes9s7os0a39i13qm4 2 ? Create hosted control plane operator roles: Yes W: More than one Installer role found ? Installer role ARN: arn:aws:iam::4540112244:role/<prefix>-HCP-ROSA-Installer-Role ? Permissions boundary ARN (optional): I: Reusable OIDC Configuration detected. Validating trusted relationships to operator roles: I: Creating roles using 'arn:aws:iam::4540112244:user/<userName>' I: Created role '<prefix>-openshift-cluster-csi-drivers-ebs-cloud-credentials' with ARN 'arn:aws:iam::4540112244:role/<prefix>-openshift-cluster-csi-drivers-ebs-cloud-credentials' I: Created role '<prefix>-openshift-cloud-network-config-controller-cloud-credenti' with ARN 'arn:aws:iam::4540112244:role/<prefix>-openshift-cloud-network-config-controller-cloud-credenti' I: Created role '<prefix>-kube-system-kube-controller-manager' with ARN 'arn:aws:iam::4540112244:role/<prefix>-kube-system-kube-controller-manager' I: Created role '<prefix>-kube-system-capa-controller-manager' with ARN 'arn:aws:iam::4540112244:role/<prefix>-kube-system-capa-controller-manager' I: Created role '<prefix>-kube-system-control-plane-operator' with ARN 'arn:aws:iam::4540112244:role/<prefix>-kube-system-control-plane-operator' I: Created role '<prefix>-kube-system-kms-provider' with ARN 'arn:aws:iam::4540112244:role/<prefix>-kube-system-kms-provider' I: Created role '<prefix>-openshift-image-registry-installer-cloud-credentials' with ARN 'arn:aws:iam::4540112244:role/<prefix>-openshift-image-registry-installer-cloud-credentials' I: Created role '<prefix>-openshift-ingress-operator-cloud-credentials' with ARN 'arn:aws:iam::4540112244:role/<prefix>-openshift-ingress-operator-cloud-credentials' I: To create a cluster with these roles, run the following command: rosa create cluster --sts --oidc-config-id 23soa2bgvpek9kmes9s7os0a39i13qm4 --operator-roles-prefix <prefix> --hosted-cp
これで、Operator ロールが作成され、ROSA with HCP クラスターの作成に使用できるようになりました。
検証
ROSA アカウントに関連付けられている Operator ロールをリスト表示できます。以下のコマンドを実行します。
$ rosa list operator-roles
出力例
I: Fetching operator roles ROLE PREFIX AMOUNT IN BUNDLE <prefix> 8 ? Would you like to detail a specific prefix Yes 1 ? Operator Role Prefix: <prefix> ROLE NAME ROLE ARN VERSION MANAGED <prefix>-kube-system-capa-controller-manager arn:aws:iam::4540112244:role/<prefix>-kube-system-capa-controller-manager 4.13 No <prefix>-kube-system-control-plane-operator arn:aws:iam::4540112244:role/<prefix>-kube-system-control-plane-operator 4.13 No <prefix>-kube-system-kms-provider arn:aws:iam::4540112244:role/<prefix>-kube-system-kms-provider 4.13 No <prefix>-kube-system-kube-controller-manager arn:aws:iam::4540112244:role/<prefix>-kube-system-kube-controller-manager 4.13 No <prefix>-openshift-cloud-network-config-controller-cloud-credenti arn:aws:iam::4540112244:role/<prefix>-openshift-cloud-network-config-controller-cloud-credenti 4.13 No <prefix>-openshift-cluster-csi-drivers-ebs-cloud-credentials arn:aws:iam::4540112244:role/<prefix>-openshift-cluster-csi-drivers-ebs-cloud-credentials 4.13 No <prefix>-openshift-image-registry-installer-cloud-credentials arn:aws:iam::4540112244:role/<prefix>-openshift-image-registry-installer-cloud-credentials 4.13 No <prefix>-openshift-ingress-operator-cloud-credentials arn:aws:iam::4540112244:role/<prefix>-openshift-ingress-operator-cloud-credentials 4.13 No
- 1
- コマンドを実行すると、AWS アカウントに関連付けられているすべての接頭辞が表示され、この接頭辞に関連付けられているロールの数が記録されます。これらのロールとその詳細をすべて表示する必要がある場合は、詳細プロンプトで "Yes" と入力すると、これらのロールが詳細とともにリストされます。
関連情報
- オペレーター接頭辞は、カスタム Operator IAM ロール接頭辞 を参照してください。
1.3. CLI を使用した ROSA with HCP クラスターの作成
Red Hat OpenShift Service on AWS (ROSA) CLI (rosa
) を使用してクラスターを作成する場合は、デフォルトのオプションを選択してクラスターを迅速に作成できます。
前提条件
- ROSA with HCP の AWS の前提条件を完了している。
- 利用可能な AWS サービスクォータがある。
- AWS コンソールで ROSA サービスを有効にしている。
-
インストールホストに、最新の ROSA CLI (
rosa
) をインストールして設定している。rosa version
を実行して、現在インストールされている ROSA CLI のバージョンを確認します。新しいバージョンが利用可能な場合、CLI はこのアップグレードをダウンロードするためのリンクを提供します。 - ROSA CLI を使用して Red Hat アカウントにログインしている。
- OIDC 設定が作成されている。
- AWS Elastic Load Balancing (ELB) サービスロールが AWS アカウントに存在することを確認している。
手順
ROSA with HCP クラスターを作成するには、次のいずれかのコマンドを使用します。
注記ROSA with HCP クラスターを作成する場合、デフォルトのマシン Classless Inter-Domain Routing (CIDR) は
10.0.0.0/16
です。これが VPC サブネットの CIDR 範囲に対応していない場合は、次のコマンドに--machine-cidr <address_block>
を追加します。Red Hat OpenShift Service on AWS のデフォルト CIDR 範囲の詳細は、「CIDR 範囲の定義」を参照してください。環境変数を設定していない場合は、以下のコマンドを実行します。
$ rosa create cluster --cluster-name=<cluster_name> \ <.> --mode=auto --hosted-cp [--private] \ <.> --operator-roles-prefix <operator-role-prefix> \ <.> --oidc-config-id <id-of-oidc-configuration> \ --subnet-ids=<public-subnet-id>,<private-subnet-id>
<.> クラスターの名前を指定します。クラスター名が 15 文字を超える場合、openshiftapps.com でプロビジョニングされたクラスターのサブドメインとして自動生成されたドメイン接頭辞が含まれます。サブドメインをカスタマイズするには、
--domain-prefix
フラグを使用します。ドメイン接頭辞は 15 文字を超えてはならず、一意である必要があり、クラスターの作成後に変更できません。<.> オプション:--private
引数は、プライベート ROSA with HCP クラスターを作成するために使用されます。この引数を使用する場合は、--subnet-ids
にプライベートサブネット ID のみを使用するようにしてください。<.> デフォルトでは、クラスター固有の Operator のロール名には、クラスター名とランダムな 4 桁のハッシュが接頭辞として付けられます。オプションで、ロール名の<cluster_name>-<hash>
を置き換えるカスタム接頭辞を指定できます。接頭辞は、クラスター固有の Operator IAM ロールを作成するときに適用されます。接頭辞の詳細は、カスタム Operator IAM ロール接頭辞について を参照してください。注記関連するアカウント全体のロールを作成したときにカスタム ARN パスを指定した場合、カスタムパスは自動的に検出されます。カスタムパスは、後のステップで作成するときに、クラスター固有の Operator ロールに適用されます。
環境変数を設定する場合、単一の初期マシンプールを備え、パブリックまたはプライベートに利用可能な API および Ingress を使用するクラスターを作成するには、次のコマンドを実行します。
$ rosa create cluster --private --cluster-name=<cluster_name> \ --mode=auto --hosted-cp --operator-roles-prefix=$OPERATOR_ROLES_PREFIX \ --oidc-config-id=$OIDC_ID --subnet-ids=$SUBNET_IDS
環境変数を設定する場合、単一の初期マシンプール、パブリックに利用可能な API、およびパブリックに利用可能な Ingress を備えたクラスターを作成するには、次のコマンドを実行します。
$ rosa create cluster --cluster-name=<cluster_name> --mode=auto \ --hosted-cp --operator-roles-prefix=$OPERATOR_ROLES_PREFIX \ --oidc-config-id=$OIDC_ID --subnet-ids=$SUBNET_IDS
次のコマンドを実行して、クラスターのステータスを確認します。
$ rosa describe cluster --cluster=<cluster_name>
以下の
State
フィールドの変更は、クラスターインストールの進捗として出力に表示されます。-
pending (Preparing account)
-
installing (DNS setup in progress)
-
installing
ready
注記インストールが失敗した場合や、
State
フィールドが 10 分以上ready
に変わらない場合は、インストールのトラブルシューティングのドキュメントで詳細を確認してください。詳細は、インストールのトラブルシューティングを参照してください。Red Hat サポートにサポートを依頼する手順は、Red Hat OpenShift Service on AWS のサポートを受ける を参照してください。
-
Red Hat OpenShift Service on AWS インストールプログラムのログを監視して、クラスター作成の進行状況を追跡します。ログを確認するには、次のコマンドを実行します。
$ rosa logs install --cluster=<cluster_name> --watch \ <.>
<.> オプション: インストールの進行中に新しいログメッセージを監視するには、
--watch
引数を使用します。
1.4. 次のステップ
1.5. 関連情報
- 手動モードを使用して ROSA クラスターをデプロイする手順は、カスタマイズを使用したクラスターの作成 を参照してください。
- STS を使用する Red Hat OpenShift Service on AWS をデプロイするのに必要な AWS Identity Access Management (IAM) リソースの詳細は、STS を使用するクラスターの IAM リソースについて を参照してください。
- セキュリティーグループの要件は、追加のカスタムセキュリティーグループ を参照してください。
- オプションで Operator ロール名接頭辞を設定する方法の詳細は、カスタム Operator IAM ロール接頭辞について を参照してください。
- STS を使用する ROSA をインストールするための前提条件の詳細は、STS を使用する ROSA の AWS の前提条件 を参照してください。
-
auto
モードとmanual
モードを使用して必要な STS リソースを作成する方法の詳細は、自動デプロイメントモードと手動デプロイメントモードについて を参照してください。 - AWS IAM で OpenID Connect (OIDC) アイデンティティープロバイダーの使用に関する詳細は、AWS ドキュメントの Creating OpenID Connect (OIDC) identity providers を参照してください。
- ROSA クラスターのインストールのトラブルシューティングの詳細は、インストールのトラブルシューティング を参照してください。
- Red Hat サポートにサポートを依頼する手順は、Red Hat OpenShift Service on AWS のサポートを受ける を参照してください。
第2章 Terraform を使用した ROSA クラスターの作成
2.1. Terraform を使用したデフォルトの ROSA クラスターの作成
デフォルトのクラスターオプションで設定された Terraform クラスターテンプレートを使用して、Red Hat OpenShift Service on AWS (ROSA) クラスターを迅速に作成します。
以下で説明するクラスター作成プロセスでは、次のリソースを使用して ROSA with HCP クラスターを準備する Terraform 設定を使用します。
-
マネージド
oidc-config
設定を使用する OIDC プロバイダー - 関連する AWS Managed ROSA ポリシーを備えた IAM Operator ロールの前提条件
- 関連する AWS Managed ROSA ポリシーを含む IAM アカウントロール
- STS を使用する ROSA クラスターの作成に必要な他のすべての AWS リソース
2.1.1. Terraform の概要
Terraform は、リソースを設定すると必要に応じてそれらのリソースをレプリケートできる infrastructure-as-code ツールです。Terraform は、宣言的言語を使用して作成タスクを実行します。インフラストラクチャーリソースの任意の最終状態を宣言すると、Terraform は仕様に合わせてリソースを作成します。
前提条件
Terraform 設定内で Red Hat Cloud Services プロバイダー を使用するには、次の前提条件を満たす必要があります。
- Red Hat OpenShift Service on AWS (ROSA) コマンドラインインターフェイス (CLI) ツールをインストールしている。
- オフライン Red Hat OpenShift Cluster Manager トークン がある。
- Terraform バージョン 1.4.6 以降をインストールしている。
AWS アカウント全体の IAM ロールを作成している。
特定のアカウント全体の IAM ロールとポリシーが ROSA のサポート、インストール、コントロールプレーン、コンピューティング機能に必要な STS 権限を提供する。これには、アカウント全体の Operator ポリシーが含まれます。AWS アカウントロールの詳細は、関連情報を参照してください。
- リソースの作成に必要な AWS アカウント と関連する認証情報 がある。認証情報は AWS プロバイダー用に設定されています。AWS Terraform プロバイダーのドキュメントで、Authentication and Configuration セクションを参照してください。
Terraform を操作する AWS IAM ロールポリシーに、少なくとも以下の権限がある。権限は、AWS コンソールで確認してください。
例2.1 Terraform の最小限の AWS 権限
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "iam:GetPolicyVersion", "iam:DeletePolicyVersion", "iam:CreatePolicyVersion", "iam:UpdateAssumeRolePolicy", "secretsmanager:DescribeSecret", "iam:ListRoleTags", "secretsmanager:PutSecretValue", "secretsmanager:CreateSecret", "iam:TagRole", "secretsmanager:DeleteSecret", "iam:UpdateOpenIDConnectProviderThumbprint", "iam:DeletePolicy", "iam:CreateRole", "iam:AttachRolePolicy", "iam:ListInstanceProfilesForRole", "secretsmanager:GetSecretValue", "iam:DetachRolePolicy", "iam:ListAttachedRolePolicies", "iam:ListPolicyTags", "iam:ListRolePolicies", "iam:DeleteOpenIDConnectProvider", "iam:DeleteInstanceProfile", "iam:GetRole", "iam:GetPolicy", "iam:ListEntitiesForPolicy", "iam:DeleteRole", "iam:TagPolicy", "iam:CreateOpenIDConnectProvider", "iam:CreatePolicy", "secretsmanager:GetResourcePolicy", "iam:ListPolicyVersions", "iam:UpdateRole", "iam:GetOpenIDConnectProvider", "iam:TagOpenIDConnectProvider", "secretsmanager:TagResource", "sts:AssumeRoleWithWebIdentity", "iam:ListRoles" ], "Resource": [ "arn:aws:secretsmanager:*:<ACCOUNT_ID>:secret:*", "arn:aws:iam::<ACCOUNT_ID>:instance-profile/*", "arn:aws:iam::<ACCOUNT_ID>:role/*", "arn:aws:iam::<ACCOUNT_ID>:oidc-provider/*", "arn:aws:iam::<ACCOUNT_ID>:policy/*" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "s3:*" ], "Resource": "*" } ] }
Terraform を使用する場合の考慮事項
一般に、Terraform を使用してクラウドリソースを管理する場合は、すべての変更が Terraform 方法論を使用して実行されることを前提として行う必要があります。AWS コンソールや Red Hat コンソールなど、Terraform 外部のツールを使用して Terraform によって作成されたクラウドリソースを変更する場合は注意してください。Terraform によってすでに管理されているクラウドリソースを管理するために Terraform 外部のツールを使用すると、宣言した Terraform 設定から設定のドリフトが発生します。
たとえば、Red Hat Hybrid Cloud Console を使用して Terraform で作成されたクラスターをアップグレードする場合は、今後の設定変更を適用する前に Terraform の状態を調整する必要があります。詳細は、HashiCorp Developer ドキュメントの Manage resources in Terraform state を参照してください。
2.1.2. デフォルトのクラスター仕様の概要
コンポーネント | デフォルトの仕様 |
---|---|
アカウントおよびロール |
|
クラスター設定 |
|
暗号化 |
|
コントロールプレーンノードの設定 |
|
インフラストラクチャーノードの設定 |
|
コンピュートノードマシンプール |
|
ネットワーク設定 |
|
Classless Inter-Domain Routing (CIDR) の範囲 |
|
クラスターのロールおよびポリシー |
|
クラスター更新戦略 |
|
2.1.3. Terraform を使用したデフォルトの ROSA クラスターの作成
以下に概説するクラスター作成プロセスでは、Terraform を使用して、アカウント全体の IAM ロールとマネージド OIDC 設定を使用する ROSA クラスターを作成する方法を示します。
2.1.3.1. Terraform 用の環境の準備
Terraform を使用して Red Hat OpenShift Service on AWS クラスターを作成する前に、オフラインの Red Hat OpenShift Cluster Manager トークン をエクスポートする必要があります。
手順
オプション: この手順の実行中、現在のディレクトリーに Terraform ファイルが作成されます。次のコマンドを実行すると、これらのファイルを保存する新しいディレクトリーを作成してそこに移動できます。
$ mkdir terraform-cluster && cd terraform-cluster
- オフラインの Red Hat OpenShift Cluster Manager トークン を使用して、アカウントに権限を付与します。
オフライントークンをコピーし、次のコマンドを実行してトークンを環境変数として設定します。
$ export RHCS_TOKEN=<your_offline_token>
注記この環境変数は、マシンの再起動やターミナルの終了など、各セッションの終了時にリセットされます。
検証
トークンをエクスポートしたら、次のコマンドを実行して値を確認します。
$ echo $RHCS_TOKEN
2.1.3.2. ローカルでの Terraform ファイルの作成
オフラインの Red Hat OpenShift Cluster Manager トークン を設定した後、クラスターを構築するために Terraform ファイルをローカルで作成する必要があります。このファイルは、次のコードテンプレートを使用して作成できます。
手順
次のコマンドを実行して、
main.tf
ファイルを作成します。$ cat<<-EOF>main.tf # # Copyright (c) 2023 Red Hat, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # terraform { required_providers { aws = { source = "hashicorp/aws" version = ">= 4.20.0" } rhcs = { version = ">= 1.6.3" source = "terraform-redhat/rhcs" } } } # Export token using the RHCS_TOKEN environment variable provider "rhcs" {} provider "aws" { region = var.aws_region ignore_tags { key_prefixes = ["kubernetes.io/"] } default_tags { tags = var.default_aws_tags } } data "aws_availability_zones" "available" {} locals { # Extract availability zone names for the specified region, limit it to 3 if multi az or 1 if single region_azs = var.multi_az ? slice([for zone in data.aws_availability_zones.available.names : format("%s", zone)], 0, 3) : slice([for zone in data.aws_availability_zones.available.names : format("%s", zone)], 0, 1) } resource "random_string" "random_name" { length = 6 special = false upper = false } locals { worker_node_replicas = var.multi_az ? 3 : 2 # If cluster_name is not null, use that, otherwise generate a random cluster name cluster_name = coalesce(var.cluster_name, "rosa-\${random_string.random_name.result}") } # The network validator requires an additional 60 seconds to validate Terraform clusters. resource "time_sleep" "wait_60_seconds" { count = var.create_vpc ? 1 : 0 depends_on = [module.vpc] create_duration = "60s" } module "rosa-hcp" { source = "terraform-redhat/rosa-hcp/rhcs" version = "1.6.3" cluster_name = local.cluster_name openshift_version = var.openshift_version account_role_prefix = local.cluster_name operator_role_prefix = local.cluster_name replicas = local.worker_node_replicas aws_availability_zones = local.region_azs create_oidc = true private = var.private_cluster aws_subnet_ids = var.create_vpc ? var.private_cluster ? module.vpc[0].private_subnets : concat(module.vpc[0].public_subnets, module.vpc[0].private_subnets) : var.aws_subnet_ids create_account_roles = true create_operator_roles = true # Optional: Configure a cluster administrator user <.> # # Option 1: Default cluster-admin user # Create an administrator user (cluster-admin) and automatically # generate a password by uncommenting the following parameter: # create_admin_user = true # Generated administrator credentials are displayed in terminal output. # # Option 2: Specify administrator username and password # Create an administrator user and define your own password # by uncommenting and editing the values of the following parameters: # admin_credentials_username = <username> # admin_credentials_password = <password> depends_on = [time_sleep.wait_60_seconds] } EOF
<.> オプション: 適切なパラメーターのコメントを解除し、必要に応じて値を編集して、クラスターの作成中に管理者ユーザーを作成します。
次のコマンドを実行して、
variables.tf
ファイルを作成します。注記クラスターを構築するコマンドを実行する 前 に、このファイルをコピーして編集します。
$ cat<<-EOF>variables.tf # # Copyright (c) 2023 Red Hat, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # variable "openshift_version" { type = string default = "4.14.20" description = "Desired version of OpenShift for the cluster, for example '4.14.20'. If version is greater than the currently running version, an upgrade will be scheduled." } variable "create_vpc" { type = bool description = "If you would like to create a new VPC, set this value to 'true'. If you do not want to create a new VPC, set this value to 'false'." } # ROSA Cluster info variable "cluster_name" { default = null type = string description = "The name of the ROSA cluster to create" } variable "additional_tags" { default = { Terraform = "true" Environment = "dev" } description = "Additional AWS resource tags" type = map(string) } variable "multi_az" { type = bool description = "Multi AZ Cluster for High Availability" default = true } variable "worker_node_replicas" { default = 3 description = "Number of worker nodes to provision. Single zone clusters need at least 2 nodes, multizone clusters need at least 3 nodes" type = number } variable "aws_subnet_ids" { type = list(any) description = "A list of either the public or public + private subnet IDs to use for the cluster blocks to use for the cluster" default = ["subnet-01234567890abcdef", "subnet-01234567890abcdef", "subnet-01234567890abcdef"] } variable "private_cluster" { type = bool description = "If you want to create a private cluster, set this value to 'true'. If you want a publicly available cluster, set this value to 'false'." } #VPC Info variable "vpc_name" { type = string description = "VPC Name" default = "tf-qs-vpc" } variable "vpc_cidr_block" { type = string description = "value of the CIDR block to use for the VPC" default = "10.0.0.0/16" } variable "private_subnet_cidrs" { type = list(any) description = "The CIDR blocks to use for the private subnets" default = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"] } variable "public_subnet_cidrs" { type = list(any) description = "The CIDR blocks to use for the public subnets" default = ["10.0.101.0/24", "10.0.102.0/24", "10.0.103.0/24"] } variable "single_nat_gateway" { type = bool description = "Single NAT or per NAT for subnet" default = false } #AWS Info variable "aws_region" { type = string default = "us-east-2" } variable "default_aws_tags" { type = map(string) description = "Default tags for AWS" default = {} } EOF
以下のコマンドを実行して
vpc.tf
ファイルを作成します。$ cat<<-EOF>vpc.tf # # Copyright (c) 2023 Red Hat, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # module "vpc" { source = "terraform-aws-modules/vpc/aws" version = "5.1.2" count = var.create_vpc ? 1 : 0 name = var.vpc_name cidr = var.vpc_cidr_block azs = local.region_azs private_subnets = var.multi_az ? var.private_subnet_cidrs : [var.private_subnet_cidrs[0]] public_subnets = var.multi_az ? var.public_subnet_cidrs : [var.public_subnet_cidrs[0]] enable_nat_gateway = true single_nat_gateway = var.single_nat_gateway enable_dns_hostnames = true enable_dns_support = true tags = var.additional_tags } EOF
これで Terraform を起動する準備ができました。
2.1.3.3. Terraform を使用した ROSA クラスターの作成
Terraform ファイルを作成した後、Terraform を起動して、必要な依存関係をすべて提供する必要があります。その後、Terraform プランを適用します。
Terraform の状態ファイルは変更しないでください。詳細は、Terraform 使用時の考慮事項 を参照してください。
手順
Terraform ファイルに基づいてリソースを作成するように Terraform を設定し、次のコマンドを実行します。
$ terraform init
オプション: 次のコマンドを実行して、コピーした Terraform が正しいことを確認します。
$ terraform validate
出力例
Success! The configuration is valid.
次のコマンドを実行して、Terraform を使用してクラスターを作成します。
$ terraform apply
Terraform インターフェイスでは、クラスターを作成するために次のような 2 つの質問が表示されます。
出力例
var.create_vpc If you would like to create a new VPC, set this value to 'true'. If you do not want to create a new VPC, set this value to 'false'. Enter a value: var.private_cluster If you want to create a private cluster, set this value to 'true'. If you want a publicly available cluster, set this value to 'false'. Enter a value:
Terraform インターフェイスに作成または変更するリソースがリストされ、確認を求めるプロンプトが表示されたら、続行するには
yes
を、キャンセルするにはno
を入力します。出力例
Plan: 63 to add, 0 to change, 0 to destroy. Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve.
yes
と入力すると、Terraform プランが開始され、AWS アカウントロール、Operator ロール、ROSA Classic クラスターが作成されます。
検証
次のコマンドを実行して、クラスターが作成されたことを確認します。
$ rosa list clusters
クラスターの ID、名前、ステータスを示す出力例
ID NAME STATE TOPOLOGY 27c3snjsupa9obua74ba8se5kcj11269 rosa-tf-demo ready Classic (STS)
次のコマンドを実行して、アカウントロールが作成されたことを確認します。
$ rosa list account-roles
出力例
I: Fetching account roles ROLE NAME ROLE TYPE ROLE ARN OPENSHIFT VERSION AWS Managed ROSA-demo-Installer-Role Installer arn:aws:iam::<ID>:role/ROSA-demo-Installer-Role 4.14 No ROSA-demo-Support-Role Support arn:aws:iam::<ID>:role/ROSA-demo-Support-Role 4.14 No ROSA-demo-Worker-Role Worker arn:aws:iam::<ID>:role/ROSA-demo-Worker-Role 4.14 No
次のコマンドを実行して、Operator ロールが作成されたことを確認します。
$ rosa list operator-roles
Terraform で作成された Operator ロールを示す出力例
I: Fetching operator roles ROLE PREFIX AMOUNT IN BUNDLE rosa-demo 8
2.1.3.4. Terraform を使用した ROSA クラスターの削除
terraform destroy
コマンドを使用して、terraform apply
コマンドで作成したすべてのリソースを削除します。
リソースを破棄する前に、Terraform の .tf
ファイルを変更しないでください。これらの変数は削除対象のリソースと照合されます。
手順
terraform apply
コマンドを実行してクラスターを作成したディレクトリーで、次のコマンドを実行してクラスターを削除します。$ terraform destroy
Terraform インターフェイスでは、2 つの変数の入力を求められます。これらは、クラスターの作成時に指定した回答と一致する必要があります。
var.create_vpc If you would like to create a new VPC, set this value to 'true.' If you do not want to create a new VPC, set this value to 'false.' Enter a value: var.private_cluster If you want to create a private cluster, set this value to 'true.' If you want a publicly available cluster, set this value to 'false.' Enter a value:
yes
と入力して、ロールとクラスターの削除を開始します。出力例
Plan: 0 to add, 0 to change, 63 to destroy. Do you really want to destroy all resources? Terraform will destroy all your managed infrastructure, as shown above. There is no undo. Only 'yes' will be accepted to confirm. Enter a value: yes
検証
次のコマンドを実行して、クラスターが破棄されたことを確認します。
$ rosa list clusters
クラスターがないことを示す出力例
I: No clusters available
次のコマンドを実行して、アカウントロールが破棄されたことを確認します。
$ rosa list account-roles
Terraform で作成されたアカウントロールがないことを示す出力例
I: Fetching account roles I: No account roles available
次のコマンドを実行して、Operator ロールが破棄されたことを確認します。
$ rosa list operator-roles
Terraform で作成された Operator ロールがないことを示す出力例
I: Fetching operator roles I: No operator roles available
2.1.4. 関連情報
第3章 カスタム AWS KMS 暗号鍵を使用した ROSA with HCP クラスターの作成
カスタムの AWS Key Management Service (KMS) キーを使用して、Red Hat OpenShift Service on AWS (ROSA) with Hosted Control Plane クラスターを作成します。
3.1. ROSA with HCP の前提条件
ROSA with HCP クラスターを作成するには、次のものが必要です。
- 設定された仮想プライベートクラウド (VPC)
- アカウント全体のロール
- OIDC 設定
- オペレーターのロール
3.1.1. ROSA with HCP クラスター用の仮想プライベートクラウドの作成
ROSA with HCP クラスターを作成するには、Virtual Private Cloud (VPC) が必要です。次の方法を使用して VPC を作成できます。
- Terraform テンプレートを使用して VPC を作成する
- AWS コンソールで VPC リソースを手動で作成する
Terraform の手順はテストとデモンストレーションを目的としています。独自のインストールでは、独自に使用するために VPC にいくつかの変更を加える必要があります。また、この Terraform スクリプトを使用するときは、クラスターをインストールする予定のリージョンと同じリージョンにあることを確認する必要があります。これらの例では、us-east-2
を使用します。
現在、ROSA with HCP では 複数の AWS アカウント間での VPC の共有 はサポートされていません。別の AWS アカウントから共有されているサブネットに ROSA with HCP クラスターをインストールしないでください。詳細は、"Are multiple ROSA clusters in a single VPC supported?" を参照してください。
Terraform を使用した Virtual Private Cloud の作成
Terraform は、確立されたテンプレートを使用してさまざまなリソースを作成できるツールです。次のプロセスでは、必要に応じてデフォルトのオプションを使用して、ROSA with HCP クラスターを作成します。Terraform の使用の詳細は、関連情報を参照してください。
前提条件
- マシンに Terraform バージョン 1.4.0 以降がインストールされている。
- マシンに Git がインストールされている。
手順
シェルプロンプトを開き、次のコマンドを実行して Terraform VPC リポジトリーのクローンを作成します。
$ git clone https://github.com/openshift-cs/terraform-vpc-example
次のコマンドを実行して、作成したディレクトリーに移動します。
$ cd terraform-vpc-example
次のコマンドを実行して、Terraform ファイルを開始します。
$ terraform init
このプロセスが完了すると、初期化を確認するメッセージが表示されます。
既存の Terraform テンプレートに基づいて VPC Terraform プランを構築するには、
plan
コマンドを実行します。AWS リージョンを含める必要があります。クラスター名を指定することもできます。terraform plan
が完了すると、rosa.tfplan
ファイルがhypershift-tf
ディレクトリーに追加されます。オプションの詳細は、Terraform VPC リポジトリーの README ファイル を参照してください。$ terraform plan -out rosa.tfplan -var region=<region>
次のコマンドを実行して、このプランファイルを適用して VPC を構築します。
$ terraform apply rosa.tfplan
任意: 次のコマンドを実行して、Terraform でプロビジョニングされたプライベート、パブリック、およびマシンプールのサブネット ID の値を環境変数としてキャプチャーし、ROSA with HCP クラスターを作成するときに使用できます。
$ export SUBNET_IDS=$(terraform output -raw cluster-subnets-string)
次のコマンドを使用して、変数が正しく設定されたことを確認できます。
$ echo $SUBNET_IDS
出力例
$ subnet-0a6a57e0f784171aa,subnet-078e84e5b10ecf5b0
関連情報
- ニーズに合わせて VPC をカスタマイズするときに使用できるすべてのオプションの詳細なリストは、Terraform VPC リポジトリーを参照してください。
Virtual Private Cloud を手動で作成する
Terraform を使用する代わりに Virtual Private Cloud (VPC) を手動で作成することを選択した場合は、AWS コンソールの VPC ページ に移動します。VPC は、次の表に示す要件を満たしている必要があります。
要件 | 詳細 |
---|---|
VPC 名 | クラスターを作成するときは、特定の VPC 名と ID が必要です。 |
CIDR 範囲 | VPC CIDR 範囲はマシンの CIDR と一致する必要があります。 |
アベイラビリティーゾーン | 単一ゾーンの場合は 1 つの可用性ゾーンが必要で、複数ゾーンの場合は 3 つの可用性ゾーンが必要です。 |
パブリックサブネット | パブリッククラスターには、インターネットゲートウェイを備えたパブリックサブネットが 1 つ必要です。 |
プライベートサブネット | ROSA HCP クラスターにマシンプールをインストールするには、各アベイラビリティーゾーン (AZ) にプライベートサブネットが 1 つだけ必要です。インスタンスのアウトバウンドインターネットアクセスを許可するために、このサブネットに NAT ゲートウェイを関連付けることができます。プライベートクラスターにはパブリックサブネットは必要ありません。 |
DNS ホスト名と解決 | DNS ホスト名と解決が有効になっていることを確認する必要があります。 |
3.1.2. アカウント全体の STS ロールおよびポリシーの作成
Red Hat OpenShift Service on AWS (ROSA) CLI (rosa
) を使用して、Red Hat OpenShift Service on AWS (ROSA) with Hosted Control Plane クラスターを作成する前に、Operator ポリシーを含む、必要なアカウント全体のロールとポリシーを作成します。
ROSA with HCP クラスターには、AWS 管理ポリシーがアタッチされたアカウントと Operator ロールが必要です。顧客管理のポリシーはサポートされていません。ROSA with HCP クラスターの AWS 管理ポリシーの詳細は、AWS managed policies for ROSA account roles を参照してください。
前提条件
- ROSA with HCP の AWS の前提条件を完了している。
- 利用可能な AWS サービスクォータがある。
- AWS コンソールで ROSA サービスを有効にしている。
-
インストールホストに、最新の ROSA CLI (
rosa
) をインストールして設定している。 - ROSA CLI を使用して Red Hat アカウントにログインしている。
手順
AWS アカウントに存在しない場合は、次のコマンドを実行して、必要なアカウント全体の STS ロールを作成し、ポリシーをアタッチします。
$ rosa create account-roles --hosted-cp
オプション: 次のコマンドを実行して、接頭辞を環境変数として設定します。
$ export ACCOUNT_ROLES_PREFIX=<account_role_prefix>
次のコマンドを実行して、変数の値を表示します。
$ echo $ACCOUNT_ROLES_PREFIX
出力例
ManagedOpenShift
ROSA の AWS 管理 IAM ポリシーの詳細は、AWS managed IAM policies for ROSA を参照してください。
3.1.3. OpenID Connect 設定の作成
ROSA with HCP クラスターを使用する場合は、クラスターを作成する前に OpenID Connect (OIDC) 設定を作成する必要があります。この設定は、OpenShift Cluster Manager で使用するために登録されています。
前提条件
- ROSA with HCP の AWS の前提条件を完了している。
- Red Hat OpenShift Service on AWS の AWS 前提条件を完了している。
-
インストールホストに、最新の Red Hat OpenShift Service on AWS (ROSA) CLI (
rosa
) をインストールして設定している。
手順
AWS リソースと一緒に OIDC 設定を作成するには、次のコマンドを実行します。
$ rosa create oidc-config --mode=auto --yes
このコマンドは次の情報を返します。
出力例
? Would you like to create a Managed (Red Hat hosted) OIDC Configuration Yes I: Setting up managed OIDC configuration I: To create Operator Roles for this OIDC Configuration, run the following command and remember to replace <user-defined> with a prefix of your choice: rosa create operator-roles --prefix <user-defined> --oidc-config-id 13cdr6b If you are going to create a Hosted Control Plane cluster please include '--hosted-cp' I: Creating OIDC provider using 'arn:aws:iam::4540112244:user/userName' ? Create the OIDC provider? Yes I: Created OIDC provider with ARN 'arn:aws:iam::4540112244:oidc-provider/dvbwgdztaeq9o.cloudfront.net/13cdr6b'
クラスターを作成するときは、OIDC 設定 ID を指定する必要があります。CLI 出力では、
--mode auto
のこの値が提供されます。それ以外の場合は、--mode manual
のaws
CLI 出力に基づいてこれらの値を決定する必要があります。オプション: OIDC 設定 ID を変数として保存して、後で使用できます。次のコマンドを実行して変数を保存します。
$ export OIDC_ID=<oidc_config_id>1
- 1
- 上記の出力例では、OIDC 設定 ID は 13cdr6b です。
次のコマンドを実行して、変数の値を表示します。
$ echo $OIDC_ID
出力例
13cdr6b
検証
ユーザー組織に関連付けられているクラスターで使用できる可能な OIDC 設定をリストできます。以下のコマンドを実行します。
$ rosa list oidc-config
出力例
ID MANAGED ISSUER URL SECRET ARN 2330dbs0n8m3chkkr25gkkcd8pnj3lk2 true https://dvbwgdztaeq9o.cloudfront.net/2330dbs0n8m3chkkr25gkkcd8pnj3lk2 233hvnrjoqu14jltk6lhbhf2tj11f8un false https://oidc-r7u1.s3.us-east-1.amazonaws.com aws:secretsmanager:us-east-1:242819244:secret:rosa-private-key-oidc-r7u1-tM3MDN
3.1.4. Operator のロールとポリシーの作成
ROSA with HCP クラスターを使用する場合は、Red Hat OpenShift Service on AWS (ROSA) with Hosted Control Plane (HCP) デプロイメントに必要な Operator IAM ロールを作成する必要があります。クラスター Operator は、Operator のロールを使用して、バックエンドストレージ、クラウドプロバイダーの認証情報、クラスターへの外部アクセスの管理など、クラスター操作を実行するために必要な一時的なアクセス許可を取得します。
前提条件
- ROSA with HCP の AWS の前提条件を完了している。
-
インストールホストに、最新の Red Hat OpenShift Service on AWS (ROSA) CLI (
rosa
) をインストールして設定している。 - アカウント全体の AWS ロールを作成している。
手順
次のコマンドを使用して、接頭辞名を環境変数に設定します。
$ export OPERATOR_ROLES_PREFIX=<prefix_name>
Operator ロールを作成するには、次のコマンドを実行します。
$ rosa create operator-roles --hosted-cp --prefix=$OPERATOR_ROLES_PREFIX --oidc-config-id=$OIDC_ID --installer-role-arn arn:aws:iam::${AWS_ACCOUNT_ID}:role/${ACCOUNT_ROLES_PREFIX}-HCP-ROSA-Installer-Role
次の内訳は、Operator ロール作成のオプションを示しています。
$ rosa create operator-roles --hosted-cp --prefix=$OPERATOR_ROLES_PREFIX 1 --oidc-config-id=$OIDC_ID 2 --installer-role-arn arn:aws:iam::${AWS_ACCOUNT_ID}:role/${ACCOUNT_ROLES_PREFIX}-HCP-ROSA-Installer-Role 3
ROSA with HCP クラスター用の正しいロールを作成するには、
--hosted-cp
パラメーターを含める必要があります。このコマンドは次の情報を返します。出力例
? Role creation mode: auto ? Operator roles prefix: <pre-filled_prefix> 1 ? OIDC Configuration ID: 23soa2bgvpek9kmes9s7os0a39i13qm4 | https://dvbwgdztaeq9o.cloudfront.net/23soa2bgvpek9kmes9s7os0a39i13qm4 2 ? Create hosted control plane operator roles: Yes W: More than one Installer role found ? Installer role ARN: arn:aws:iam::4540112244:role/<prefix>-HCP-ROSA-Installer-Role ? Permissions boundary ARN (optional): I: Reusable OIDC Configuration detected. Validating trusted relationships to operator roles: I: Creating roles using 'arn:aws:iam::4540112244:user/<userName>' I: Created role '<prefix>-openshift-cluster-csi-drivers-ebs-cloud-credentials' with ARN 'arn:aws:iam::4540112244:role/<prefix>-openshift-cluster-csi-drivers-ebs-cloud-credentials' I: Created role '<prefix>-openshift-cloud-network-config-controller-cloud-credenti' with ARN 'arn:aws:iam::4540112244:role/<prefix>-openshift-cloud-network-config-controller-cloud-credenti' I: Created role '<prefix>-kube-system-kube-controller-manager' with ARN 'arn:aws:iam::4540112244:role/<prefix>-kube-system-kube-controller-manager' I: Created role '<prefix>-kube-system-capa-controller-manager' with ARN 'arn:aws:iam::4540112244:role/<prefix>-kube-system-capa-controller-manager' I: Created role '<prefix>-kube-system-control-plane-operator' with ARN 'arn:aws:iam::4540112244:role/<prefix>-kube-system-control-plane-operator' I: Created role '<prefix>-kube-system-kms-provider' with ARN 'arn:aws:iam::4540112244:role/<prefix>-kube-system-kms-provider' I: Created role '<prefix>-openshift-image-registry-installer-cloud-credentials' with ARN 'arn:aws:iam::4540112244:role/<prefix>-openshift-image-registry-installer-cloud-credentials' I: Created role '<prefix>-openshift-ingress-operator-cloud-credentials' with ARN 'arn:aws:iam::4540112244:role/<prefix>-openshift-ingress-operator-cloud-credentials' I: To create a cluster with these roles, run the following command: rosa create cluster --sts --oidc-config-id 23soa2bgvpek9kmes9s7os0a39i13qm4 --operator-roles-prefix <prefix> --hosted-cp
これで、Operator ロールが作成され、ROSA with HCP クラスターの作成に使用できるようになりました。
検証
ROSA アカウントに関連付けられている Operator ロールをリスト表示できます。以下のコマンドを実行します。
$ rosa list operator-roles
出力例
I: Fetching operator roles ROLE PREFIX AMOUNT IN BUNDLE <prefix> 8 ? Would you like to detail a specific prefix Yes 1 ? Operator Role Prefix: <prefix> ROLE NAME ROLE ARN VERSION MANAGED <prefix>-kube-system-capa-controller-manager arn:aws:iam::4540112244:role/<prefix>-kube-system-capa-controller-manager 4.13 No <prefix>-kube-system-control-plane-operator arn:aws:iam::4540112244:role/<prefix>-kube-system-control-plane-operator 4.13 No <prefix>-kube-system-kms-provider arn:aws:iam::4540112244:role/<prefix>-kube-system-kms-provider 4.13 No <prefix>-kube-system-kube-controller-manager arn:aws:iam::4540112244:role/<prefix>-kube-system-kube-controller-manager 4.13 No <prefix>-openshift-cloud-network-config-controller-cloud-credenti arn:aws:iam::4540112244:role/<prefix>-openshift-cloud-network-config-controller-cloud-credenti 4.13 No <prefix>-openshift-cluster-csi-drivers-ebs-cloud-credentials arn:aws:iam::4540112244:role/<prefix>-openshift-cluster-csi-drivers-ebs-cloud-credentials 4.13 No <prefix>-openshift-image-registry-installer-cloud-credentials arn:aws:iam::4540112244:role/<prefix>-openshift-image-registry-installer-cloud-credentials 4.13 No <prefix>-openshift-ingress-operator-cloud-credentials arn:aws:iam::4540112244:role/<prefix>-openshift-ingress-operator-cloud-credentials 4.13 No
- 1
- コマンドを実行すると、AWS アカウントに関連付けられているすべての接頭辞が表示され、この接頭辞に関連付けられているロールの数が記録されます。これらのロールとその詳細をすべて表示する必要がある場合は、詳細プロンプトで "Yes" と入力すると、これらのロールが詳細とともにリストされます。
3.1.5. カスタム AWS KMS キーを使用した ROSA クラスターの作成
ノードのルートボリューム、etcd データベース、またはその両方の暗号化に使用するお客様提供の KMS キーを使用して、Red Hat OpenShift Service on AWS (ROSA) クラスターを作成できます。両方にそれぞれ異なる KMS キー ARN を指定できます。
ROSA with HCP は、お客様提供の KMS キーを使用して永続ボリュームを暗号化するように default
ストレージクラスを自動設定しません。これは、インストール後にクラスター内で設定できるものです。
手順
次のコマンドを実行して、AWS の顧客管理のカスタム KMS キーを作成します。
$ KMS_ARN=$(aws kms create-key --region $AWS_REGION --description 'Custom ROSA Encryption Key' --tags TagKey=red-hat,TagValue=true --query KeyMetadata.Arn --output text)
このコマンドで、後の手順のために、このカスタムキーの Amazon リソースネーム (ARN) 出力が保存されます。
注記お客様は、お客様の KMS キーに必要な
--tags TagKey=red-hat,TagValue=true
引数を指定する必要があります。次のコマンドを実行して、KMS キーが作成されたことを確認します。
$ echo $KMS_ARN
AWS アカウント ID を環境変数に設定します。
$ AWS_ACCOUNT_ID=<aws_account_id>
前述の手順で作成したアカウント全体のインストーラーロールと Operator ロールの ARN を、ファイルの
Statement.Principal.AWS
セクションに追加します。次の例では、デフォルトのManagedOpenShift-HCP-ROSA-Installer-Role
ロールの ARN が追加されます。{ "Version": "2012-10-17", "Id": "key-rosa-policy-1", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::${AWS_ACCOUNT_ID}:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Installer Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::${AWS_ACCOUNT_ID}:role/ManagedOpenShift-HCP-ROSA-Installer-Role" }, "Action": [ "kms:CreateGrant", "kms:DescribeKey", "kms:GenerateDataKeyWithoutPlaintext" ], "Resource": "*" }, { "Sid": "ROSA KubeControllerManager Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::${AWS_ACCOUNT_ID}:role/<operator_role_prefix>-kube-system-kube-controller-manager" }, "Action": "kms:DescribeKey", "Resource": "*" }, { "Sid": "ROSA KMS Provider Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::${AWS_ACCOUNT_ID}:role/<operator_role_prefix>-kube-system-kms-provider" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "ROSA NodeManager Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::${AWS_ACCOUNT_ID}:role/<operator_role_prefix>-kube-system-capa-controller-manager" }, "Action": [ "kms:DescribeKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:CreateGrant" ], "Resource": "*" } ] }
次のコマンドを実行して、作成されたポリシーファイルの詳細を確認します。
$ cat rosa-key-policy.json
次のコマンドを実行して、新しく生成されたキーポリシーをカスタム KMS キーに適用します。
$ aws kms put-key-policy --key-id $KMS_ARN \ --policy file://rosa-key-policy.json \ --policy-name default
次のコマンドを実行してクラスターを作成します。
注記クラスター名が 15 文字を超える場合、
*.openshiftapps.com
にプロビジョニングされたクラスターのサブドメインとして自動生成されたドメイン接頭辞が含まれます。サブドメインをカスタマイズするには、
--domain-prefix
フラグを使用します。ドメイン接頭辞は 15 文字を超えてはならず、一意である必要があり、クラスターの作成後に変更できません。$ rosa create cluster --cluster-name <cluster_name> \ --subnet-ids <private_subnet_id>,<public_subnet_id> \ --sts \ --mode auto \ --machine-cidr 10.0.0.0/16 \ --compute-machine-type m5.xlarge \ --hosted-cp \ --region <aws_region> \ --oidc-config-id $OIDC_ID \ --kms-key-arn $KMS_ARN \ 1 --etcd-encryption-kms-arn $KMS_ARN \ 2 --operator-roles-prefix $OPERATOR_ROLES_PREFIX
検証
OpenShift Cluster Manager を使用して、KMS キーが機能することを確認できます。
- OpenShift Cluster Manager に移動し、Instances を選択します。
- インスタンスを選択します。
- Storage タブをクリックします。
- KMS key ID をコピーします。
- Key Management Service を検索して選択します。
- コピーした KMS key ID を Filter フィールドに入力します。
3.2. 次のステップ
3.3. 関連情報
- CLI を使用してクラスターを作成する方法は、CLI を使用した ROSA with HCP クラスターの作成 を参照してください。
- 手動モードを使用して ROSA クラスターをデプロイする手順は、カスタマイズを使用したクラスターの作成 を参照してください。
- STS を使用する Red Hat OpenShift Service on AWS をデプロイするのに必要な AWS Identity Access Management (IAM) リソースの詳細は、STS を使用するクラスターの IAM リソースについて を参照してください。
- オプションで Operator ロール名接頭辞を設定する方法の詳細は、カスタム Operator IAM ロール接頭辞について を参照してください。
- STS を使用する ROSA をインストールするための前提条件の詳細は、STS を使用する ROSA の AWS の前提条件 を参照してください。
-
auto
モードとmanual
モードを使用して必要な STS リソースを作成する方法の詳細は、自動デプロイメントモードと手動デプロイメントモードについて を参照してください。 - AWS IAM での OpenID Connect (OIDC) ID プロバイダーの使用の詳細は、Creating OpenID Connect (OIDC) identity providers を参照してください。
- ROSA クラスターのインストールのトラブルシューティングの詳細は、インストールのトラブルシューティング を参照してください。
- Red Hat サポートにサポートを依頼する手順は、Red Hat OpenShift Service on AWS のサポートを受ける を参照してください。
第4章 ROSA with HCP でのプライベートクラスターの作成
パブリックインターネットアクセスを必要としない Red Hat OpenShift Service on AWS (ROSA) with Hosted Control Plane (HCP) ワークロードの場合は、プライベートクラスターを作成できます。
4.1. ROSA CLI を使用したプライベート ROSA with HCP クラスターの作成
ROSA コマンドラインインターフェイス (CLI) rosa
を使用して、ROSA with HCP に複数のアベイラビリティーゾーン (Multi-AZ) を持つプライベートクラスターを作成できます。
前提条件
- 利用可能な AWS サービスクォータがある。
- AWS コンソールで ROSA サービスを有効にしている。
- インストールホストに最新バージョンの ROSA CLI をインストールして設定した。
手順
Hosted Control Plane を使用したクラスターの作成には、10 分ほどかかる場合があります。
少なくとも 1 つのプライベートサブネットを持つ VPC を作成します。マシンの Classless Inter-Domain Routing (CIDR) が、仮想プライベートクラウドの CIDR と一致していることを確認します。詳細は、独自の VPC を使用するための要件 および VPC 検証 を参照してください。
重要ファイアウォールを使用する場合は、ROSA が機能するのに必要なサイトにアクセスできるようにファイアウォールを設定する必要があります。
詳細は、「AWS PrivateLink ファイアウォールの前提条件」セクションを参照してください。
次のコマンドを実行して、アカウント全体の IAM ロールを作成します。
$ rosa create account-roles --hosted-cp
次のコマンドを実行して、OIDC 設定を作成します。
$ rosa create oidc-config --mode=auto --yes
OIDC 設定の ID を保存します。Operator ロールの作成に必要なためです。
出力例
I: Setting up managed OIDC configuration I: To create Operator Roles for this OIDC Configuration, run the following command and remember to replace <user-defined> with a prefix of your choice: rosa create operator-roles --prefix <user-defined> --oidc-config-id 28s4avcdt2l318r1jbk3ifmimkurk384 If you are going to create a Hosted Control Plane cluster please include '--hosted-cp' I: Creating OIDC provider using 'arn:aws:iam::46545644412:user/user' I: Created OIDC provider with ARN 'arn:aws:iam::46545644412:oidc-provider/oidc.op1.openshiftapps.com/28s4avcdt2l318r1jbk3ifmimkurk384'
次のコマンドを実行して、Operator ロールを作成します。
$ rosa create operator-roles --hosted-cp --prefix <operator_roles_prefix> --oidc-config-id <oidc_config_id> --installer-role-arn arn:aws:iam::$<account_roles_prefix>:role/$<account_roles_prefix>-HCP-ROSA-Installer-Role
次のコマンドを実行して、ROSA with HCP プライベートクラスターを作成します。
$ rosa create cluster --private --cluster-name=<cluster-name> --sts --mode=auto --hosted-cp --operator-roles-prefix <operator_role_prefix> --oidc-config-id <oidc_config_id> [--machine-cidr=<VPC CIDR>/16] --subnet-ids=<private-subnet-id1>[,<private-subnet-id2>,<private-subnet-id3>]
以下のコマンドを実行して Pod のステータスを確認します。クラスターの作成中、出力の
State
フィールドはpending
からinstalling
に移行し、最後にready
に移行します。$ rosa describe cluster --cluster=<cluster_name>
注記インストールが失敗する場合や、10 分経っても
State
フィールドがready
に変わらない場合は、関連情報セクションの「Red Hat OpenShift Service on AWS のインストールのトラブルシューティング」ドキュメントを参照してください。以下のコマンドを実行して、OpenShift インストーラーのログでクラスターの進捗を追跡します。
$ rosa logs install --cluster=<cluster_name> --watch
4.2. AWS PrivateLink エンドポイントに AWS セキュリティーグループをさらに追加する
ROSA with HCP クラスターでは、お客様の VPC で公開される AWS PrivateLink エンドポイントに、クラスターの Machine CIDR 範囲内から発信されるリクエストへのアクセスを制限するセキュリティーグループがあります。VPC ピアリング、トランジットゲートウェイ、またはその他のネットワーク接続を介して、VPC 外部のエンティティーにクラスターの API へのアクセスを許可するには、別のセキュリティーグループを作成して PrivateLink エンドポイントにアタッチし、必要なアクセスを許可する必要があります。
AWS PrivateLink エンドポイントへの追加の AWS セキュリティーグループの追加は、ROSA with HCP バージョン 4.17.2 以降でのみサポートされます。
前提条件
- 企業ネットワークまたは他の VPC に接続性がある。
- VPC 内でセキュリティーグループを作成して割り当てる権限を持っている。
手順
次のコマンドを実行して、クラスター名を環境変数として設定します。
$ export CLUSTER_NAME=<cluster_name>
次のコマンドを実行すると、変数が設定されたことを確認できます。
$ echo $CLUSTER_NAME
出力例
hcp-private
次のコマンドを実行して、VPC エンドポイント (VPCE) ID と VPC ID を見つけます。
$ read -r VPCE_ID VPC_ID <<< $(aws ec2 describe-vpc-endpoints --filters "Name=tag:api.openshift.com/id,Values=$(rosa describe cluster -c ${CLUSTER_NAME} -o yaml | grep '^id: ' | cut -d' ' -f2)" --query 'VpcEndpoints[].[VpcEndpointId,VpcId]' --output text)
警告デフォルトの AWS PrivateLink エンドポイントセキュリティーグループの変更または削除はサポートされておらず、予期しない動作が発生する可能性があります。
次のコマンドを実行して、追加のセキュリティーグループを作成します。
$ export SG_ID=$(aws ec2 create-security-group --description "Granting API access to ${CLUSTER_NAME} from outside of VPC" --group-name "${CLUSTER_NAME}-api-sg" --vpc-id $VPC_ID --output text)
次のコマンドを実行して、セキュリティーグループに受信 (Ingress) ルールを追加します。
$ aws ec2 authorize-security-group-ingress --group-id $SG_ID --ip-permissions FromPort=443,ToPort=443,IpProtocol=tcp,IpRanges=[{CidrIp=<cidr-to-allow>}] <.>
<.> アクセスを許可する CIDR ブロックを指定します。
次のコマンドを実行して、新しいセキュリティーグループを VPCE に追加します。
$ aws ec2 modify-vpc-endpoint --vpc-endpoint-id $VPCE_ID --add-security-group-ids $SG_ID
指定した CIDR ブロックから、ROSA with HCP プライベートクラスターの API にアクセスできるようになりました。
4.3. ROSA with HCP クラスター上の追加のプリンシパル
クラスターのプライベート API サーバーエンドポイントに接続するための追加プリンシパルとして、AWS Identity and Access Management (IAM) ロールを許可できます。
パブリックインターネットまたは VPC プライベートサブネット内で作成されたインターフェイスエンドポイントから、ROSA with HCP クラスターの API サーバーエンドポイントにアクセスできます。デフォルトでは、-kube-system-kube-controller-manager
Operator ロールを使用して、ROSA with HCP API サーバーへのプライベートアクセスが可能です。クラスターがインストールされているプライマリーアカウントを使用せずに、別のアカウントから直接 ROSA with HCP API サーバーにアクセスできるようにするには、追加のプリンシパルとして、クロスアカウント IAM ロールを含める必要があります。この機能を使用すると、ピアリングを回避したり、クロスアカウント VPC をクラスターの VPC にアタッチしたりして、ネットワークアーキテクチャーを簡素化し、データ転送コストを削減できます。

この図では、クラスターを作成するクラスターが Account A として指定されています。このアカウントは、別のアカウントである Account B に API サーバーへのアクセス権が必要であることを指定します。
追加の許可済みプリンシパルを設定した後、クロスアカウント ROSA with HCP API サーバーにアクセスする VPC にインターフェイス VPC エンドポイントを作成する必要があります。次に、Route53 にプライベートホストゾーンを作成し、クロスアカウント ROSA with HCP API サーバーへの呼び出しを、作成された VPC エンドポイントを通過するようにルーティングします。
4.3.1. ROSA with HCP クラスター作成時にプリンシパルを追加する
他のロールを介したアクセスを許可するには、--additional-allowed-principals
引数を使用します。
手順
次の例のように、
rosa create cluster
コマンドに--additional-allowed-principals
引数を追加します。$ rosa create cluster [...] --additional-allowed-principals <arn_string>
arn:aws:iam::account_id:role/role_name
を使用して、特定のロールを承認できます。クラスター作成コマンドを実行すると、
--additional-allowed-principals
が指定されたクラスター概要が表示されます。出力例
Name: mycluster Domain Prefix: mycluster Display Name: mycluster ID: <cluster-id> External ID: <cluster-id> Control Plane: ROSA Service Hosted OpenShift Version: 4.15.17 Channel Group: stable DNS: Not ready AWS Account: <aws_id> AWS Billing Account: <aws_id> API URL: Console URL: Region: us-east-2 Availability: - Control Plane: MultiAZ - Data Plane: SingleAZ Nodes: - Compute (desired): 2 - Compute (current): 0 Network: - Type: OVNKubernetes - Service CIDR: 172.30.0.0/16 - Machine CIDR: 10.0.0.0/16 - Pod CIDR: 10.128.0.0/14 - Host Prefix: /23 - Subnets: subnet-453e99d40, subnet-666847ce827 EC2 Metadata Http Tokens: optional Role (STS) ARN: arn:aws:iam::<aws_id>:role/mycluster-HCP-ROSA-Installer-Role Support Role ARN: arn:aws:iam::<aws_id>:role/mycluster-HCP-ROSA-Support-Role Instance IAM Roles: - Worker: arn:aws:iam::<aws_id>:role/mycluster-HCP-ROSA-Worker-Role Operator IAM Roles: - arn:aws:iam::<aws_id>:role/mycluster-kube-system-control-plane-operator - arn:aws:iam::<aws_id>:role/mycluster-openshift-cloud-network-config-controller-cloud-creden - arn:aws:iam::<aws_id>:role/mycluster-openshift-image-registry-installer-cloud-credentials - arn:aws:iam::<aws_id>:role/mycluster-openshift-ingress-operator-cloud-credentials - arn:aws:iam::<aws_id>:role/mycluster-openshift-cluster-csi-drivers-ebs-cloud-credentials - arn:aws:iam::<aws_id>:role/mycluster-kube-system-kms-provider - arn:aws:iam::<aws_id>:role/mycluster-kube-system-kube-controller-manager - arn:aws:iam::<aws_id>:role/mycluster-kube-system-capa-controller-manager Managed Policies: Yes State: waiting (Waiting for user action) Private: No Delete Protection: Disabled Created: Jun 25 2024 13:36:37 UTC User Workload Monitoring: Enabled Details Page: https://console.redhat.com/openshift/details/s/Bvbok4O79q1Vg8 OIDC Endpoint URL: https://oidc.op1.openshiftapps.com/vhufi5lap6vbl3jlq20e (Managed) Audit Log Forwarding: Disabled External Authentication: Disabled Additional Principals: arn:aws:iam::<aws_id>:role/additional-user-role
4.3.2. 既存の ROSA with HCP クラスターにプリンシパルを追加する
コマンドラインインターフェイス (CLI) を使用して、クラスターにプリンシパルをさらに追加できます。
手順
次のコマンドを実行してクラスターを編集し、このクラスターのエンドポイントにアクセスできる追加のプリンシパルを追加します。
$ rosa edit cluster -c <cluster_name> --additional-allowed-principals <arn_string>
arn:aws:iam::account_id:role/role_name
を使用して、特定のロールを承認できます。
4.4. 次のステップ
4.5. 関連情報
第5章 Egress ロックダウンを使用する Red Hat OpenShift Service on AWS クラスターの作成
Egress ロックダウンを使用する Red Hat OpenShift Service on AWS クラスターを作成すると、クラスターがインターネットにアクセスできない場合に、クラスターがローカルリージョンのイメージレジストリーを使用できるようになり、クラスターの安定性とセキュリティーが強化されます。クラスターは Quay からイメージをプルしようとしますが、イメージにアクセスできない場合は、代わりにローカルリージョンのイメージレジストリーからイメージをプルします。
次の AWS リージョンを使用するクラスターでのみ、Egress ロックダウンを使用できます。
-
us-west-1
-
us-west-2
-
us-east-1
-
us-east-2
-
ap-northeast-1
-
ap-northeast-2
-
ap-northeast-3
-
ap-south-1
-
ap-southeast-1
-
ap-southeast-2
-
ca-central-1
-
eu-central-1
-
eu-north-1
-
eu-west-1
-
eu-west-2
-
eu-west-3
-
sa-east-1
Egress ロックダウンを使用するすべてのパブリッククラスターとプライベートクラスターは、インターネット上のさまざまなエンドポイントやレジストリーからイメージを収集するのではなく、クラスターのローカルリージョンにあるレジストリーから Red Hat コンテナーイメージを取得します。Virtual Private Cloud (VPC) を設定し、クラスターの作成時に --properties zero_egress:true
フラグを使用することで、パブリック Egress を必要としない完全に機能するクラスターを作成できます。
Egress ロックダウンはテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
前提条件
- VPC、サブネット、その他の必要なインフラストラクチャーを作成するのに十分な権限を持つ AWS アカウントがある。
- Terraform v1.4.0+ CLI をインストールした。
- ROSA v1.2.45+ CLI をインストールした。
- 必要な認証情報を使用して AWS CLI をインストールし、設定した。
- git CLI をインストールした。
Egress ロックダウンは、Hosted Control Plane アーキテクチャーを使用する Red Hat OpenShift Service on AWS のすべてのサポートされているバージョンで使用できます。ただし、Red Hat では、各 OpenShift Container Platform バージョンで利用可能な最新の z-stream リリースを使用することを推奨しています。
通常のクラスターと同様にクラスターをインストールおよびアップグレードすることはできます。しかし、Egress ロックダウンを使用するクラスターでは、非接続環境での内部イメージレジストリーの機能に関するアップストリームの問題により、イメージレジストリーなどのすべてのプラットフォームコンポーネントを完全に使用することはできません。クラスターをアップグレードまたはインストールするときに、最新の ROSA バージョンを使用すると、この機能を復元できます。
5.1. Egress ロックダウン ROSA with HCP クラスター用の Virtual Private Cloud の作成
ROSA with HCP クラスターを作成するには、Virtual Private Cloud (VPC) が必要です。VPC は次のいずれかの方法を使用して作成できます。
- Terraform テンプレートを使用して VPC を作成する
- AWS コンソールで VPC リソースを手動で作成する
Terraform の手順はテストとデモンストレーションを目的としています。実際のインストールでは、お客様のニーズと制約に合わせて VPC を変更する必要があります。また、次の Terraform スクリプトを使用する場合は、クラスターをインストールする予定のリージョンと同じリージョン内にスクリプトがあることを確認してください。
5.1.1. Terraform を使用した Virtual Private Cloud の作成
Terraform は、確立されたテンプレートを使用してさまざまなリソースを作成できるツールです。次のプロセスでは、必要に応じてデフォルトのオプションを使用して、ROSA with HCP クラスターを作成します。Terraform の使用の詳細は、関連情報を参照してください。
前提条件
- マシンに Terraform バージョン 1.4.0 以降がインストールされている。
- マシンに Git がインストールされている。
手順
シェルプロンプトを開き、次のコマンドを実行して Terraform VPC リポジトリーのクローンを作成します。
$ git clone https://github.com/openshift-cs/terraform-vpc-example
次のコマンドを実行して、作成したディレクトリーに移動します。
$ cd terraform-vpc-example/zero-egress
次のコマンドを実行して、Terraform ファイルを開始します。
$ terraform init
このプロセスが完了すると、初期化を確認するメッセージが表示されます。
既存の Terraform テンプレートに基づいて VPC Terraform プランを構築するには、
plan
コマンドを実行します。AWS リージョン、アベイラビリティーゾーン、CIDR ブロック、プライベートサブネットを含める必要があります。クラスター名を指定することもできます。terraform plan
が完了すると、rosa-zero-egress.tfplan
ファイルがhypershift-tf
ディレクトリーに追加されます。オプションの詳細は、Terraform VPC リポジトリーの README ファイル を参照してください。$ terraform plan -out rosa-zero-egress.tfplan -var region=<aws_region> \ 1 -var 'availability_zones=["aws_region_1a","aws_region_1b","aws_region_1c"]'\ 2 -var vpc_cidr_block=10.0.0.0/16 \ 3 -var 'private_subnets=["10.0.0.0/24", "10.0.1.0/24", "10.0.2.0/24"]' 4
- 1
- AWS リージョンを入力します。重要
Egress ロックダウンは、AWS リージョン
us-west-1、us-west-2、us-east-1、us-east-2、ap-northeast-1、ap-northeast-2、ap-northeast-3、ap-south-1、ap-southeast-1、ap-southeast-2、ca-central-1、eu-central-1、eu-north-1、eu-west-1、eu-west-2、eu-west-3
、およびsa-east-1
を使用するクラスターでのみ使用できます。 - 2
- VPC のアベイラビリティーゾーンを入力します。たとえば、
ap-southeast-1
を使用する VPC の場合、アベイラビリティーゾーンとして["ap-southeast-1a", "ap-southeast-1b", "ap-southeast-1c"]
を使用します。 - 3
- VPC の CIDR ブロックを入力します。
- 4
- VPC 用に作成する各サブネットを入力します。
次のコマンドを実行して、このプランファイルを適用して VPC を構築します。
$ terraform apply rosa-zero-egress.tfplan
関連情報
- ニーズに合わせて VPC をカスタマイズする際に使用できるすべてのオプションの詳細なリストについては、Zero Egress Terraform VPC Example リポジトリーを参照してください。
5.1.2. Virtual Private Cloud を手動で作成する
Terraform を使用する代わりに Virtual Private Cloud (VPC) を手動で作成することを選択した場合は、AWS コンソールの VPC ページ に移動します。VPC は、次の表に示す要件を満たしている必要があります。
要件 | 詳細 |
---|---|
VPC 名 | クラスターを作成するときは、特定の VPC 名と ID が必要です。 |
CIDR 範囲 | VPC CIDR 範囲はマシンの CIDR と一致する必要があります。 |
アベイラビリティーゾーン | 単一ゾーンの場合は 1 つの可用性ゾーンが必要で、複数ゾーンの場合は 3 つの可用性ゾーンが必要です。 |
パブリックサブネット | パブリッククラスターには、インターネットゲートウェイを備えたパブリックサブネットが 1 つ必要です。 |
プライベートサブネット | ROSA HCP クラスターにマシンプールをインストールするには、各アベイラビリティーゾーン (AZ) にプライベートサブネットが 1 つだけ必要です。インスタンスのアウトバウンドインターネットアクセスを許可するために、このサブネットに NAT ゲートウェイを関連付けることができます。プライベートクラスターにはパブリックサブネットは必要ありません。 |
DNS ホスト名と解決 | DNS ホスト名と解決が有効になっていることを確認する必要があります。 |
サブネットへのタグ付け
VPC を使用して ROSA with HCP クラスターを作成する前に、VPC サブネットにタグを付ける必要があります。自動サービスのプリフライトチェックでは、これらのリソースを使用する前に、これらのリソースが正しくタグ付けされていることを確認します。次の表は、リソースを次のようにタグ付けする方法を示しています。
リソース | キー | 値 |
---|---|---|
パブリックサブネット |
|
|
プライベートサブネット |
|
|
少なくとも 1 つのプライベートサブネットと、該当する場合は 1 つのパブリックサブネットにタグを付ける必要があります。
前提条件
- VPC を作成している。
-
aws
CLI をインストールしている。
手順
次のコマンドを実行して、ターミナルでリソースにタグを付けます。
パブリックサブネットの場合は、以下を実行します。
$ aws ec2 create-tags --resources <public-subnet-id> --region <aws_region> --tags Key=kubernetes.io/role/elb,Value=1
プライベートサブネットの場合は、以下を実行します。
$ aws ec2 create-tags --resources <private-subnet-id> --region <aws_region> --tags Key=kubernetes.io/role/internal-elb,Value=1
検証
次のコマンドを実行して、タグが正しく適用されていることを確認します。
$ aws ec2 describe-tags --filters "Name=resource-id,Values=<subnet_id>"
出力例
TAGS Name <subnet-id> subnet <prefix>-subnet-public1-us-east-1a TAGS kubernetes.io/role/elb <subnet-id> subnet 1
AWS セキュリティーグループと PrivateLink 接続の設定
VPC を作成したら、AWS セキュリティーグループと VPC エンドポイントを作成します。
手順
次のコマンドを実行して AWS セキュリティーグループを作成します。
$ aws ec2 create-security-group \ --group-name allow-inbound-traffic \ --description "allow inbound traffic" \ --vpc-id <vpc_id> \ 1 --region <aws_region> \ 2
次のコマンドを実行して、セキュリティーグループの Ingress へのアクセスを許可します。
$ aws ec2 authorize-security-group-ingress \ --group-id <group_id> \ 1 --protocol -1 \ --port 0-0 \ --cidr <vpc_cidr> \ 2 --region <aws_region> \ 3
次のコマンドを実行して、STS VPC エンドポイントを作成します。
$ aws ec2 create-vpc-endpoint \ --vpc-id <vpc_id> \ 1 --service-name com.amazonaws.<aws_region>.sts \ 2 --vpc-endpoint-type Interface
次のコマンドを実行して、ECR VPC エンドポイントを作成します。
$ aws ec2 create-vpc-endpoint \ --vpc-id <vpc_id> \ --service-name com.amazonaws.<aws_region>.ecr.dkr \ 1 --vpc-endpoint-type Interface
- 1
- VPC が配置されている AWS リージョンを入力します。
次のコマンドを実行して、S3 VPC エンドポイントを作成します。
$ aws ec2 create-vpc-endpoint \ --vpc-id <vpc_id> \ --service-name com.amazonaws.<aws_region>.s3
5.2. アカウント全体の STS ロールおよびポリシーの作成
Red Hat OpenShift Service on AWS (ROSA) CLI (rosa
) を使用して、Red Hat OpenShift Service on AWS (ROSA) with Hosted Control Plane クラスターを作成する前に、Operator ポリシーを含む、必要なアカウント全体のロールとポリシーを作成します。
ROSA with HCP クラスターには、AWS 管理ポリシーがアタッチされたアカウントと Operator ロールが必要です。顧客管理のポリシーはサポートされていません。ROSA with HCP クラスターの AWS 管理ポリシーの詳細は、AWS managed policies for ROSA account roles を参照してください。
前提条件
- ROSA with HCP の AWS の前提条件を完了している。
- 利用可能な AWS サービスクォータがある。
- AWS コンソールで ROSA サービスを有効にしている。
-
インストールホストに、最新の ROSA CLI (
rosa
) をインストールして設定している。 - ROSA CLI を使用して Red Hat アカウントにログインしている。
手順
AWS アカウントに存在しない場合は、次のコマンドを実行して、必要なアカウント全体の STS ロールを作成し、ポリシーをアタッチします。
$ rosa create account-roles --hosted-cp
次のコマンドを実行して、ワーカーロールに正しい AWS ポリシーがあることを確認します。
$ aws iam attach-role-policy \ --role-name ManagedOpenShift-HCP-ROSA-Worker-Role \ 1 --policy-arn "arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"
- 1
- このロールに、前のステップで作成された接頭辞が含まれている必要があります。
オプション: 次のコマンドを実行して、接頭辞を環境変数として設定します。
$ export ACCOUNT_ROLES_PREFIX=<account_role_prefix>
次のコマンドを実行して、変数の値を表示します。
$ echo $ACCOUNT_ROLES_PREFIX
出力例
ManagedOpenShift
ROSA の AWS 管理 IAM ポリシーの詳細は、AWS managed IAM policies for ROSA を参照してください。
5.3. OpenID Connect 設定の作成
ROSA with HCP クラスターを使用する場合は、クラスターを作成する前に OpenID Connect (OIDC) 設定を作成する必要があります。この設定は、OpenShift Cluster Manager で使用するために登録されています。
前提条件
- ROSA with HCP の AWS の前提条件を完了している。
- Red Hat OpenShift Service on AWS の AWS 前提条件を完了している。
-
インストールホストに、最新の Red Hat OpenShift Service on AWS (ROSA) CLI (
rosa
) をインストールして設定している。
手順
AWS リソースと一緒に OIDC 設定を作成するには、次のコマンドを実行します。
$ rosa create oidc-config --mode=auto --yes
このコマンドは次の情報を返します。
出力例
? Would you like to create a Managed (Red Hat hosted) OIDC Configuration Yes I: Setting up managed OIDC configuration I: To create Operator Roles for this OIDC Configuration, run the following command and remember to replace <user-defined> with a prefix of your choice: rosa create operator-roles --prefix <user-defined> --oidc-config-id 13cdr6b If you are going to create a Hosted Control Plane cluster please include '--hosted-cp' I: Creating OIDC provider using 'arn:aws:iam::4540112244:user/userName' ? Create the OIDC provider? Yes I: Created OIDC provider with ARN 'arn:aws:iam::4540112244:oidc-provider/dvbwgdztaeq9o.cloudfront.net/13cdr6b'
クラスターを作成するときは、OIDC 設定 ID を指定する必要があります。CLI 出力では、
--mode auto
のこの値が提供されます。それ以外の場合は、--mode manual
のaws
CLI 出力に基づいてこれらの値を決定する必要があります。オプション: OIDC 設定 ID を変数として保存して、後で使用できます。次のコマンドを実行して変数を保存します。
$ export OIDC_ID=<oidc_config_id>1
- 1
- 上記の出力例では、OIDC 設定 ID は 13cdr6b です。
次のコマンドを実行して、変数の値を表示します。
$ echo $OIDC_ID
出力例
13cdr6b
検証
ユーザー組織に関連付けられているクラスターで使用できる可能な OIDC 設定をリストできます。以下のコマンドを実行します。
$ rosa list oidc-config
出力例
ID MANAGED ISSUER URL SECRET ARN 2330dbs0n8m3chkkr25gkkcd8pnj3lk2 true https://dvbwgdztaeq9o.cloudfront.net/2330dbs0n8m3chkkr25gkkcd8pnj3lk2 233hvnrjoqu14jltk6lhbhf2tj11f8un false https://oidc-r7u1.s3.us-east-1.amazonaws.com aws:secretsmanager:us-east-1:242819244:secret:rosa-private-key-oidc-r7u1-tM3MDN
5.4. Operator のロールとポリシーの作成
ROSA with HCP クラスターを使用する場合は、Red Hat OpenShift Service on AWS (ROSA) with Hosted Control Plane (HCP) デプロイメントに必要な Operator IAM ロールを作成する必要があります。クラスター Operator は、Operator のロールを使用して、バックエンドストレージ、クラウドプロバイダーの認証情報、クラスターへの外部アクセスの管理など、クラスター操作を実行するために必要な一時的なアクセス許可を取得します。
前提条件
- ROSA with HCP の AWS の前提条件を完了している。
-
インストールホストに、最新の Red Hat OpenShift Service on AWS (ROSA) CLI (
rosa
) をインストールして設定している。 - アカウント全体の AWS ロールを作成している。
手順
次のコマンドを使用して、接頭辞名を環境変数に設定します。
$ export OPERATOR_ROLES_PREFIX=<prefix_name>
Operator ロールを作成するには、次のコマンドを実行します。
$ rosa create operator-roles --hosted-cp --prefix=$OPERATOR_ROLES_PREFIX --oidc-config-id=$OIDC_ID --installer-role-arn arn:aws:iam::${AWS_ACCOUNT_ID}:role/${ACCOUNT_ROLES_PREFIX}-HCP-ROSA-Installer-Role
次の内訳は、Operator ロール作成のオプションを示しています。
$ rosa create operator-roles --hosted-cp --prefix=$OPERATOR_ROLES_PREFIX 1 --oidc-config-id=$OIDC_ID 2 --installer-role-arn arn:aws:iam::${AWS_ACCOUNT_ID}:role/${ACCOUNT_ROLES_PREFIX}-HCP-ROSA-Installer-Role 3
ROSA with HCP クラスター用の正しいロールを作成するには、
--hosted-cp
パラメーターを含める必要があります。このコマンドは次の情報を返します。出力例
? Role creation mode: auto ? Operator roles prefix: <pre-filled_prefix> 1 ? OIDC Configuration ID: 23soa2bgvpek9kmes9s7os0a39i13qm4 | https://dvbwgdztaeq9o.cloudfront.net/23soa2bgvpek9kmes9s7os0a39i13qm4 2 ? Create hosted control plane operator roles: Yes W: More than one Installer role found ? Installer role ARN: arn:aws:iam::4540112244:role/<prefix>-HCP-ROSA-Installer-Role ? Permissions boundary ARN (optional): I: Reusable OIDC Configuration detected. Validating trusted relationships to operator roles: I: Creating roles using 'arn:aws:iam::4540112244:user/<userName>' I: Created role '<prefix>-openshift-cluster-csi-drivers-ebs-cloud-credentials' with ARN 'arn:aws:iam::4540112244:role/<prefix>-openshift-cluster-csi-drivers-ebs-cloud-credentials' I: Created role '<prefix>-openshift-cloud-network-config-controller-cloud-credenti' with ARN 'arn:aws:iam::4540112244:role/<prefix>-openshift-cloud-network-config-controller-cloud-credenti' I: Created role '<prefix>-kube-system-kube-controller-manager' with ARN 'arn:aws:iam::4540112244:role/<prefix>-kube-system-kube-controller-manager' I: Created role '<prefix>-kube-system-capa-controller-manager' with ARN 'arn:aws:iam::4540112244:role/<prefix>-kube-system-capa-controller-manager' I: Created role '<prefix>-kube-system-control-plane-operator' with ARN 'arn:aws:iam::4540112244:role/<prefix>-kube-system-control-plane-operator' I: Created role '<prefix>-kube-system-kms-provider' with ARN 'arn:aws:iam::4540112244:role/<prefix>-kube-system-kms-provider' I: Created role '<prefix>-openshift-image-registry-installer-cloud-credentials' with ARN 'arn:aws:iam::4540112244:role/<prefix>-openshift-image-registry-installer-cloud-credentials' I: Created role '<prefix>-openshift-ingress-operator-cloud-credentials' with ARN 'arn:aws:iam::4540112244:role/<prefix>-openshift-ingress-operator-cloud-credentials' I: To create a cluster with these roles, run the following command: rosa create cluster --sts --oidc-config-id 23soa2bgvpek9kmes9s7os0a39i13qm4 --operator-roles-prefix <prefix> --hosted-cp
これで、Operator ロールが作成され、ROSA with HCP クラスターの作成に使用できるようになりました。
検証
ROSA アカウントに関連付けられている Operator ロールをリスト表示できます。以下のコマンドを実行します。
$ rosa list operator-roles
出力例
I: Fetching operator roles ROLE PREFIX AMOUNT IN BUNDLE <prefix> 8 ? Would you like to detail a specific prefix Yes 1 ? Operator Role Prefix: <prefix> ROLE NAME ROLE ARN VERSION MANAGED <prefix>-kube-system-capa-controller-manager arn:aws:iam::4540112244:role/<prefix>-kube-system-capa-controller-manager 4.13 No <prefix>-kube-system-control-plane-operator arn:aws:iam::4540112244:role/<prefix>-kube-system-control-plane-operator 4.13 No <prefix>-kube-system-kms-provider arn:aws:iam::4540112244:role/<prefix>-kube-system-kms-provider 4.13 No <prefix>-kube-system-kube-controller-manager arn:aws:iam::4540112244:role/<prefix>-kube-system-kube-controller-manager 4.13 No <prefix>-openshift-cloud-network-config-controller-cloud-credenti arn:aws:iam::4540112244:role/<prefix>-openshift-cloud-network-config-controller-cloud-credenti 4.13 No <prefix>-openshift-cluster-csi-drivers-ebs-cloud-credentials arn:aws:iam::4540112244:role/<prefix>-openshift-cluster-csi-drivers-ebs-cloud-credentials 4.13 No <prefix>-openshift-image-registry-installer-cloud-credentials arn:aws:iam::4540112244:role/<prefix>-openshift-image-registry-installer-cloud-credentials 4.13 No <prefix>-openshift-ingress-operator-cloud-credentials arn:aws:iam::4540112244:role/<prefix>-openshift-ingress-operator-cloud-credentials 4.13 No
- 1
- コマンドを実行すると、AWS アカウントに関連付けられているすべての接頭辞が表示され、この接頭辞に関連付けられているロールの数が記録されます。これらのロールとその詳細をすべて表示する必要がある場合は、詳細プロンプトで "Yes" と入力すると、これらのロールが詳細とともにリストされます。
5.5. Egress ロックダウンを使用する ROSA with HCP クラスターを CLI を使用して作成する
Red Hat OpenShift Service on AWS (ROSA) コマンドラインインターフェイス (CLI) rosa
を使用してクラスターを作成する場合、デフォルトのオプションを選択してクラスターをすばやく作成できます。
前提条件
- ROSA with HCP の AWS の前提条件を完了している。
- 利用可能な AWS サービスクォータがある。
- AWS コンソールで ROSA サービスを有効にしている。
-
インストールホストに、最新の ROSA CLI (
rosa
) をインストールして設定している。rosa version
を実行して、現在インストールされている ROSA CLI のバージョンを確認します。新しいバージョンが利用可能な場合、CLI はこのアップグレードをダウンロードするためのリンクを提供します。 - ROSA CLI を使用して Red Hat アカウントにログインしている。
- OIDC 設定が作成されている。
- AWS Elastic Load Balancing (ELB) サービスロールが AWS アカウントに存在することを確認している。
手順
ROSA with HCP クラスターを作成するには、次のいずれかのコマンドを使用します。
注記ROSA with HCP クラスターを作成する場合、デフォルトのマシン Classless Inter-Domain Routing (CIDR) は
10.0.0.0/16
です。これが VPC サブネットの CIDR 範囲に対応していない場合は、次のコマンドに--machine-cidr <address_block>
を追加します。Red Hat OpenShift Service on AWS のデフォルト CIDR 範囲の詳細は、「CIDR 範囲の定義」を参照してください。環境変数を設定していない場合は、次のコマンドを実行します。
$ rosa create cluster --cluster-name=<cluster_name> \ <.> --mode=auto --hosted-cp [--private] \ <.> --operator-roles-prefix <operator-role-prefix> \ <.> --oidc-config-id <id-of-oidc-configuration> \ --subnet-ids=<private-subnet-id> --region <region> \ --machine-cidr 10.0.0.0/16 --service-cidr 172.30.0.0/16 \ --pod-cidr 10.128.0.0/14 --host-prefix 23 \ --billing-account <root-acct-id> \ <.> --properties zero_egress:true
<.> クラスターの名前を指定します。クラスター名が 15 文字を超える場合、openshiftapps.com でプロビジョニングされたクラスターのサブドメインとして自動生成されたドメイン接頭辞が含まれます。サブドメインをカスタマイズするには、
--domain-prefix
フラグを使用します。ドメイン接頭辞は、15 文字を超えてはならず、一意である必要があり、クラスターの作成後に変更することはできません。<.> デフォルトでは、クラスター固有の Operator ロール名に、クラスター名とランダムな 4 桁のハッシュが接頭辞として付けられます。オプションで、ロール名の<cluster_name>-<hash>
を置き換えるカスタム接頭辞を指定できます。接頭辞は、クラスター固有の Operator IAM ロールを作成するときに適用されます。接頭辞の詳細は、カスタム Operator IAM ロール接頭辞について を参照してください。+
注記関連するアカウント全体のロールを作成したときにカスタム ARN パスを指定した場合、カスタムパスは自動的に検出されます。カスタムパスは、後のステップで作成するときに、クラスター固有の Operator ロールに適用されます。
<.> すべての請求を負担する AWS アカウントを指定します。
環境変数を設定する場合、単一の初期マシンプールを持ち、プライベートに利用可能な API および Ingress を使用する Egress ロックダウンを備えたクラスターを作成するには、次のコマンドを実行します。
$ rosa create cluster --private --cluster-name=<cluster_name> \ --mode=auto --hosted-cp --operator-roles-prefix=$OPERATOR_ROLES_PREFIX \ --oidc-config-id=$OIDC_ID --subnet-ids=$SUBNET_IDS \ --region <region> --machine-cidr 10.0.0.0/16 --service-cidr 172.30.0.0/16 \ --pod-cidr 10.128.0.0/14 --host-prefix 23 --billing-account <root-acct-id> \ --private --properties zero_egress:true
次のコマンドを実行して、クラスターのステータスを確認します。
$ rosa describe cluster --cluster=<cluster_name>
クラスターのインストールが進むにつれて、
State
フィールドが次のように変わり、出力に表示されます。-
pending (Preparing account)
-
installing (DNS setup in progress)
-
installing
ready
注記インストールが失敗した場合や、
State
フィールドが 10 分以上ready
に変わらない場合は、インストールのトラブルシューティングのドキュメントで詳細を確認してください。詳細は、インストールのトラブルシューティングを参照してください。Red Hat サポートにサポートを依頼する手順は、Red Hat OpenShift Service on AWS のサポートを受ける を参照してください。
-
Red Hat OpenShift Service on AWS インストールプログラムのログを監視して、クラスターの作成の進行状況を追跡します。ログを確認するには、次のコマンドを実行します。
$ rosa logs install --cluster=<cluster_name> --watch \ <.>
<.> オプション: インストールの進行中に新しいログメッセージを監視するには、
--watch
引数を使用します。
第6章 外部認証を使用した ROSA with HCP クラスターの作成
組み込みの OpenShift OAuth サーバーを置き換えて、外部の OpenID Connect (OIDC) アイデンティティープロバイダーを使用して認証用のトークンを発行する Hosted Control Plane (HCP) クラスターを使用して、Red Hat OpenShift Service on AWS (ROSA) を作成できます。組み込みの OpenShift OAuth サーバーは、外部 OIDC アイデンティティープロバイダーを含むさまざまなアイデンティティープロバイダーとの統合をサポートしていますが、OAuth サーバー自体の機能に制限されています。CLI などのマシン間ワークフローを容易にし、組み込みの OpenShift OAuth サーバーを使用するときには利用できない追加機能を提供するために、外部の OIDC アイデンティティープロバイダーを ROSA with HCP クラスターに直接統合できます。
既存の ROSA クラスターを Hosted Control Plane アーキテクチャーにアップグレードまたは変換することはできないため、ROSA with HCP の機能を使用するには新しいクラスターを作成する必要があります。また、外部認証プロバイダーを使用するように作成されたクラスターを、内部 OAuth2 サーバーを使用するように変換することもできません。新しいクラスターも作成する必要があります。
現在、ROSA with HCP では 複数の AWS アカウント間での VPC の共有 はサポートされていません。別の AWS アカウントから共有されているサブネットに ROSA with HCP クラスターをインストールしないでください。詳細は、"Are multiple ROSA clusters in a single VPC supported?" を参照してください。
ROSA with HCP クラスターは、Security Token Service (STS) 認証のみをサポートします。
関連資料
- ROSA CLI を使用して自動モードで ROSA with HCP の使用を開始する方法 は、AWS ドキュメントを参照してください。
6.1. ROSA with HCP の前提条件
ROSA with HCP クラスターを作成するには、次の手順を完了する必要があります。
- AWS の前提条件 を満たしている。
- 仮想プライベートクラウド (VPC) を設定している。
- アカウント全体のロール を作成している。
- OIDC 設定 を作成している。
- Operator ロール を作成している。
6.2. 外部認証プロバイダーを使用する ROSA with HCP クラスターの作成
外部認証サービスを使用するクラスターを作成するには、ROSA CLI で --external-auth-providers-enabled
フラグを使用します。
ROSA with HCP クラスターを作成する場合、デフォルトのマシン Classless Inter-Domain Routing (CIDR) は 10.0.0.0/16
です。これが VPC サブネットの CIDR 範囲に対応していない場合は、次のコマンドに --machine-cidr <address_block>
を追加します。
手順
OIDC_ID
、SUBNET_IDS
、およびOPERATOR_ROLES_PREFIX
変数を使用して環境を準備した場合は、これらの変数をクラスターの作成時にも引き続き使用できます。たとえば、以下のコマンドを実行します。$ rosa create cluster --hosted-cp --subnet-ids=$SUBNET_IDS \ --oidc-config-id=$OIDC_ID --cluster-name=<cluster_name> \ --operator-roles-prefix=$OPERATOR_ROLES_PREFIX \ --external-auth-providers-enabled
環境変数を設定していない場合は、以下のコマンドを実行します。
$ rosa create cluster --cluster-name=<cluster_name> --sts --mode=auto \ --hosted-cp --operator-roles-prefix <operator-role-prefix> \ --oidc-config-id <ID-of-OIDC-configuration> \ --external-auth-providers-enabled \ --subnet-ids=<public-subnet-id>,<private-subnet-id>
検証
次のコマンドを実行して、クラスターの詳細で外部認証が有効になっていることを確認します。
$ rosa describe cluster --cluster=<cluster_name>
Name: rosa-ext-test Display Name: rosa-ext-test ID: <cluster_id> External ID: <cluster_ext_id> Control Plane: ROSA Service Hosted OpenShift Version: 4.17.0 Channel Group: stable DNS: <dns> AWS Account: <AWS_id> AWS Billing Account: <AWS_id> API URL: <ocm_api> Console URL: Region: us-east-1 Availability: - Control Plane: MultiAZ - Data Plane: SingleAZ Nodes: - Compute (desired): 2 - Compute (current): 0 Network: - Type: OVNKubernetes - Service CIDR: <service_cidr> - Machine CIDR: <machine_cidr> - Pod CIDR: <pod_cidr> - Host Prefix: /23 - Subnets: <subnet_ids> EC2 Metadata Http Tokens: optional Role (STS) ARN: arn:aws:iam::<AWS_id>:role/<account_roles_prefix>-HCP-ROSA-Installer-Role Support Role ARN: arn:aws:iam::<AWS_id>:role/<account_roles_prefix>-HCP-ROSA-Support-Role Instance IAM Roles: - Worker: arn:aws:iam::<AWS_id>:role/<account_roles_prefix>-HCP-ROSA-Worker-Role Operator IAM Roles: - arn:aws:iam::<AWS_id>:role/<operator_roles_prefix>-openshift-cloud-network-config-controller-clo - arn:aws:iam::<AWS_id>:role/<operator_roles_prefix>-kube-system-capa-controller-manager - arn:aws:iam::<AWS_id>:role/<operator_roles_prefix>-kube-system-control-plane-operator - arn:aws:iam::<AWS_id>:role/<operator_roles_prefix>-kube-system-kms-provider - arn:aws:iam::<AWS_id>:role/<operator_roles_prefix>-kube-system-kube-controller-manager - arn:aws:iam::<AWS_id>:role/<operator_roles_prefix>-openshift-image-registry-installer-cloud-cred - arn:aws:iam::<AWS_id>:role/<operator_roles_prefix>-openshift-ingress-operator-cloud-credentials - arn:aws:iam::<AWS_id>:role/<operator_roles_prefix>-openshift-cluster-csi-drivers-ebs-cloud-crede Managed Policies: Yes State: ready Private: No Created: Mar 29 2024 14:25:52 UTC User Workload Monitoring: Enabled Details Page: https://<url> OIDC Endpoint URL: https://<endpoint> (Managed) Audit Log Forwarding: Disabled External Authentication: Enabled 1
- 1
External Authentication
フラグが有効になり、外部認証プロバイダーを作成できるようになりました。
6.3. 外部認証プロバイダーの作成
外部認証プロバイダーのオプションを有効にして ROSA with HCP クラスターを作成した後、ROSA CLI を使用してプロバイダーを作成する必要があります。
ROSA CLI の rosa create|delete|list idp[s]
コマンドと同様に、rosa create external-auth-provider
を使用して作成した既存のアイデンティティープロバイダーを編集できません。代わりに、外部認証プロバイダーを削除して、新しい認証プロバイダーを作成する必要があります。
次の表は、外部認証プロバイダーを作成するときに使用できる CLI フラグを示しています。
CLI フラグ | 説明 |
---|---|
| クラスターの名前または ID。 |
| 外部認証プロバイダーを参照するために使用される名前。 |
| この文字列は、アカウントをアプリケーションに関連付けるために使用されるクライアントシークレット。クライアントシークレットを含めない場合、このコマンドはパブリック OIDC OAuthClient を使用します。 |
| これは、トークンオーディエンスのコンマ区切りリストです。 |
| トークン発行者の URL。 |
| クラスターアイデンティティーのユーザー名を構築するために使用されるクレームの名前。 |
| クラスターアイデンティティーのグループー名を構築するために使用されるクレームの名前。 |
手順
対話型コマンドインターフェイスを使用するには、次のコマンドを実行します。
$ rosa create external-auth-provider -c <cluster_name>
I: Enabling interactive mode ? Name: 1 ? Issuer audiences: 2 ? The serving url of the token issuer: 3 ? CA file path (optional): 4 ? Claim mapping username: 5 ? Claim mapping groups: 6 ? Claim validation rule (optional): 7 ? Console client id (optional): 8
- 1
- 外部認証プロバイダーの名前。この名前は、数字とダッシュが含まれる小文字である必要があります。
- 2
- この認証プロバイダーがトークンを発行するオーディエンス ID。
- 3
- トークンを提供する発行者の URL。
- 4
- オプション: リクエストを行うときに使用する証明書ファイル。
- 5
メール
の使用など、クラスターアイデンティティーのユーザー名を構築するために使用されるクレームの名前。- 6
グループ
の使用など、ID トークンをクラスターアイデンティティーに変換する方法。- 7
- オプション: ユーザーを認証するトークン要求を検証するのに役立つルール。このフィールドは、
:<required_value>
の形式にする必要があります。 - 8
- オプション: アプリ登録でコンソールに使用するアプリケーションまたはクライアント ID。
次のコマンドを使用して、外部認証プロバイダーを作成するために必要な ID を含めることができます。
rosa create external-auth-provider --cluster=<cluster_id> \ --name=<provider_name> --issuer-url=<issuing_url> \ --issuer-audiences=<audience_id> \ --claim-mapping-username-claim=email \ --claim-mapping-groups-claim=groups \ --console-client-id=<client_id_for_app_registration> \ --console-client-secret=<client_secret>
出力例
I: Successfully created an external authentication provider for cluster '<cluster_id>'
検証
外部認証プロバイダーを確認するには、次のいずれかのオプションを実行します。
次のコマンドを使用して、指定されたクラスターの外部認証設定をリスト表示します。
$ rosa list external-auth-provider -c <cluster_name>
出力例
次の例は、設定された Microsoft Entra ID 外部認証プロバイダーを示しています。
NAME ISSUER URL m-entra-id https://login.microsoftonline.com/<group_id>/v2.0
次のコマンドを使用して、指定されたクラスターの外部認証設定を表示します。
$ rosa describe external-auth-provider \ -c <cluster_name> --name <name_of_external_authentication>
出力例
ID: ms-entra-id Cluster ID: <cluster_id> Issuer audiences: - <audience_id> Issuer Url: https://login.microsoftonline.com/<group_id>/v2.0 Claim mappings group: groups Claim mappings username: email
関連情報
- IDP 用に Entra ID を設定する方法の詳細は、Azure ドキュメントの What is Microsoft Entra ID? または Microsoft Entra ID (旧称 Azure Active Directory) のアイデンティティープロバイダーとしての設定 ドキュメントのチュートリアルセクションを参照してください。
6.4. ROSA with HCP の break glass 認証情報の作成
ROSA with HCP クラスターの所有者は、break glass 認証情報を使用して一時的な管理クライアント認証情報を作成し、カスタム OpenID Connect (OIDC) トークン発行者を指定して設定されたクラスターにアクセスできます。Break Glass 認証情報を作成すると、新しい cluster-admin kubeconfig
ファイルが生成されます。kubeconfig
ファイルには、CLI がクライアントを正しいクラスターと API サーバーに接続するために使用するクラスターに関する情報が含まれています。新しく生成された kubeconfig
ファイルを使用して、ROSA with HCP クラスターへのアクセスを許可できます。
前提条件
- 外部認証を有効にした ROSA with HCP クラスターが作成されている。詳細は、外部認証プロバイダーを使用する HCP クラスターを使用した ROSA with HCP の作成 を参照してください。
- 外部認証プロバイダーが作成されている。詳細は、外部認証プロバイダーの作成 を参照してください。
-
cluster admin
権限が割り当てられたアカウントがある。
手順
次のいずれかのコマンドを使用して、Break Glass 認証情報を作成します。
対話型コマンドインターフェイスを使用してカスタム設定を対話的に指定し、ブレークグラス認証情報を作成するには、次のコマンドを実行します。
$ rosa create break-glass-credential -c <cluster_name> -i 1
- 1
- <cluster_name> は、クラスターの名前に置き換えます。
このコマンドは、対話型 CLI プロセスを開始します。
出力例
I: Enabling interactive mode ? Username (optional): 1 ? Expiration duration (optional): 2 I: Successfully created a break glass credential for cluster 'ac-hcp-test'.
指定された値を使用して、
mycluster
というクラスターの Break Glass 認証情報を作成するには以下を実行します。$ rosa create break-glass-credential -c mycluster --username test-username --expiration 1h
次のコマンドを実行して、
mycluster
というクラスターで使用可能な Break Glass 認証情報 ID、ステータス、および関連ユーザーをリスト表示します。$ rosa list break-glass-credential -c mycluster
出力例
ID USERNAME STATUS 2a7jli9n4phe6c02ul7ti91djtv2o51d test-user issued
注記コマンドに
-o json
引数を追加することで、JSON 出力で認証情報を表示することもできます。break glass 認証情報のステータスを表示するには、<break_glass_credential_id> をブレークグラス認証情報 ID に置き換えて、次のコマンドを実行します。
$ rosa describe break-glass-credential <break_glass_credential_id> -c <cluster_name>
出力例
ID: 2a7jli9n4phe6c02ul7ti91djtv2o51d Username: test-user Expire at: Dec 28 2026 10:23:05 EDT Status: issued
Status
フィールドで使用可能な値のリストは次のとおりです。-
issued
break glass 認証情報が発行され、使用できる状態になりました。 -
expired
ブレークグラス認証情報の有効期限が切れているため、使用できなくなりました。 -
failed
ブレークグラス認証情報の作成に失敗しました。この場合、失敗の詳細を示すサービスログが送信されます。サービスログの詳細は、Red Hat OpenShift Service on AWS クラスターのサービスログへのアクセス を参照してください。Red Hat サポートに問い合わせる手順は、サポート を参照してください。 -
awaiting_revocation
break glass 認証情報は現在取り消されているため、使用できません。 -
revoked
break glass 認証情報は取り消されており、使用できなくなりました。
-
kubeconfig
を取得するには、次のコマンドを実行します。kubeconfig
ディレクトリーを作成します。$ mkdir ~/kubeconfigs
新しく生成された
kubeconfig
ファイルをエクスポートします。<cluster_name> はクラスターの名前に置き換えます。$ export CLUSTER_NAME=<cluster_name> && export KUBECONFIG=~/kubeconfigs/break-glass-${CLUSTER_NAME}.kubeconfig
kubeconfig
を表示します。$ rosa describe break-glass-credential <break_glass_credential_id> -c mycluster --kubeconfig
出力例
apiVersion: v1 clusters: - cluster: server: <server_url> name: cluster contexts: - context: cluster: cluster namespace: default user: test-username name: admin current-context: admin kind: Config preferences: {} users: - name: test-user user: client-certificate-data: <client-certificate-data> 1 client-key-data: <client-key-data> 2
オプション:
kubeconfig
を保存するには、次のコマンドを実行します。$ rosa describe break-glass-credential <break_glass_credential_id> -c mycluster --kubeconfig > $KUBECONFIG
関連情報
- 外部認証を有効にした ROSA with HCP クラスターの作成の詳細は、外部認証プロバイダーを使用する ROSA with HCP クラスターの作成 を参照してください。
6.5. Break Glass 認証情報を使用した ROSA with HCP クラスターへのアクセス
Break Glass 認証情報から新しい kubeconfig
を使用して、ROSA with HCP クラスターへの一時的な管理者アクセス権を取得します。
前提条件
- 外部認証が有効になっている ROSA with HCP クラスターにアクセスできる。詳細は、外部認証プロバイダーを使用する ROSA with HCP クラスターの作成 を参照してください。
-
oc
およびkubectl
CLI がインストールされている。 -
新しい
kubeconfig
が設定されている。詳細は、ROSA with HCP クラスターの Break Glass 認証情報の作成 を参照してください。
手順
クラスターの詳細にアクセスします。
$ rosa describe break-glass-credential <break_glass_credential_id> -c <cluster_name> --kubeconfig > $KUBECONFIG
クラスターからノードを一覧表示します。
$ oc get nodes
出力例
NAME STATUS ROLES AGE VERSION ip-10-0-0-27.ec2.internal Ready worker 8m v1.28.7+f1b5f6c ip-10-0-0-67.ec2.internal Ready worker 9m v1.28.7+f1b5f6c
適切な認証情報があることを確認します。
$ kubectl auth whoami
出力例
ATTRIBUTE VALUE Username system:customer-break-glass:test-user Groups [system:masters system:authenticated]
外部 OIDC プロバイダーで定義されたグループに
ClusterRoleBinding
を適用します。ClusterRoleBinding
は、Microsoft Entra ID で作成されたrosa-hcp-admins
グループを ROSA with HCP クラスター内のグループにマップします。$ oc apply -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: rosa-hcp-admins roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - apiGroup: rbac.authorization.k8s.io kind: Group name: f715c264-ab90-45d5-8a29-2e91a609a895 EOF
出力例
clusterrolebinding.rbac.authorization.k8s.io/rosa-hcp-admins created
注記ClusterRoleBinding
が適用されると、ROSA with HCP クラスターが設定され、rosa
CLI と Red Hat Hybrid Cloud Console が外部 OpenID Connect (OIDC) プロバイダーを通じて認証されます。ロールの割り当てとクラスターでのアプリケーションのデプロイを開始できるようになりました。
関連情報
- クラスターロールバインディングの詳細は、RBAC を使用したパーミッションの定義および適用 を参照してください。
6.6. ROSA with HCP クラスターの Break Glass 認証情報の取り消し
revoke break-glass-credentials
コマンドを使用すると、プロビジョニングした Break Glass 認証情報へのアクセスをいつでも取り消すことができます。
前提条件
- break glass 認証情報が作成されている。
- クラスターの所有者である。
手順
次のコマンドを実行して、ROSA with HCP クラスターの Break Glass 認証情報を取り消します。
重要このコマンドを実行すると、クラスターに関連するすべての Break Glass 認証情報へのアクセスが取り消されます。
$ rosa revoke break-glass-credentials -c <cluster_name> 1
- 1
- <cluster_name> は、クラスターの名前に置き換えます。
出力例
? Are you sure you want to revoke all the break glass credentials on cluster 'my-cluster'?: Yes I: Successfully requested revocation for all break glass credentials from cluster 'my-cluster'
検証
失効処理には数分かかる場合があります。次のいずれかのコマンドを実行すると、クラスターの Break Glass 認証情報が取り消されたことを確認できます。
すべての Break Glass 認証情報をリスト表示し、それぞれのステータスを確認します。
$ rosa list break-glass-credential -c <cluster_name>
出力例