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 つの可用性ゾーンが必要です。 |
パブリックサブネット | パブリッククラスターには、NAT ゲートウェイを備えたパブリックサブネットが 1 つ必要です。プライベートクラスターにはパブリックサブネットは必要ありません。 |
DNS ホスト名と解決 | DNS ホスト名と解決が有効になっていることを確認する必要があります。 |
サブネットへのタグ付け
VPC を使用して ROSA with HCP クラスターを作成する前に、VPC サブネットにタグを付ける必要があります。自動サービスのプリフライトチェックでは、これらのリソースを使用する前に、これらのリソースが正しくタグ付けされていることを確認します。次の表は、リソースを次のようにタグ付けする方法を示しています。
リソース | キー | 値 |
---|---|---|
パブリックサブネット |
|
|
プライベートサブネット |
|
|
少なくとも 1 つのプライベートサブネットと、該当する場合は 1 つのパブリックサブネットにタグを付ける必要があります。
前提条件
- VPC を作成している。
-
aws
CLI をインストールしている。
手順
次のコマンドを実行して、ターミナルでリソースにタグを付けます。
パブリックサブネットの場合は、以下を実行します。
$ aws ec2 create-tags --resources <public-subnet-id> --tags Key=kubernetes.io/role/elb,Value=1
プライベートサブネットの場合は、以下を実行します。
$ aws ec2 create-tags --resources <private-subnet-id> --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 ロール接頭辞 を参照してください。