HCP クラスターを使用して ROSA をインストールする
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 分 |
| アーキテクチャー |
|
|
| Amazon EC2 の最小フットプリント | 1 つのクラスターには少なくとも 2 つのノードが必要です | 1 つのクラスターには少なくとも 7 つのノードが必要です。 |
| Deployment |
|
|
| アップグレード | コントロールプレーンとマシンプールを個別に選択的にアップグレードします。 | クラスター全体が一度にアップグレードされます。 |
| 地域ごとの可用性 |
| AWS リージョンの可用性は、AWS ドキュメントの Red Hat OpenShift Service on AWS のエンドポイントとクォータ を参照してください。 |
| コンプライアンス |
|
|
1.1.1. ROSA アーキテクチャーのネットワーク比較
HCP を使用する ROSA Classic および ROSA は、クラスターをパブリックネットワークおよびプライベートネットワークにインストールするオプションを提供します。次のイメージは、これらのオプションの違いを示しています。
図1.1 パブリックおよびプライベートネットワークにデプロイされた ROSA Classic
図1.2 パブリックネットワークにデプロイされた HCP を使用する ROSA

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

関連情報
サポートされている証明書の完全なリストは、「Red Hat OpenShift Service on AWS のプロセスとセキュリティーについて」の コンプライアンス セクションを参照してください。
自動作成モードに関する考慮事項
このドキュメントの手順では、ROSA CLI の auto モードを使用して、現在の AWS アカウントを使用して必要な IAM リソースを即座に作成します。必要なリソースには、アカウント全体の IAM ロールおよびポリシー、クラスター固有の Operator ロール、ならびに OpenID Connect (OIDC) ID プロバイダーが含まれます。
または、IAM リソースを自動的にデプロイする代わりに、IAM リソースの作成に必要な aws コマンドを出力する manual モードを使用することもできます。manual モードを使用するか、カスタマイズを使用して HCP クラスターを備えた ROSA をデプロイする手順は、カスタマイズを使用したクラスターの作成 を参照してください。
次のステップ
- AWS の前提条件 を満たしていることを確認してください。
1.2. デフォルトのクラスター仕様の概要
デフォルトのインストールオプションを使用すると、AWS Security Token Service (STS) を使用して HCP クラスターを備えた ROSA をすばやく作成できます。次の要約では、デフォルトのクラスター仕様について説明します。
表1.2 HCP クラスター仕様を備えたデフォルト ROSA
| コンポーネント | デフォルトの仕様 |
|---|---|
| アカウントおよびロール |
|
| クラスター設定 |
|
| 暗号化 |
|
| コンピュートノードマシンプール |
|
| ネットワーク設定 |
|
| Classless Inter-Domain Routing (CIDR) の範囲 |
|
| クラスターのロールおよびポリシー |
|
| クラスター更新戦略 |
|
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 がインストールされている。
手順
シェルプロンプトを開き、次のコマンドを実行して 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> [-var cluster_name=<cluster_name>]
次のコマンドを実行して、このプランファイルを適用して VPC を構築します。
$ terraform apply rosa.tfplan
任意: 次のコマンドを実行して、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 アカウントにログインしている。
手順
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 manualのawsCLI 出力に基づいてこれらの値を決定する必要があります。オプション: OIDC 設定 ID を変数として保存して、後で使用できます。次のコマンドを実行して変数を保存します。
$ export OIDC_ID=30f5dqmk
次のコマンドを実行して、変数の値を表示します。
$ echo $OIDC_ID
出力例
$ 30f5dqmk
検証
ユーザー組織に関連付けられているクラスターで使用できる可能な 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
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
これで、Operator ロールが作成され、HCP クラスターを備えた ROSA の作成に使用できるようになりました。
検証
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.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 アカウントに存在することを確認している。
手順
次のコマンドのいずれかを使用して、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_IDやSUBNET_IDSなどの変数を使用した場合は、クラスターの作成時にそれらの参照を使用できます。たとえば、以下のコマンドを実行します。$ rosa create cluster --hosted-cp --subnet-ids=$SUBNET_IDS --oidc-config-id=$OIDC_ID --cluster-name=<cluster_name>
次のコマンドを実行して、クラスターのステータスを確認します。
$ 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 1- 1
- オプション: インストールの進行中に新しいログメッセージを監視するには、
--watch引数を使用します。
1.5. 次のステップ
1.6. 関連情報
- 手動モードを使用して ROSA クラスターをデプロイする手順は、カスタマイズを使用したクラスターの作成 を参照してください。
- STS で Red Hat OpenShift Service on AWS をデプロイするのに必要な AWS Identity Access Management (IAM) リソースの詳細は、STS を使用するクラスターの IAM リソースについて を参照してください。
- オプションで Operator ロール名接頭辞を設定する方法の詳細は、カスタム Operator IAM ロール接頭辞について を参照してください。
- STS で ROSA をインストールするための前提条件の詳細は、AWS prerequisites for ROSA with STS を参照してください。
-
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章 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
},
]
},
]
}
<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) プロファイルとして機能します。

例: マシン設定プールベースのマッチング
{
"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 の最新バージョンをダウンロードしている。
- 最新バージョンのクラスターがある。
- ノードチューニング用に設定された仕様ファイルがある。
手順
次のコマンドを実行して、チューニング設定を作成します。
$ 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 の最新バージョンをダウンロードしている。
- 最新バージョンのクラスターがある。
- クラスターにノード調整設定が追加されている。
手順
チューニング設定を表示するには、
rosa descriptionコマンドを使用します。$ rosa describe tuning-config -c <cluster_id> 1 --name <name_of_tuning> 2 [-o json] 3
この仕様ファイルの次の項目は次のとおりです。
出力タイプを指定しない出力例
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" } ] } }チューニング設定を確認した後、
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'