Menu Close

2.3.2. CLI を使用してカスタマイズしたクラスターを作成する

AWS Security Token Service (STS) を使用する Red Hat OpenShift Service on AWS (ROSA) クラスターを作成する場合は、インストールを対話的にカスタマイズできます。

rosa create cluster --interactive をクラスターの作成時に実行すると、デプロイメントのカスタマイズを可能にする一連の対話式プロンプトが表示されます。詳細は、対話式クラスター作成モードリファレンス を参照してください。

対話モードを使用したクラスターのインストールが完了すると、同じカスタム設定を使用してさらにクラスターをデプロイできるようにする単一のコマンドが出力に提供されます。

重要

STS では、パブリックおよび AWS PrivateLink クラスターのみがサポートされます。通常の プライベートクラスター (PrivateLink 以外) は STS では使用できません。

注記

現時点で、AWS 共有 VPC は ROSA インストールではサポートされていません。

前提条件

  • STS で ROSA の AWS の前提条件を完了している。
  • 利用可能な AWS サービスクォータがある。
  • AWS コンソールで ROSA サービスを有効にしている。
  • インストールホストに最新の ROSA (rosa) および AWS (aws) CLI をインストールして設定しました。

    注記

    ROSA 4.10 クラスターを正常にインストールするには、最新バージョンの ROSA CLI を使用します。

  • 暗号化にお客様が管理する AWS Key Management Service (KMS) キーを使用している場合は、対称 KMS キーを作成し、キー ID および Amazon Resource Name (ARN) がある。AWS KMS キーの作成に関する詳細は、AWS ドキュメント を参照してください。

手順

  1. Operator ポリシーを含む、必要なアカウント全体のロールおよびポリシーを作成します。

    1. 現在の作業ディレクトリーに IAM ポリシー JSON ファイルを作成し、確認用に aws CLI コマンドを実行します。

      $ rosa create account-roles --mode manual 1
      1
      manual モードは、アカウント全体のロールおよびポリシーの作成に必要な aws CLI コマンドおよび JSON ファイルを生成します。確認後、手動でコマンドを実行してリソースを作成する必要があります。
    2. 確認後は、aws コマンドを手動で実行し、ロールおよびポリシーを作成します。または、--mode auto を使用して前述のコマンドを実行して、aws コマンドを即座に実行できます。
  2. オプション: 独自の AWS KMS キーを使用してコントロールプレーン、インフラストラクチャー、およびワーカーノードのルートボリュームを暗号化する場合は、アカウント全体のインストーラーロールの ARN を KMS キーポリシーに追加します。

    1. KMS キーのキーポリシーをローカルマシンのファイルに保存します。次の例では、出力を現在の作業ディレクトリーの kms-key-policy.json に保存します。

      $ aws kms get-key-policy --key-id <key_id_or_arn> --policy-name default --output text > kms-key-policy.json 1
      1
      <key_id_or_arn> を KMS キーの ID または ARN に置き換えます。
    2. 前述の手順で作成したアカウント全体のインストーラーロールの ARN を、ファイルの Statement.Principal.AWS セクションに追加します。以下の例では、デフォルトの ManagedOpenShift-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": "Allow ROSA use of the key",
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": [
                          "arn:aws:iam::<aws-account-id>:role/ManagedOpenShift-Support-Role", 1
                          "arn:aws:iam::<aws-account-id>:role/ManagedOpenShift-Installer-Role",
                          "arn:aws:iam::<aws-account-id>:role/ManagedOpenShift-Worker-Role",
                          "arn:aws:iam::<aws-account-id>:role/ManagedOpenShift-ControlPlane-Role"
                      ]
                  },
                  "Action": [
                      "kms:Encrypt",
                      "kms:Decrypt",
                      "kms:ReEncrypt*",
                      "kms:GenerateDataKey*",
                      "kms:DescribeKey"
                  ],
                  "Resource": "*"
              },
              {
                  "Sid": "Allow attachment of persistent resources",
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": [
                          "arn:aws:iam::<aws-account-id>:role/ManagedOpenShift-Support-Role", 2
                          "arn:aws:iam::<aws-account-id>:role/ManagedOpenShift-Installer-Role",
                          "arn:aws:iam::<aws-account-id>:role/ManagedOpenShift-Worker-Role",
                          "arn:aws:iam::<aws-account-id>:role/ManagedOpenShift-ControlPlane-Role"
                      ]
                  },
                  "Action": [
                      "kms:CreateGrant",
                      "kms:ListGrants",
                      "kms:RevokeGrant"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "Bool": {
                          "kms:GrantIsForAWSResource": "true"
                      }
                  }
              }
          ]
      }
      1 2
      ROSA クラスターの作成時に使用されるアカウント全体のロールの ARN を指定する必要があります。セクションに一覧表示される ARN はコンマで区切る必要があります。
    3. KMS キーポリシーに変更を適用します。

      $ aws kms put-key-policy --key-id <key_id_or_arn> \ 1
          --policy file://kms-key-policy.json \ 2
          --policy-name default
      1
      <key_id_or_arn> を KMS キーの ID または ARN に置き換えます。
      2
      ローカルファイルでキーポリシーを参照する場合は、file:// プレフィックスを含める必要があります。

      次の手順でクラスターを作成すると、KMS キーの ARN を参照できます。

  3. カスタムインストールオプションを使用して STS でクラスターを作成します。--interactive モードを使用して、カスタム設定を対話的に指定できます。

    $ rosa create cluster --interactive --sts

    出力例

    I: Interactive mode enabled.
    Any optional fields can be left empty and a default will be selected.
    ? Cluster name: <cluster_name>
    ? OpenShift version: 4.8.9 1
    I: Using arn:aws:iam::<aws_account_id>:role/ManagedOpenShift-Installer-Role for the Installer role 2
    I: Using arn:aws:iam::<aws_account_id>:role/ManagedOpenShift-ControlPlane-Role for the ControlPlane role
    I: Using arn:aws:iam::<aws_account_id>:role/ManagedOpenShift-Worker-Role for the Worker role
    I: Using arn:aws:iam::<aws_account_id>:role/ManagedOpenShift-Support-Role for the Support role
    ? External ID (optional):
    ? Operator roles prefix: <cluster_name>-<random_string> 3
    ? Multiple availability zones (optional): No 4
    ? AWS region: us-east-1
    ? PrivateLink cluster (optional): No
    ? Install into an existing VPC (optional): No
    ? Enable Customer Managed key (optional): No 5
    ? Compute nodes instance type (optional):
    ? Enable autoscaling (optional): No
    ? Compute nodes: 2
    ? Machine CIDR: 10.0.0.0/16
    ? Service CIDR: 172.30.0.0/16
    ? Pod CIDR: 10.128.0.0/14
    ? Host prefix: 23
    ? Encrypt etcd data (optional): No 6
    ? Disable Workload monitoring (optional): No
    I: Creating cluster '<cluster_name>'
    I: To create this cluster again in the future, you can run:
       rosa create cluster --cluster-name <cluster_name> --role-arn arn:aws:iam::<aws_account_id>:role/ManagedOpenShift-Installer-Role --support-role-arn arn:aws:iam::<aws_account_id>:role/ManagedOpenShift-Support-Role --master-iam-role arn:aws:iam::<aws_account_id>:role/ManagedOpenShift-ControlPlane-Role --worker-iam-role arn:aws:iam::<aws_account_id>:role/ManagedOpenShift-Worker-Role --operator-roles-prefix <cluster_name>-<random_string> --region us-east-1 --version 4.8.9 --compute-nodes 2 --machine-cidr 10.0.0.0/16 --service-cidr 172.30.0.0/16 --pod-cidr 10.128.0.0/14 --host-prefix 23 7
    I: To view a list of clusters and their status, run 'rosa list clusters'
    I: Cluster '<cluster_name>' has been created.
    I: Once the cluster is installed you will need to add an Identity Provider before you can login into the cluster. See 'rosa create idp --help' for more information.
    I: To determine when your cluster is Ready, run 'rosa describe cluster -c <cluster_name>'.
    I: To watch your cluster installation logs, run 'rosa logs install -c <cluster_name> --watch'.

    1
    クラスターの作成時に、一覧表示された OpenShift バージョン オプションには、4.8.9 などのメジャー、マイナー、およびパッチバージョンが含まれます。
    2
    クラスターバージョンのアカウントで、一致するアカウント全体のロールのセットが複数ある場合は、オプションのインタラクティブなリストが提供されます。
    3
    オプション: デフォルトでは、クラスター固有のオペレーターのロール名には、クラスター名とランダムな 4 桁のハッシュが接頭辞として付けられます。オプションで、ロール名の <cluster_name>-<hash> を置き換えるカスタム接頭辞を指定できます。接頭辞は、クラスター固有の Operator IAM ロールを作成するときに適用されます。接頭辞の詳細は、Operator IAM ロール接頭辞の定義を参照してください。
    4
    実稼働環境のワークロードには、複数のアベイラビリティーゾーンの使用が推奨されます。デフォルトは単一のアベイラビリティーゾーンです。
    5
    独自の AWS KMS キーを使用してコントロールプレーン、インフラストラクチャー、およびワーカーノードのルートボリュームを暗号化する場合は、このオプションを有効にします。前述の手順でアカウント全体のロール ARN を追加した KMS キーの ARN を指定します。
    6
    このオプションを有効にするのは、デフォルトで etcd ボリュームを暗号化するコントロールプレーンストレージ暗号化に加えて、etcd キー値の暗号化が必要なユースケースの場合のみです。このオプションを使用すると、etcd キーの値は暗号化されますが、キーは暗号化されません。
    重要

    etcd のキー値の etcd 暗号化を有効にすると、約 20% のパフォーマンスのオーバーヘッドが発生します。このオーバーヘッドは、etcd ボリュームを暗号化するデフォルトのコントロールプレーンのストレージ暗号化に加えて、この 2 つ目の暗号化レイヤーの導入により生じます。Red Hat は、お客様のユースケースで特に etcd 暗号化が必要な場合にのみ有効にすることを推奨します。

    7
    この出力には、今後も同じ設定でクラスターを作成するのに実行できるカスタムコマンドが含まれます。

    --interactive モードを使用する代わりに、rosa create cluster の実行時にカスタマイズオプションを直接指定できます。rosa create cluster --help を実行して、利用可能な CLI オプションの一覧を表示します。

    重要

    Operator IAM ロールおよび OpenID Connect (OIDC) プロバイダーを作成し、クラスターの状態を ready に移行するには、以下の手順を実行する必要があります。

  4. クラスター固有の Operator IAM ロールを作成します。

    1. 現在の作業ディレクトリーに Operator IAM ポリシー JSON ファイルを作成し、確認用に aws CLI コマンドを実行します。

      $ rosa create operator-roles --mode manual --cluster <cluster_name|cluster_id> 1
      1
      manual モードは、Operator ロールの作成に必要な aws CLI コマンドおよび JSON ファイルを生成します。確認後、手動でコマンドを実行してリソースを作成する必要があります。
    2. 確認後は、aws コマンドを手動で実行し、Operator IAM ロールを作成し、管理対象 Operator ポリシーをそれらに割り当てます。または、--mode auto を使用して前述のコマンドを実行して、aws コマンドを即座に実行できます。

      注記

      前の手順で接頭辞を指定した場合、カスタム接頭辞が Operator ロール名に適用されます。

  5. クラスター Operator が認証に使用する OpenID Connect (OIDC) プロバイダーを作成します。

    $ rosa create oidc-provider --mode auto --cluster <cluster_name|cluster_id> 1
    1
    auto モードは、OIDC プロバイダーを作成する aws CLI コマンドを即時実行します。
  6. クラスターのステータスを確認します。

    $ rosa describe cluster --cluster <cluster_name|cluster_id>

    出力例

    Name:                       <cluster_name>
    ID:                         <cluster_id>
    External ID:                <external_id>
    OpenShift Version:          <version>
    Channel Group:              stable
    DNS:                        <cluster_name>.xxxx.p1.openshiftapps.com
    AWS Account:                <aws_account_id>
    API URL:                    https://api.<cluster_name>.xxxx.p1.openshiftapps.com:6443
    Console URL:                https://console-openshift-console.apps.<cluster_name>.xxxx.p1.openshiftapps.com
    Region:                     <aws_region>
    Multi-AZ:                   false
    Nodes:
     - Master:                  3
     - Infra:                   2
     - Compute:                 2
    Network:
     - Service CIDR:            172.30.0.0/16
     - Machine CIDR:            10.0.0.0/16
     - Pod CIDR:                10.128.0.0/14
     - Host Prefix:             /23
    STS Role ARN:               arn:aws:iam::<aws_account_id>:role/ManagedOpenShift-Installer-Role
    Support Role ARN:           arn:aws:iam::<aws_account_id>:role/ManagedOpenShift-Support-Role
    Instance IAM Roles:
     - Master:                  arn:aws:iam::<aws_account_id>:role/ManagedOpenShift-ControlPlane-Role
     - Worker:                  arn:aws:iam::<aws_account_id>:role/ManagedOpenShift-Worker-Role
    Operator IAM Roles:
     - arn:aws:iam::<aws_account_id>:role/<cluster_name>-xxxx-openshift-ingress-operator-cloud-credentials
     - arn:aws:iam::<aws_account_id>:role/<cluster_name-xxxx-openshift-cluster-csi-drivers-ebs-cloud-credent
     - arn:aws:iam::<aws_account_id>:role/<cluster_name-xxxx-openshift-machine-api-aws-cloud-credentials
     - arn:aws:iam::<aws_account_id>:role/<cluster_name-xxxx-openshift-cloud-credential-operator-cloud-crede
     - arn:aws:iam::<aws_account_id>:role/<cluster_name-xxxx-openshift-image-registry-installer-cloud-creden
    State:                      ready
    Private:                    No
    Created:                    Oct  1 2021 08:12:25 UTC
    Details Page:               https://console.redhat.com/openshift/details/s/<subscription_id>
    OIDC Endpoint URL:          https://rh-oidc.s3.<aws_region>.amazonaws.com/<cluster_id>

    以下の State フィールドの変更は、クラスターインストールの進捗として出力に表示されます。

    • waiting (Waiting for OIDC configuration)
    • pending (Preparing account)
    • installing (DNS setup in progress)
    • installing
    • ready

      注記

      インストールが失敗した場合や、約 40 分後に State フィールドが ready に変わらない場合は、インストールのトラブルシューティングに関するドキュメントで詳細を確認してください。詳細は、インストールのトラブルシューティングを参照してください。Red Hat サポートにサポートを依頼する手順は、Red Hat OpenShift Service on AWS のサポートを受けるを参照してください。

  7. OpenShift インストーラーログを監視して、クラスター作成の進捗を追跡します。

    $ rosa logs install --cluster <cluster_name|cluster_id> --watch 1
    1
    --watch フラグを指定して、新規ログメッセージをインストールの進捗として監視します。この引数は任意です。