HCP クラスターを使用して ROSA をインストールする

Red Hat OpenShift Service on AWS 4

Red Hat OpenShift Service on AWS (ROSA) クラスターのインストール、アクセス、および削除

Red Hat OpenShift Documentation Team

概要

このドキュメントでは、ホスト型コントロールプレーンを使用する Red Hat OpenShift Service on AWS (ROSA) クラスターをインストールする方法を説明します。

第1章 デフォルトのオプションを使用した HCP クラスターによる ROSA の作成

注記

ROSA Classic のクイックスタートガイドをお探しの場合は、Red Hat OpenShift Service on AWS クイックスタートガイド を参照してください。

ホストされたコントロールプレーン (HCP) を備えた Red Hat OpenShift Service on AWS (ROSA) は、Red Hat OpenShift Service on AWS (ROSA) クラスターを作成するためのより効率的で信頼性の高いアーキテクチャーを提供します。HCP を備えた ROSA では、各クラスターに ROSA サービスアカウントで分離された専用のコントロールプレーンがあります。

重要

ホスト型コントロールプレーン (HCP) を使用した Red Hat OpenShift Service on AWS (ROSA) は、テクノロジープレビューのみの機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

デフォルトのオプションと AWS Identity and Access Management (IAM) リソースの自動作成を使用して、HCP クラスターを備えた ROSA をすばやく作成します。ROSA CLI (rosa) を使用してクラスターをデプロイできます。

重要

既存の ROSA クラスターをホスト型コントロールプレーンアーキテクチャーにアップグレードまたは変換することはできないため、HCP 機能で ROSA を使用するには新しいクラスターを作成する必要があります。

注記

HCP クラスターを備えた ROSA は、AWS Security Token Service (STS) 認証のみをサポートします。

1.1. ROSA とホスト型コントロールプレーンおよび ROSA Classic の比較

ホストされたコントロールプレーン (HCP) を備えた Red Hat OpenShift Service on AWS (ROSA) は、マネージド Red Hat OpenShift Service on AWS (ROSA) クラスターを作成するための異なる方法を提供します。HCP を備えた ROSA は、信頼性と効率性に重点を置いた低コストのソリューションを提供します。効率を重視して、新しいクラスターをすばやく作成し、数分でアプリケーションをデプロイできます。

HCP を備えた ROSA は、少なくとも 2 つのノードしか必要としないため、小規模なプロジェクトに最適でありながら、大規模なプロジェクトやエンタープライズをサポートするために拡張することができます。

表1.1 ROSA アーキテクチャー比較表

 
ホスト型コントロールプレーンClassic

クラスターインフラストラクチャーホスティング

HCP を備えた ROSA は、Red Hat が所有および管理するアカウントの AWS で個別にホストされる etcd、API サーバー、oauth などのコントロールプレーンコンポーネントをデプロイします。

ROSA Classic は、コントロールプレーンコンポーネントを、顧客の同じ AWS アカウント内で一緒にホストされるインフラストラクチャーおよびワーカーノードと並べてデプロイします。

プロビジョニング時間

約 10 分

約 40 分

アーキテクチャー

  • 基盤となるコントロールプレーンインフラストラクチャーは完全に管理されており、専用の明示的に公開されたエンドポイントを除いて、エンド顧客は直接利用できません。
  • 作業ノードは顧客の AWS アカウントでホストされます。
  • お客様は、引き続き Red Hat によって 管理され ながら、コントロールプレーンと AWS インフラストラクチャーのホスティングを担当します。
  • 作業ノードは顧客の AWS アカウントでホストされます。

Amazon EC2 の最小フットプリント

1 つのクラスターには少なくとも 2 つのノードが必要です

1 つのクラスターには少なくとも 7 つのノードが必要です。

Deployment

  • ROSA CLI (rosa) を使用したデプロイ
  • お客様は、コントロールプレーンコンポーネントを Red Hat の AWS アカウントにデプロイするホスト型クラスターをプロビジョニングします。
  • お客様は、お客様の AWS アカウントにワーカーノードをデプロイするマシンプールをプロビジョニングします。
  • ROSA CLI または Web UI を使用してデプロイします。
  • 完全なクラスターのプロビジョニングは顧客の AWS アカウントで行われます。

アップグレード

コントロールプレーンとマシンプールを個別に選択的にアップグレードします。

クラスター全体が一度にアップグレードされます。

地域ごとの可用性

  • ヨーロッパ - フランクフォート (eu-central-1)
  • ヨーロッパ - アイルランド (eu-west-1)
  • 米国東部 - バージニア北部 (us-east-1)
  • 米国東部 - オハイオ (us-east-2)
  • 米国西部 - オレゴン (us-west-2)
  • アジア太平洋 - ジャカルタ (ap-southeast-3)

AWS リージョンの可用性は、AWS ドキュメントの Red Hat OpenShift Service on AWS のエンドポイントとクォータ を参照してください。

コンプライアンス

  • コンプライアンス認定と FIPS はまだ利用できません。
  • コンプライアンスの詳細は、Red Hat OpenShift Service on AWS のドキュメントに記載されています。

1.1.1. ROSA アーキテクチャーのネットワーク比較

HCP を使用する ROSA Classic および ROSA は、クラスターをパブリックネットワークおよびプライベートネットワークにインストールするオプションを提供します。次のイメージは、これらのオプションの違いを示しています。

図1.1 パブリックおよびプライベートネットワークにデプロイされた ROSA Classic

図1.2 パブリックネットワークにデプロイされた HCP を使用する ROSA

ROSA with HCP deployed on a public network

図1.3 プライベートネットワークにデプロイされた HCP を使用する ROSA

ROSA with HCP deployed on a private network

関連情報

サポートされている証明書の完全なリストは、「Red Hat OpenShift Service on AWS のプロセスとセキュリティーについて」の コンプライアンス セクションを参照してください。

自動作成モードに関する考慮事項

このドキュメントの手順では、ROSA CLI の auto モードを使用して、現在の AWS アカウントを使用して必要な IAM リソースを即座に作成します。必要なリソースには、アカウント全体の IAM ロールおよびポリシー、クラスター固有の Operator ロール、ならびに OpenID Connect (OIDC) ID プロバイダーが含まれます。

または、IAM リソースを自動的にデプロイする代わりに、IAM リソースの作成に必要な aws コマンドを出力する manual モードを使用することもできます。manual モードを使用するか、カスタマイズを使用して HCP クラスターを備えた ROSA をデプロイする手順は、カスタマイズを使用したクラスターの作成 を参照してください。

次のステップ

1.2. デフォルトのクラスター仕様の概要

デフォルトのインストールオプションを使用すると、AWS Security Token Service (STS) を使用して HCP クラスターを備えた ROSA をすばやく作成できます。次の要約では、デフォルトのクラスター仕様について説明します。

表1.2 HCP クラスター仕様を備えたデフォルト ROSA

コンポーネントデフォルトの仕様

アカウントおよびロール

  • デフォルトの IAM ロールの接頭辞: ManagedOpenShift

クラスター設定

  • デフォルトのクラスターバージョン: 最新
  • ROSA CLI (rosa) を使用したインストールのデフォルトの AWS リージョン: aws CLI 設定によって定義されます。
  • デフォルトの EC2 IMDS エンドポイント(v1 と v2)の両方が有効になっている
  • 可用性: データプレーンの単一ゾーン
  • ユーザー定義プロジェクトの監視: 有効

暗号化

  • クラウドストレージは保存時に暗号化されます。
  • 追加の etcd 暗号化が有効になっていません。
  • デフォルトの AWS Key Management Service (KMS) キーは、永続データの暗号化キーとして使用されます。

コンピュートノードマシンプール

  • コンピュートノードインスタンスタイプ: m5.xlarge (4 vCPU 16, GiB RAM)
  • コンピュートノード数: 2
  • 自動スケーリング: 無効
  • 追加のノードラベルなし

ネットワーク設定

  • クラスターのプライバシー: パブリック
  • 独自の Virtual Private Cloud (VPC) を設定しておく必要があります。
  • クラスター全体のプロキシーは設定されていません。

Classless Inter-Domain Routing (CIDR) の範囲

  • Machine CIDR: 10.0.0.0/16
  • Service CIDR: 172.30.0.0/16
  • Pod CIDR: 10.128.0.0/16
  • Host prefix: /23

    注記

    HCP で ROSA を使用する場合、静的 IP アドレス 172.20.0.1 は内部 Kubernetes API アドレス用に予約されています。マシン、Pod、およびサービスの CIDR 範囲は、この IP アドレスと競合してはなりません。

クラスターのロールおよびポリシー

  • Operator ロールおよび OpenID Connect (OIDC) プロバイダーの作成に使用されるモード: auto

    注記

    OpenShift Cluster Manager Hybrid Cloud Console Hybrid Cloud Console を使用したインストールの場合は、自動 モードに管理者特権の OpenShift Cluster Manager ロールが必要です。

  • デフォルトの Operator ロールの接頭辞: <cluster_name>-<4_digit_random_string>

クラスター更新戦略

  • 個別の更新
  • ノードドレインの 1 時間の猶予期間

1.3. HCP 前提条件を備えた ROSA

HCP クラスターを備えた ROSA を作成するには、次のものが必要です。

  • 設定された仮想プライベートクラウド (VPC)
  • アカウント全体のロール
  • OIDC 設定
  • オペレーターのロール

1.3.1. HCP クラスターを備えた ROSA 用の仮想プライベートクラウドの作成

HCP クラスターを備えた ROSA を作成するには、Virtual Private Cloud (VPC) が必要です。次の方法を使用して VPC を作成できます。

  • Terraform テンプレートを使用して VPC を作成する
  • AWS コンソールで VPC リソースを手動で作成する
注記

Terraform の手順はテストとデモンストレーションを目的としています。独自のインストールでは、独自に使用するために VPC にいくつかの変更を加える必要があります。また、この Terraform スクリプトを使用するときは、クラスターをインストールする予定のリージョンと同じリージョンにあることを確認する必要があります。これらの例では、us-east-2 を使用します。

Terraform を使用した Virtual Private Cloud の作成

Terraform は、確立されたテンプレートを使用してさまざまなリソースを作成できるツールです。次のプロセスでは、必要に応じてデフォルトのオプションを使用して、HCP クラスターを備えた ROSA を作成します。Terraform の使用の詳細は、関連情報を参照してください。

前提条件

  • マシンに Terraform バージョン 1.4.0 以降がインストールされている。
  • マシンに Git がインストールされている。

手順

  1. シェルプロンプトを開き、次のコマンドを実行して Terraform VPC リポジトリーのクローンを作成します。

    $ git clone https://github.com/openshift-cs/terraform-vpc-example
  2. 次のコマンドを実行して、作成したディレクトリーに移動します。

    $ cd terraform-vpc-example
  3. 次のコマンドを実行して、Terraform ファイルを開始します。

    $ terraform init

    このプロセスが完了すると、初期化を確認するメッセージが表示されます。

  4. 既存の Terraform テンプレートに基づいて VPC Terraform プランを構築するには、plan コマンドを実行します。AWS リージョンを含める必要があります。クラスター名の指定を選択できます。terraform plan が完了すると、rosa.tfplan ファイルが hypershift-tf ディレクトリーに追加されます。オプションの詳細は、Terraform VPC リポジトリーの README ファイル を参照してください。

    $ terraform plan -out rosa.tfplan -var region=<region> [-var cluster_name=<cluster_name>]
  5. 次のコマンドを実行して、このプランファイルを適用して VPC を構築します。

    $ terraform apply rosa.tfplan
  6. 任意: 次のコマンドを実行して、Terraform でプロビジョニングされたプライベート、パブリック、およびマシンプールのサブネット ID の値を環境変数としてキャプチャーし、HCP クラスターを備えた ROSA を作成するときに使用できます。

    $ 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 は、次の表に示す要件を満たしている必要があります。

表1.3 VPC の要件

要件詳細

VPC 名

クラスターを作成するときは、特定の VPC 名と ID が必要です。

CIDR 範囲

VPC CIDR 範囲はマシンの CIDR と一致する必要があります。

アベイラビリティーゾーン

単一ゾーンの場合は 1 つの可用性ゾーンが必要で、複数ゾーンの場合は 3 つの可用性ゾーンが必要です。

パブリックサブネット

NAT ゲートウェイを備えたパブリックサブネットが 1 つ必要です。

DNS ホスト名と解決

DNS ホスト名と解決が有効になっていることを確認する必要があります。

1.3.2. アカウント全体の STS ロールおよびポリシーの作成

Red Hat OpenShift Service on AWS (ROSA) CLI (rosa) を使用して、ホスト型コントロールプレーン (HCP) クラスターを備えた Red Hat OpenShift Service on AWS (ROSA) を作成する前に、Operator ポリシーを含む、必要なアカウント全体のロールとポリシーを作成します。

前提条件

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

    注記

    HCP クラスターを備えた ROSA クラスターを正常にインストールするには、最新バージョンの ROSA CLI (rosa) を使用します。

  • ROSA CLI を使用して Red Hat アカウントにログインしている。

手順

  1. AWS アカウントに存在しない場合は、次のコマンドを実行して、必要なアカウント全体の STS ロールとポリシーを作成します。

    $ rosa create account-roles --force-policy-creation

    --force-policy-creation パラメーターは、存在する既存のロールとポリシーを更新します。ロールとポリシーが存在しない場合、コマンドは代わりにこれらのリソースを作成します。

1.3.3. OpenID Connect 設定の作成

HCP クラスターを備えた ROSA を使用する場合は、クラスターを作成する前に OpenID Connect (OIDC) 設定を作成する必要があります。OIDC 設定は、OpenShift Cluster Manager で使用するために登録されています。

前提条件

  • HCP を備えた ROSA の 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 manualaws CLI 出力に基づいてこれらの値を決定する必要があります。

  • オプション: OIDC 設定 ID を変数として保存して、後で使用できます。次のコマンドを実行して変数を保存します。

    $ export OIDC_ID=30f5dqmk
    1. 次のコマンドを実行して、変数の値を表示します。

      $ echo $OIDC_ID

      出力例

      $ 30f5dqmk

検証

  1. ユーザー組織に関連付けられているクラスターで使用できる可能な 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.3.4. Operator のロールとポリシーの作成

HCP クラスターを備えた ROSA を使用する場合は、ホスト型コントロールプレーン (HCP) デプロイメントを備えた Red Hat OpenShift Service on AWS (ROSA) に必要な Operator IAM ロールを作成する必要があります。クラスター Operator は、Operator のロールを使用して、バックエンドストレージ、クラウドプロバイダーの認証情報、クラスターへの外部アクセスの管理など、クラスター操作を実行するために必要な一時的なアクセス許可を取得します。

前提条件

  • HCP を備えた ROSA の AWS の前提条件を完了している。
  • インストールホストに、最新の Red Hat OpenShift Service on AWS (ROSA) CLI (rosa) をインストールして設定している。
  • アカウント全体の AWS ロールを作成している。

手順

  • Operator ロールを作成するには、次のコマンドを実行します。

    $ rosa create operator-roles --hosted-cp --prefix <prefix-name> --oidc-config-id <oidc-config-id>

    次の内訳は、Operator ロール作成のオプションを示しています。

    $ rosa create operator-roles --hosted-cp
    	--prefix <prefix-name> 1
    	--oidc-config-id <oidc-config-id> 2
    1
    これらの Operator ロールを作成するときは、接頭辞を指定する必要があります。そうしないとエラーが発生します。演算子接頭辞は、このセクションの関連情報を参照してください。
    2
    この値は、HCP クラスターを備えた ROSA 用に作成した OIDC 設定 ID です。

    HCP クラスターを備えた ROSA の正しいロールを作成するには、--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>-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

    1
    このフィールドには、最初の作成コマンドで設定した接頭辞が事前に入力されます。
    2
    このフィールドでは、HCP クラスターを備えた ROSA 用に作成した OIDC 設定を選択する必要があります。

    これで、Operator ロールが作成され、HCP クラスターを備えた ROSA の作成に使用できるようになりました。

検証

  1. 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" と入力すると、これらのロールが詳細とともにリストされます。

関連情報

1.4. CLI を備えた HCP クラスターを使用した ROSA の作成

Red Hat OpenShift Service on AWS (ROSA) CLI (rosa) を使用してクラスターを作成する場合は、デフォルトのオプションを選択してクラスターを迅速に作成できます。

前提条件

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

    注記

    ROSA クラスターを正常にインストールするには、最新バージョンの ROSA CLI (rosa) を使用します。rosa version を実行して、現在インストールされている ROSA CLI のバージョンを確認します。新しいバージョンが利用可能な場合、CLI はこのアップグレードをダウンロードするためのリンクを提供します。

  • ROSA CLI を使用して Red Hat アカウントにログインしている。
  • OIDC 設定が作成されている。
  • AWS Elastic Load Balancing (ELB) サービ出力ルが AWS アカウントに存在することを確認している。

手順

  1. 次のコマンドのいずれかを使用して、HCP クラスターを備えた ROSA を作成できます。

    • 次のコマンドを実行して、単一の初期マシンプール、公開されている API、および公開されている Ingress を含むクラスターを作成します。

      $ 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> --subnet-ids=<public-subnet-id>,<private-subnet-id>
    • 次のコマンドを実行して、単一の初期マシンプール、プライベートで利用可能な API、およびプライベートで利用可能な Ingress を備えたクラスターを作成します。

      $ rosa create cluster --private --cluster-name=<cluster_name> \
          --sts --mode=auto --hosted-cp --subnet-ids=<private-subnet-id>
    • OIDC_IDSUBNET_IDS などの変数を使用した場合は、クラスターの作成時にそれらの参照を使用できます。たとえば、以下のコマンドを実行します。

      $ rosa create cluster --hosted-cp --subnet-ids=$SUBNET_IDS --oidc-config-id=$OIDC_ID --cluster-name=<cluster_name>
  2. 次のコマンドを実行して、クラスターのステータスを確認します。

    $ 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 のサポートを受けるを参照してください。

  3. Red Hat OpenShift Service on AWS インストールプログラムのログを監視して、クラスター作成の進行状況を追跡します。ログを確認するには、次のコマンドを実行します。

    $ rosa logs install --cluster=<cluster_name> --watch 1
    1
    オプション: インストールの進行中に新しいログメッセージを監視するには、--watch 引数を使用します。

1.5. 次のステップ

1.6. 関連情報

第2章 HCP クラスターを備えた ROSA での Node Tuning Operator の使用

ホスト型コントロールプレーン (HCP) を備えた Red Hat OpenShift Service on AWS (ROSA) は、HCP クラスターを備えた ROSA 上のノードのパフォーマンスを向上させる Node Tuning Operator をサポートしています。ノード調整設定を作成する前に、カスタム調整仕様を作成する必要があります。

重要

ホスト型コントロールプレーン (HCP) を使用した Red Hat OpenShift Service on AWS (ROSA) は、テクノロジープレビューのみの機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

目的

Node Tuning Operator は、TuneD デーモンを調整することでノードレベルのチューニングを管理し、PerformanceProfile コントローラーを使用して低レイテンシーのパフォーマンスを実現するのに役立ちます。ほとんどの高パフォーマンスアプリケーションでは、一定レベルのカーネルのチューニングが必要です。Node Tuning Operator は、ノードレベルの sysctl の統一された管理インターフェイスをユーザーに提供し、ユーザーが指定するカスタムチューニングを追加できるよう柔軟性を提供します。

Operator は、コンテナー化された Red Hat OpenShift Service on AWS の TuneD デーモンを Kubernetes デーモンセットとして管理します。これにより、カスタムチューニング仕様が、デーモンが認識する形式でクラスターで実行されるすべてのコンテナー化された TuneD デーモンに渡されます。デーモンは、ノードごとに 1 つずつ、クラスターのすべてのノードで実行されます。

コンテナー化された TuneD デーモンによって適用されるノードレベルの設定は、プロファイルの変更をトリガーするイベントで、または終了シグナルの受信および処理によってコンテナー化された TuneD デーモンが正常に終了する際にロールバックされます。

Node Tuning Operator は、Performance Profile コントローラーを使用して自動チューニングを実装し、Red Hat OpenShift Service on AWS アプリケーションの低レイテンシーパフォーマンスを実現します。クラスター管理者は、以下のようなノードレベルの設定を定義するパフォーマンスプロファイルを設定します。

  • カーネルを kernel-rt に更新します。
  • ハウスキーピング用の CPU を選択します。
  • 実行中のワークロード用の CPU を選択します。
注記

現在、CPU 負荷分散の無効化は cgroup v2 ではサポートされていません。その結果、cgroup v2 が有効になっている場合は、パフォーマンスプロファイルから望ましい動作が得られない可能性があります。パフォーマンスプロファイルを使用している場合は、cgroup v2 を有効にすることは推奨しません。

Node Tuning Operator は、バージョン 4.1 以降における標準的な Red Hat OpenShift Service on AWS インストールの一部となっています。

注記

Red Hat OpenShift Service on AWS の以前のバージョンでは、OpenShift アプリケーションの低レイテンシーパフォーマンスを実現する自動チューニングを実装するために Performance Addon Operator が使用されていました。Red Hat OpenShift Service on AWS 4.11 以降では、この機能は Node Tuning Operator の一部です。

2.1. カスタムチューニング仕様

Operator のカスタムリソース (CR) には 2 つの重要なセクションがあります。1 つ目のセクションの profile: は TuneD プロファイルおよびそれらの名前の一覧です。2 つ目の recommend: は、プロファイル選択ロジックを定義します。

複数のカスタムチューニング仕様は、Operator の namespace に複数の CR として共存できます。新規 CR の存在または古い CR の削除は Operator によって検出されます。既存のカスタムチューニング仕様はすべてマージされ、コンテナー化された TuneD デーモンの適切なオブジェクトは更新されます。

管理状態

Operator 管理の状態は、デフォルトの Tuned CR を調整して設定されます。デフォルトで、Operator は Managed 状態であり、spec.managementState フィールドはデフォルトの Tuned CR に表示されません。Operator Management 状態の有効な値は以下のとおりです。

  • Managed: Operator は設定リソースが更新されるとそのオペランドを更新します。
  • Unmanaged: Operator は設定リソースへの変更を無視します。
  • Removed: Operator は Operator がプロビジョニングしたオペランドおよびリソースを削除します。

プロファイルデータ

profile: セクションは、TuneD プロファイルおよびそれらの名前を一覧表示します。

{
  "profile": [
    {
      "name": "tuned_profile_1",
      "data": "# TuneD profile specification\n[main]\nsummary=Description of tuned_profile_1 profile\n\n[sysctl]\nnet.ipv4.ip_forward=1\n# ... other sysctl's or other TuneD daemon plugins supported by the containerized TuneD\n"
    },
    {
      "name": "tuned_profile_n",
      "data": "# TuneD profile specification\n[main]\nsummary=Description of tuned_profile_n profile\n\n# tuned_profile_n profile settings\n"
    }
  ]
}

推奨プロファイル

profile: 選択ロジックは、CR の recommend: セクションによって定義されます。recommend: セクションは、選択基準に基づくプロファイルの推奨項目の一覧です。

"recommend": [
    {
      "recommend-item-1": details_of_recommendation,
      # ...
      "recommend-item-n": details_of_recommendation,
    }
  ]

一覧の個別項目:

{
  "profile": [
    {
    # ...
    }
  ],
  "recommend": [
    {
      "profile": <tuned_profile_name>, 1
      "priority": <priority>, 2
      "machineConfigLabels": { <Key_Pair_for_MachineConfig> 3
      },
      "match": [ 4
        {
          "label": <label_information> 5
        },
      ]
    },
  ]
}
1
プロファイルの順序付けの優先度。数値が小さいほど優先度が高くなります (0 が最も高い優先度になります)。
2
一致に適用する TuneD プロファイル。たとえば、tuned_profile_1 です。
3
オプション: MachineConfig ラベルのキーと値のペアの辞書。キーは一意である必要があります。
4
省略する場合は、優先度の高いプロファイルが最初に一致するか、machineConfigLabels が設定されていない限り、プロファイルの一致が想定されます。
5
プロファイル一致アイテムのラベル。

<match> は、以下のように再帰的に定義されるオプションの一覧です。

"match": [
        {
          "label": 1
        },
]
1
ノードまたは Pod のラベル名。

<match> が省略されない場合、ネストされたすべての <match> セクションが true に評価される必要もあります。そうでない場合には false が想定され、それぞれの <match> セクションのあるプロファイルは適用されず、推奨されません。そのため、ネスト化 (子の <match> セクション) は論理 AND 演算子として機能します。これとは逆に、<match> 一覧のいずれかの項目が一致する場合は、<match> の一覧全体が true に評価されます。そのため、一覧は論理 OR 演算子として機能します。

machineConfigLabels が定義されている場合は、マシン設定プールベースのマッチングが指定の recommend: 一覧の項目に対してオンになります。<mcLabels> はマシン設定のラベルを指定します。マシン設定は、プロファイル <tuned_profile_name> についてカーネル起動パラメーターなどのホスト設定を適用するために自動的に作成されます。この場合は、マシン設定セレクターが <mcLabels> に一致するすべてのマシン設定プールを検索し、プロファイル <tuned_profile_name> を確認されるマシン設定プールが割り当てられるすべてのノードに設定する必要があります。マスターロールとワーカーのロールの両方を持つノードをターゲットにするには、マスターロールを使用する必要があります。

一覧項目の match および machineConfigLabels は論理 OR 演算子によって接続されます。match 項目は、最初にショートサーキット方式で評価されます。そのため、true と評価される場合、machineConfigLabels 項目は考慮されません。

重要

マシン設定プールベースのマッチングを使用する場合は、同じハードウェア設定を持つノードを同じマシン設定プールにグループ化することが推奨されます。この方法に従わない場合は、TuneD オペランドが同じマシン設定プールを共有する 2 つ以上のノードの競合するカーネルパラメーターを計算する可能性があります。

例: ノード/Pod ラベルベースのマッチング

[
  {
    "match": [
      {
        "label": "tuned.openshift.io/elasticsearch",
        "match": [
          {
            "label": "node-role.kubernetes.io/master"
          },
          {
            "label": "node-role.kubernetes.io/infra"
          }
        ],
        "type": "pod"
      }
    ],
    "priority": 10,
    "profile": "openshift-control-plane-es"
  },
  {
    "match": [
      {
        "label": "node-role.kubernetes.io/master"
      },
      {
        "label": "node-role.kubernetes.io/infra"
      }
    ],
    "priority": 20,
    "profile": "openshift-control-plane"
  },
  {
    "priority": 30,
    "profile": "openshift-node"
  }
]

上記のコンテナー化された TuneD デーモンの CR は、プロファイルの優先順位に基づいてその recommend.conf ファイルに変換されます。最も高い優先順位 (10) を持つプロファイルは openshift-control-plane-es であるため、これが最初に考慮されます。指定されたノードで実行されるコンテナー化された TuneD デーモンは、同じノードに tuned.openshift.io/elasticsearch ラベルが設定された Pod が実行されているかどうかを確認します。これがない場合は、<match> セクション全体が false として評価されます。このラベルを持つこのような Pod がある場合に、<match> セクションが true に評価されるようにするには、ノードラベルを node-role.kubernetes.io/master または node-role.kubernetes.io/infra にする必要もあります。

優先順位が 10 のプロファイルのラベルが一致した場合は、openshift-control-plane-es プロファイルが適用され、その他のプロファイルは考慮されません。ノード/Pod ラベルの組み合わせが一致しない場合は、2 番目に高い優先順位プロファイル (openshift-control-plane) が考慮されます。このプロファイルは、コンテナー化された TuneD Pod が node-role.kubernetes.io/master または node-role.kubernetes.io/infra ラベルを持つノードで実行される場合に適用されます。

最後に、プロファイル openshift-node には最低の優先順位である 30 が設定されます。これには <match> セクションがないため、常に一致します。これは、より高い優先順位の他のプロファイルが指定されたノードで一致しない場合に openshift-node プロファイルを設定するために、最低の優先順位のノードが適用される汎用的な (catch-all) プロファイルとして機能します。

Decision workflow

例: マシン設定プールベースのマッチング

{
  "apiVersion": "tuned.openshift.io/v1",
  "kind": "Tuned",
  "metadata": {
    "name": "openshift-node-custom",
    "namespace": "openshift-cluster-node-tuning-operator"
  },
  "spec": {
    "profile": [
      {
        "data": "[main]\nsummary=Custom OpenShift node profile with an additional kernel parameter\ninclude=openshift-node\n[bootloader]\ncmdline_openshift_node_custom=+skew_tick=1\n",
        "name": "openshift-node-custom"
      }
    ],
    "recommend": [
      {
        "machineConfigLabels": {
          "machineconfiguration.openshift.io/role": "worker-custom"
        },
        "priority": 20,
        "profile": "openshift-node-custom"
      }
    ]
  }
}

ノードの再起動を最小限にするには、ターゲットノードにマシン設定プールのノードセレクターが一致するラベルを使用してラベルを付け、上記の Tuned CR を作成してから、最後にカスタムのマシン設定プール自体を作成します。

クラウドプロバイダー固有の TuneD プロファイル

この機能により、すべてのクラウドプロバイダー固有のノードに、Red Hat OpenShift Service on AWS クラスター上の特定のクラウドプロバイダーに合わせて特別に調整された TuneD プロファイルを簡単に割り当てることができます。これは、追加のノードラベルを追加したり、ノードをマシン設定プールにグループ化したりせずに実行できます。

この機能は、<cloud-provider>://<cloud-provider-specific-id> の形式で spec.providerID ノードオブジェクト値を利用して、NTO オペランドコンテナーの <cloud-provider> の値で /var/lib/tuned/provider ファイルを書き込みます。その後、このファイルのコンテンツは TuneD により、プロバイダー provider-<cloud-provider> プロファイル (存在する場合) を読み込むために使用されます。

openshift-control-plane および openshift-node プロファイルの両方の設定を継承する openshift プロファイルは、条件付きプロファイルの読み込みを使用してこの機能を使用するよう更新されるようになりました。現時点で、NTO や TuneD にクラウドプロバイダー固有のプロファイルは含まれていません。ただし、すべての クラウドプロバイダー固有のクラスターノードに適用されるカスタムプロファイル provider-<cloud-provider> を作成できます。

GCE クラウドプロバイダープロファイルの例

{
  "apiVersion": "tuned.openshift.io/v1",
  "kind": "Tuned",
  "metadata": {
    "name": "provider-gce",
    "namespace": "openshift-cluster-node-tuning-operator"
  },
  "spec": {
    "profile": [
      {
        "data": "[main]\nsummary=GCE Cloud provider-specific profile\n# Your tuning for GCE Cloud provider goes here.\n",
        "name": "provider-gce"
      }
    ]
  }
}

注記

プロファイルの継承により、provider-<cloud-provider> プロファイルで指定された設定は、openshift プロファイルとその子プロファイルによって上書きされます。

2.2. HCP を備えた ROSA でのノードチューニング設定の作成

Red Hat OpenShift Service on AWS (ROSA) CLI (rosa) を使用してチューニング設定を作成できます。

前提条件

  • ROSA CLI の最新バージョンをダウンロードしている。
  • 最新バージョンのクラスターがある。
  • ノードチューニング用に設定された仕様ファイルがある。

手順

  1. 次のコマンドを実行して、チューニング設定を作成します。

    $ rosa create tuning-config -c <cluster_id> --name <name_of_tuning> --spec-path <path_to_spec_file>

    spec.json ファイルへのパスを指定する必要があります。指定しない場合、コマンドはエラーを返します。

    出力例

    $ I: Tuning config 'sample-tuning' has been created on cluster 'cluster-example'.
    $ I: To view all tuning configs, run 'rosa list tuning-configs -c cluster-example'

検証

  • 次のコマンドを使用して、アカウントによって適用されている既存のチューニング設定を確認できます。

    $ rosa list tuning-configs -c <cluster_name> [-o json]

    設定リストに必要な出力のタイプを指定できます。

    • 出力タイプを指定しないと、チューニング設定の ID と名前が表示されます。

      出力タイプを指定しない出力例

      ID                                    NAME
      20468b8e-edc7-11ed-b0e4-0a580a800298  sample-tuning

    • json などの出力タイプを指定すると、チューニング設定を JSON テキストとして受け取ります。

      注記

      次の JSON 出力には、読みやすくするために改行が含まれています。この JSON 出力は、JSON 文字列内の改行を削除しない限り無効です。

      JSON 出力を指定したサンプル出力

      [
        {
          "kind": "TuningConfig",
          "id": "20468b8e-edc7-11ed-b0e4-0a580a800298",
          "href": "/api/clusters_mgmt/v1/clusters/23jbsevqb22l0m58ps39ua4trff9179e/tuning_configs/20468b8e-edc7-11ed-b0e4-0a580a800298",
          "name": "sample-tuning",
          "spec": {
            "profile": [
              {
                "data": "[main]\nsummary=Custom OpenShift profile\ninclude=openshift-node\n\n[sysctl]\nvm.dirty_ratio=\"55\"\n",
                "name": "tuned-1-profile"
              }
            ],
            "recommend": [
              {
                "priority": 20,
                "profile": "tuned-1-profile"
              }
            ]
          }
        }
      ]

2.3. HCP を備えた ROSA のノードチューニング設定の変更

Red Hat OpenShift Service on AWS (ROSA) CLI (rosa) を使用して、ノードチューニング設定を表示し、更新できます。

前提条件

  • ROSA CLI の最新バージョンをダウンロードしている。
  • 最新バージョンのクラスターがある。
  • クラスターにノード調整設定が追加されている。

手順

  1. チューニング設定を表示するには、rosa description コマンドを使用します。

    $ rosa describe tuning-config -c <cluster_id> 1
           --name <name_of_tuning> 2
           [-o json] 3

    この仕様ファイルの次の項目は次のとおりです。

    1
    ノードチューニング設定を適用する、所有するクラスターのクラスター ID を指定します。
    2
    チューニング設定の名前を指定します。
    3
    任意で、出力タイプを指定できます。出力を指定しない場合は、チューニング設定の ID と名前のみが表示されます。

    出力タイプを指定しない出力例

    Name:    sample-tuning
    ID:      20468b8e-edc7-11ed-b0e4-0a580a800298
    Spec:    {
                "profile": [
                  {
                    "data": "[main]\nsummary=Custom OpenShift profile\ninclude=openshift-node\n\n[sysctl]\nvm.dirty_ratio=\"55\"\n",
                    "name": "tuned-1-profile"
                  }
                ],
                "recommend": [
                  {
                     "priority": 20,
                     "profile": "tuned-1-profile"
                  }
                ]
             }

    JSON 出力を指定したサンプル出力

    {
      "kind": "TuningConfig",
      "id": "20468b8e-edc7-11ed-b0e4-0a580a800298",
      "href": "/api/clusters_mgmt/v1/clusters/23jbsevqb22l0m58ps39ua4trff9179e/tuning_configs/20468b8e-edc7-11ed-b0e4-0a580a800298",
      "name": "sample-tuning",
      "spec": {
        "profile": [
          {
            "data": "[main]\nsummary=Custom OpenShift profile\ninclude=openshift-node\n\n[sysctl]\nvm.dirty_ratio=\"55\"\n",
            "name": "tuned-1-profile"
          }
        ],
        "recommend": [
          {
            "priority": 20,
            "profile": "tuned-1-profile"
          }
        ]
      }
    }

  2. チューニング設定を確認した後、rosa edit コマンドを使用して既存の設定を編集します。

    $ rosa edit tuning-config -c <cluster_id> --name <name_of_tuning> --spec-path <path_to_spec_file>

    このコマンドでは、spec.json ファイルを使用して設定を編集します。

検証

  • rosa description コマンドを再度実行して、spec.json ファイルに加えた変更がチューニング設定で更新されていることを確認します。

    $ rosa describe tuning-config -c <cluster_id> --name <name_of_tuning>

    出力例

    Name:  sample-tuning
    ID:    20468b8e-edc7-11ed-b0e4-0a580a800298
    Spec:  {
               "profile": [
                 {
                  "data": "[main]\nsummary=Custom OpenShift profile\ninclude=openshift-node\n\n[sysctl]\nvm.dirty_ratio=\"55\"\n",
                  "name": "tuned-2-profile"
                 }
               ],
               "recommend": [
                 {
                  "priority": 10,
                  "profile": "tuned-2-profile"
                 }
               ]
           }

2.4. HCP を備えた ROSA 上のノード調整設定の削除

Red Hat OpenShift Service on AWS (ROSA) CLI (rosa) を使用して、チューニング設定を削除できます。

注記

マシンプールで参照されているチューニング設定は削除できません。チューニング設定を削除する前に、すべてのマシンプールからチューニング設定を削除する必要があります。

前提条件

  • ROSA CLI の最新バージョンをダウンロードしている。
  • 最新バージョンのクラスターがある。
  • クラスターに、削除したいノードチューニング設定がある。

手順

  • チューニング設定を削除するには、次のコマンドを実行します。

    $ rosa delete tuning-config -c <cluster_id> <name_of_tuning>

    クラスター上のチューニング設定が削除されました。

    出力例

    ? Are you sure you want to delete tuning config sample-tuning on cluster sample-cluster? Yes
    I: Successfully deleted tuning config 'sample-tuning' from cluster 'sample-cluster'

法律上の通知

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.