エッジコンピューティング
ネットワークエッジで OpenShift Container Platform クラスターを設定およびデプロイする
概要
第1章 ネットワークファーエッジの課題 リンクのコピーリンクがクリップボードにコピーされました!
エッジコンピューティングでは、地理的に離れた場所にある多数のサイトを管理する際に複雑な課題が生じます。ネットワークのファーエッジのサイトをプロビジョニングおよび管理するには、GitOps Zero Touch Provisioning (ZTP) を使用します。
1.1. ネットワークファーエッジの課題の解決 リンクのコピーリンクがクリップボードにコピーされました!
今日、サービスプロバイダーは、自社のインフラストラクチャーをネットワークのエッジにデプロイメントしたいと考えています。これには重大な課題があります。
- 多数のエッジサイトのデプロイメントを並行してどのように処理しますか?
- 非接続環境にサイトをデプロイメントする必要がある場合はどうなりますか?
- 大規模なクラスター群のライフサイクルをどのように管理していますか?
GitOps Zero Touch Provisioning (ZTP) と GitOps は、ベアメタル機器の宣言的なサイト定義と設定を使用してリモートエッジサイトを大規模にプロビジョニングできるようにすることで、これらの課題を解決します。テンプレートまたはオーバーレイ設定は、CNF ワークロードに必要な OpenShift Container Platform 機能をインストールします。インストールとアップグレードの全ライフサイクルは、GitOps ZTP パイプラインを通じて処理されます。
GitOps ZTP は、インフラストラクチャーのデプロイメントに GitOps を使用します。GitOps では、Git リポジトリーに格納されている宣言型 YAML ファイルとその他の定義済みパターンを使用します。Red Hat Advanced Cluster Management (RHACM) は、Git リポジトリーを使用してインフラストラクチャーのデプロイメントを推進します。
GitOps は、トレーサビリティ、ロールベースのアクセス制御 (RBAC)、および各サイトの望ましい状態に関する信頼できる唯一の情報源を提供します。スケーラビリティの問題は、Git の方法論と、Webhook を介したイベント駆動型操作によって対処されます。
GitOps ZTP パイプラインがエッジノードに配信する宣言的なサイト定義と設定のカスタムリソース (CR) を作成すると、GitOps ZTP ワークフローが開始します。
以下の図は、ファーエッジフレームワーク内で GitOps ZTP が機能する仕組みを示しています。
1.2. GitOps ZTP を使用したネットワークファーエッジでのクラスタープロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management (RHACM) は、単一のハブクラスターが多数のスポーククラスターを管理するハブアンドスポークアーキテクチャーでクラスターを管理します。RHACM を実行するハブクラスターは、GitOps Zero Touch Provisioning (ZTP) と、RHACM のインストール時にデプロイされるアシストサービスを使用して、マネージドクラスターをプロビジョニングおよびデプロイします。
アシストサービスは、ベアメタルで実行されるシングルノードクラスター、3 ノードクラスター、または標準クラスターで OpenShift Container Platform のプロビジョニングを処理します。
GitOps ZTP を使用して OpenShift Container Platform でベアメタルホストをプロビジョニングおよび維持する方法の概要は次のとおりです。
- RHACM を実行するハブクラスターは、OpenShift Container Platform リリースイメージをミラーリングする OpenShift イメージレジストリーを管理します。RHACM は、OpenShift イメージレジストリーを使用して、マネージドクラスターをプロビジョニングします。
- ベアメタルホストは、Git リポジトリーでバージョン管理された YAML 形式のインベントリーファイルで管理します。
- ホストをマネージドクラスターとしてプロビジョニングする準備を整え、RHACM とアシストサービスを使用してサイトにベアメタルホストをインストールします。
クラスターのインストールとデプロイは、最初のインストールフェーズと、その後の設定およびデプロイフェーズを含む 2 段階のプロセスです。次の図は、このワークフローを示しています。
1.3. SiteConfig リソースと RHACM を使用したマネージドクラスターのインストール リンクのコピーリンクがクリップボードにコピーされました!
GitOps Zero Touch Provisioning (ZTP) は、Git リポジトリー内の SiteConfig カスタムリソース (CR) を使用して、OpenShift Container Platform クラスターのインストールプロセスを管理します。SiteConfig CR には、インストールに必要なクラスター固有のパラメーターが含まれています。ユーザー定義の追加マニフェストを含む、インストール中に選択した設定 CR を適用するためのオプションがあります。
ZTP GitOps プラグインは、SiteConfig CR を処理して、ハブクラスター上に CR コレクションを生成します。これにより、Red Hat Advanced Cluster Management (RHACM) のアシストサービスがトリガーされ、OpenShift Container Platform がベアメタルホストにインストールされます。ハブクラスターのこれらの CR で、インストールステータスとエラーメッセージを確認できます。
単一クラスターは、手動でプロビジョニングするか、GitOps ZTP を使用してバッチでプロビジョニングできます。
- 単一クラスターのプロビジョニング
-
単一の
SiteConfigCR と、関連するインストールおよび設定 CR をクラスター用に作成し、それらをハブクラスターに適用して、クラスターのプロビジョニングを開始します。これは、より大きなスケールにデプロイする前に CR をテストするのに適した方法です。 - 多くのクラスターのプロビジョニング
-
Git リポジトリーで
SiteConfigと関連する CR を定義することにより、最大 400 のバッチでマネージドクラスターをインストールします。ArgoCD はSiteConfigCR を使用してサイトをデプロイします。RHACM ポリシージェネレーターはマニフェストを作成し、それらをハブクラスターに適用します。これにより、クラスターのプロビジョニングプロセスが開始されます。
SiteConfig v1 は、OpenShift Container Platform バージョン 4.18 以降では非推奨になります。ClusterInstance カスタムリソースを使用する SiteConfig Operator を通じて、同等の改良された機能が利用できるようになりました。詳細は、Procedure to transition from SiteConfig CRs to the ClusterInstance API を参照してください。
SiteConfig Operator の詳細は、SiteConfig を参照してください。
1.4. ポリシーと PolicyGenerator リソースを使用してマネージドクラスターを設定する リンクのコピーリンクがクリップボードにコピーされました!
GitOps Zero Touch Provisioning (ZTP) は、Red Hat Advanced Cluster Management (RHACM) を使用して、設定を適用するためのポリシーベースのガバナンスアプローチを使用してクラスターを設定します。
ポリシージェネレーターは、簡潔なテンプレートから RHACM ポリシーを作成できるようにする GitOps Operator のプラグインです。このツールは、複数の CR を 1 つのポリシーに組み合わせることができ、フリート内のクラスターのさまざまなサブセットに適用される複数のポリシーを生成できます。
スケーラビリティを確保し、クラスターのフリート全体で設定を管理する複雑さを軽減するには、できるだけ多くの共通性を持つ設定 CR を使用します。
- 可能であれば、フリート全体の共通ポリシーを使用して設定 CR を適用します。
- 次の優先事項は、クラスターの論理グループを作成して、グループポリシーの下で残りの設定を可能な限り管理することです。
- 設定が個々のサイトに固有のものである場合、ハブクラスターで RHACM テンプレートを使用して、サイト固有のデータを共通ポリシーまたはグループポリシーに挿入します。または、サイトに個別のサイトポリシーを適用します。
次の図は、ポリシージェネレーターがクラスターデプロイメントの設定フェーズで GitOps および RHACM と対話する方法を示しています。
クラスターの大規模なフリートの場合は、それらのクラスターの設定に高レベルの一貫性があるのが一般的です。
次の推奨されるポリシーの構造化では、設定 CR を組み合わせていくつかの目標を達成しています。
- 一般的な設定を一度説明すれば、フリートに適用できます。
- 維持および管理されるポリシーの数を最小限に抑えます。
- クラスターバリアントの一般的な設定の柔軟性をサポートします。
| ポリシーのカテゴリー | 説明 |
|---|---|
| 共通 |
共通カテゴリーに存在するポリシーは、フリート内のすべてのクラスターに適用されます。共通の |
| グループ |
groups カテゴリーに存在するポリシーは、フリート内のクラスターのグループに適用されます。グループ |
| サイト | sites カテゴリーに存在するポリシーが特定のクラスターに適用されます。どのクラスターでも、独自の特定のポリシーを維持できます。 |
PolicyGenTemplate CR を使用してポリシーを管理し、マネージドクラスターにデプロイすることは、OpenShift Container Platform の今後のリリースでは非推奨になります。同等の機能および改善された機能は、Red Hat Advanced Cluster Management (RHACM) および PolicyGenerator CR を使用する場合に利用できます。
PolicyGenerator リソースの詳細は、RHACM の ポリシージェネレーターの統合 ドキュメントを参照してください。
第2章 GitOps ZTP 用のハブクラスターの準備 リンクのコピーリンクがクリップボードにコピーされました!
非接続環境で RHACM を使用するには、OpenShift Container Platform リリースイメージと必要な Operator イメージを含む Operator Lifecycle Manager (OLM) カタログをミラーリングするミラーレジストリーを作成します。OLM は Operator およびそれらの依存関係をクラスターで管理し、インストールし、アップグレードします。切断されたミラーホストを使用して、ベアメタルホストのプロビジョニングに使用される RHCOS ISO および RootFS ディスクイメージを提供することもできます。
2.1. 通信事業者 RAN DU 4.20 の検証済みソフトウェアコンポーネント リンクのコピーリンクがクリップボードにコピーされました!
Red Hat telco RAN DU 4.20 ソリューションは、OpenShift Container Platform 管理クラスター用の次の Red Hat ソフトウェア製品を使用して検証されています。
| コンポーネント | ソフトウェアバージョン |
|---|---|
| マネージドクラスターのバージョン | 4.19 |
| Cluster Logging Operator | 6.2 |
| Local Storage Operator | 4.20 |
| OpenShift API for Data Protection (OADP) | 1.5 |
| PTP Operator | 4.20 |
| SR-IOV Operator | 4.20 |
| SRIOV-FEC Operator | 2.11 |
| Lifecycle Agent | 4.20 |
2.2. GitOps ZTP で推奨されるハブクラスター仕様とマネージドクラスターの制限 リンクのコピーリンクがクリップボードにコピーされました!
GitOps Zero Touch Provisioning (ZTP) を使用すると、地理的に分散した地域やネットワークにある数千のクラスターを管理できます。Red Hat Performance and Scale ラボは、ラボ環境内の単一の Red Hat Advanced Cluster Management (RHACM) ハブクラスターから、より小さな DU プロファイルを使用して 3,500 個の仮想シングルノード OpenShift クラスター作成および管理することに成功しました。
実際の状況では、管理できるクラスター数のスケーリング制限は、ハブクラスターに影響を与えるさまざまな要因によって異なります。以下に例を示します。
- ハブクラスターのリソース
- 利用可能なハブクラスターのホストリソース (CPU、メモリー、ストレージ) は、ハブクラスターが管理できるクラスターの数を決定する重要な要素です。ハブクラスターに割り当てられるリソースが多いほど、対応できるマネージドクラスターの数も多くなります。
- ハブクラスターストレージ
- ハブクラスターホストのストレージ IOPS 評価と、ハブクラスターホストが NVMe ストレージを使用するかどうかは、ハブクラスターのパフォーマンスと管理できるクラスターの数に影響を与える可能性があります。
- ネットワーク帯域幅と遅延
- ハブクラスターとマネージドクラスター間のネットワーク接続が遅い、大きく遅延する場合、ハブクラスターによる複数クラスターの管理方法に影響を与える可能性があります。
- マネージドクラスターのサイズと複雑さ
- マネージドクラスターのサイズと複雑さも、ハブクラスターの容量に影響します。より多くのノード、namespace、リソースを備えた大規模なマネージドクラスターには、追加の処理リソースと管理リソースが必要です。同様に、RAN DU プロファイルや多様なワークロードなどの複雑な設定を持つクラスターは、ハブクラスターからより多くのリソースを必要とする可能性があります。
- 管理ポリシーの数
- ハブクラスターによって管理されるポリシーの数は、それらのポリシーにバインドされているマネージドクラスターの数に対してスケーリングされており、これらは管理できるクラスターの数を決定する重要な要素です。
- ワークロードのモニタリングと管理
- RHACM は、マネージドクラスターを継続的にモニタリングおよび管理します。ハブクラスター上で実行されるモニタリングおよび管理ワークロードの数と複雑さは、ハブクラスターの容量に影響を与える可能性があります。集中的なモニタリングや頻繁な調整操作には追加のリソースが必要となる場合があり、管理可能なクラスターの数が制限される可能性があります。
- RHACM のバージョンと設定
- RHACM のバージョンが異なると、パフォーマンス特性やリソース要件も異なる場合があります。さらに、同時リコンシリエーションの数やヘルスチェックの頻度などの RHACM 設定は、ハブクラスターのマネージドクラスター容量に影響を与える可能性があります。
次の代表的な設定とネットワーク仕様を使用して、独自の Hub クラスターとネットワーク仕様を開発します。
次のガイドラインは、社内のラボのベンチマークテストのみに基づいており、完全なベアメタルホストの仕様を表すものではありません。
| 要件 | 説明 |
|---|---|
| サーバーハードウェア | Dell PowerEdge R650 ラックサーバー 3 台 |
| NVMe ハードディスク |
|
| SSD ハードディスク |
|
| 適用された DU プロファイルポリシーの数 | 5 |
次のネットワーク仕様は、典型的な実際の RAN ネットワークを表しており、テスト中にスケールラボ環境に適用されます。
| 仕様 | 説明 |
|---|---|
| ラウンドトリップタイム (RTT) 遅延 | 50 ms |
| パケットロス | 0.02% のパケットロス |
| ネットワーク帯域幅の制限 | 20 Mbps |
2.3. 非接続環境での GitOps ZTP のインストール リンクのコピーリンクがクリップボードにコピーされました!
非接続環境のハブクラスターで Red Hat Advanced Cluster Management (RHACM)、Red Hat OpenShift GitOps、Topology Aware Lifecycle Manager (TALM) を使用して、複数のマネージドクラスターのデプロイを管理します。
前提条件
-
OpenShift Container Platform CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてログインしている。 クラスターで使用するために、切断されたミラーレジストリーを設定しました。
注記作成する非接続ミラーレジストリーには、ハブクラスターで実行されている TALM のバージョンと一致する TALM バックアップおよび事前キャッシュイメージのバージョンが含まれている必要があります。スポーククラスターは、切断されたミラーレジストリーでこれらのイメージを解決できる必要があります。
手順
- ハブクラスターに RHACM をインストールします。非接続環境での RHACM のインストール を参照してください。
- ハブクラスターに GitOps と TALM をインストールします。
2.4. RHCOS ISO および RootFS イメージの非接続ミラーホストへの追加 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management (RHACM) を使用して非接続環境にクラスターのインストールを開始する前に、最初に使用する Red Hat Enterprise Linux CoreOS (RHCOS) イメージをホストする必要があります。切断されたミラーを使用して RHCOS イメージをホストします。
前提条件
- ネットワーク上で RHCOS イメージリソースをホストするように HTTP サーバーをデプロイして設定します。お使いのコンピューターから HTTP サーバーにアクセスでき、作成するマシンからもアクセスできる必要があります。
RHCOS イメージは OpenShift Container Platform の各リリースごとに変更されない可能性があります。インストールするバージョン以下の最新バージョンのイメージをダウンロードする必要があります。利用可能な場合は、OpenShift Container Platform バージョンに一致するイメージのバージョンを使用します。ホストに RHCOS をインストールするには、ISO および RootFS イメージが必要です。RHCOS QCOW2 イメージは、このインストールタイプではサポートされません。
手順
- ミラーホストにログインします。
mirror.openshift.com から RHCOS ISO イメージおよび RootFS イメージを取得します。以下は例になります。
必要なイメージ名と OpenShift Container Platform のバージョンを環境変数としてエクスポートします。
export ISO_IMAGE_NAME=<iso_image_name>
$ export ISO_IMAGE_NAME=<iso_image_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow export ROOTFS_IMAGE_NAME=<rootfs_image_name>
$ export ROOTFS_IMAGE_NAME=<rootfs_image_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow export OCP_VERSION=<ocp_version>
$ export OCP_VERSION=<ocp_version>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 必要なイメージをダウンロードします。
sudo wget https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.20/${OCP_VERSION}/${ISO_IMAGE_NAME} -O /var/www/html/${ISO_IMAGE_NAME}$ sudo wget https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.20/${OCP_VERSION}/${ISO_IMAGE_NAME} -O /var/www/html/${ISO_IMAGE_NAME}Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo wget https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.20/${OCP_VERSION}/${ROOTFS_IMAGE_NAME} -O /var/www/html/${ROOTFS_IMAGE_NAME}$ sudo wget https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.20/${OCP_VERSION}/${ROOTFS_IMAGE_NAME} -O /var/www/html/${ROOTFS_IMAGE_NAME}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証手順
イメージが正常にダウンロードされ、非接続ミラーホストで提供されることを確認します。以下に例を示します。
wget http://$(hostname)/${ISO_IMAGE_NAME}$ wget http://$(hostname)/${ISO_IMAGE_NAME}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Saving to: rhcos-4.20.1-x86_64-live.x86_64.iso rhcos-4.20.1-x86_64-live.x86_64.iso- 11%[====> ] 10.01M 4.71MB/s
Saving to: rhcos-4.20.1-x86_64-live.x86_64.iso rhcos-4.20.1-x86_64-live.x86_64.iso- 11%[====> ] 10.01M 4.71MB/sCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5. アシストサービスの有効化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management (RHACM) は、アシストサービスを使用して OpenShift Container Platform クラスターをデプロイします。Red Hat Advanced Cluster Management (RHACM) で MultiClusterHub Operator を有効にすると、アシストサービスが自動的にデプロイされます。その後、すべての namespace を監視し、ミラーレジストリー HTTP サーバーでホストされている ISO および RootFS イメージへの参照を使用して、AgentServiceConfig カスタムリソース (CR) を更新するように Provisioning リソースを設定する必要があります。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。 -
RHACM で
MultiClusterHubが有効になっている。
手順
-
Provisioningリソースを有効にして、すべての namespace を監視し、非接続環境のミラーを設定します。詳細は、Central Infrastructure Management サービスの有効化 を参照してください。 spec.osImagesフィールドを更新するために、次のコマンドを実行してAgentServiceConfigCR を開きます。oc edit AgentServiceConfig
$ oc edit AgentServiceConfigCopy to Clipboard Copied! Toggle word wrap Toggle overflow AgentServiceConfigCR のspec.osImagesフィールドを更新します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
<host>- ターゲットミラーレジストリー HTTP サーバーの完全修飾ドメイン名 (FQDN) を指定します。
<path>- ターゲットミラーレジストリー上のイメージへのパスを指定します。
- エディターを保存して終了し、変更を適用します。
2.6. 切断されたミラーレジストリーを使用するためのハブクラスターの設定 リンクのコピーリンクがクリップボードにコピーされました!
非接続環境で切断されたミラーレジストリーを使用するようにハブクラスターを設定できます。
前提条件
- Red Hat Advanced Cluster Management (RHACM) 2.13 がインストールされた非接続環境のハブクラスターがある。
-
HTTP サーバーで
rootfsおよびisoイメージをホストしている。OpenShift Container Platform イメージリポジトリーのミラーリング に関するガイダンスは、関連情報 セクションを参照してください。
HTTP サーバーに対して TLS を有効にする場合、ルート証明書がクライアントによって信頼された機関によって署名されていることを確認し、OpenShift Container Platform ハブおよびマネージドクラスターと HTTP サーバー間の信頼された証明書チェーンを検証する必要があります。信頼されていない証明書で設定されたサーバーを使用すると、イメージがイメージ作成サービスにダウンロードされなくなります。信頼されていない HTTPS サーバーの使用はサポートされていません。
手順
ミラーレジストリー設定を含む
ConfigMapを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
ConfigMapnamespace はmulticluster-engineに設定する必要があります。- 2
- ミラーレジストリーの作成時に使用されるミラーレジストリーの証明書。
- 3
- ミラーレジストリーの設定ファイル。ミラーレジストリー設定は、検出イメージの
/etc/containers/registries.confファイルにミラー情報を追加します。ミラー情報は、インストールプログラムに渡される際、install-config.yamlファイルのimageContentSourcesセクションに保存されます。ハブクラスターで実行される Assisted Service Pod は、設定されたミラーレジストリーからコンテナーイメージをフェッチします。 - 4
- ミラーレジストリーの URL。ミラーレジストリーを設定する場合は、
oc adm release mirrorコマンドを実行して、imageContentSourcesセクションの URL を使用する必要があります。詳細は、OpenShift Container Platform イメージリポジトリーのミラーリング セクションを参照してください。 - 5
registries.confファイルで定義されるレジストリーは、レジストリーではなくリポジトリーによってスコープが指定される必要があります。この例では、quay.io/example-repositoryリポジトリーとmirror1.registry.corp.com:5000/example-repositoryリポジトリーの両方のスコープがexample-repositoryリポジトリーにより指定されます。
これにより、以下のように
AgentServiceConfigカスタムリソースのmirrorRegistryRefが更新されます。出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
クラスターのインストール時には、有効な NTP サーバーが必要です。適切な NTP サーバーが使用可能であり、切断されたネットワークを介してインストール済みクラスターからアクセスできることを確認してください。
2.7. 非認証レジストリーを使用するためのハブクラスターの設定 リンクのコピーリンクがクリップボードにコピーされました!
非認証レジストリーを使用するようにハブクラスターを設定できます。非認証レジストリーは、イメージへのアクセスとダウンロードに認証を必要としません。
前提条件
- ハブクラスターがインストールおよび設定され、ハブクラスターに Red Hat Advanced Cluster Management (RHACM) がインストールされている。
- OpenShift Container Platform CLI (oc) がインストールされている。
-
cluster-admin権限を持つユーザーとしてログインしている。 - ハブクラスターで使用するために非認証レジストリーを設定している。
手順
次のコマンドを実行して、
AgentServiceConfigカスタムリソース (CR) を更新します。oc edit AgentServiceConfig agent
$ oc edit AgentServiceConfig agentCopy to Clipboard Copied! Toggle word wrap Toggle overflow CR に
unauthenticatedRegistriesフィールドを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 非認証レジストリーは、
AgentServiceConfigリソースのspec.unauthenticatedRegistriesの下に一覧表示されます。このリストにあるレジストリーのエントリーは、スポーククラスターのインストールに使用されるプルシークレットに含める必要はありません。assisted-serviceは、インストールに使用されるすべてのイメージレジストリーの認証情報がプルシークレットに含まれていることを確認して、プルシークレットを検証します。
ミラーレジストリーは自動的に無視リストに追加されるため、spec.unauthenticatedRegistries の下に追加する必要はありません。ConfigMap で PUBLIC_CONTAINER_REGISTRIES 環境変数を指定すると、デフォルト値が指定した値でオーバーライドされます。PUBLIC_CONTAINER_REGISTRIES のデフォルトは quay.io および registry.svc.ci.openshift.org です。
検証
次のコマンドを実行して、ハブクラスターから新しく追加されたレジストリーにアクセスできることを確認します。
ハブクラスターへのデバッグシェルプロンプトを開きます。
oc debug node/<node_name>
$ oc debug node/<node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、非認証レジストリーへのアクセスをテストします。
podman login -u kubeadmin -p $(oc whoami -t) <unauthenticated_registry>
sh-4.4# podman login -u kubeadmin -p $(oc whoami -t) <unauthenticated_registry>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
- <unauthenticated_registry>
-
unauthenticated-image-registry.openshift-image-registry.svc:5000などの新しいレジストリーです。
出力例
Login Succeeded!
Login Succeeded!Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.8. ArgoCD を使用したハブクラスターの設定 リンクのコピーリンクがクリップボードにコピーされました!
GitOps Zero Touch Provisioning (ZTP) を使用して、サイトごとに必要なインストールおよびポリシーカスタムリソース (CR) を生成する一連の ArgoCD アプリケーションでハブクラスターを設定できます。
Red Hat Advanced Cluster Management (RHACM) は SiteConfig CR を使用して、ArgoCD の Day 1 マネージドクラスターインストール CR を生成します。各 ArgoCD アプリケーションは、最大 300 個の SiteConfig CR を管理できます。
前提条件
- Red Hat Advanced Cluster Management (RHACM) と Red Hat OpenShift GitOps がインストールされた OpenShift Container Platform ハブクラスターがあります。
-
「GitOps ZTP サイト設定リポジトリーの準備」セクションで説明されているように、GitOps ZTP プラグインコンテナーから参照デプロイメントを抽出しました。参照デプロイメントを抽出すると、次の手順で参照される
out/argocd/deploymentディレクトリーが作成されます。
手順
ArgoCD パイプライン設定を準備します。
- example ディレクトリーと同様にディレクトリー構造で Git リポジトリーを作成します。詳細は、「GitOps ZTP サイト設定リポジトリーの準備」を参照してください。
ArgoCD UI を使用して、リポジトリーへのアクセスを設定します。Settings で以下を設定します。
-
リポジトリー: 接続情報を追加します。URL は
.gitなどで終わっている必要があります。https://repo.example.com/repo.gitと認証情報を指定します。 - Certificates - 必要に応じて、リポジトリーのパブリック証明書を追加します。
-
リポジトリー: 接続情報を追加します。URL は
2 つの ArgoCD アプリケーション、
out/argocd/deployment/clusters-app.yamlとout/argocd/deployment/policies-app.yamlを、Git リポジトリーに基づいて修正します。-
Git リポジトリーを参照するように URL を更新します。URL は
.gitで終わります (例:https://repo.example.com/repo.git)。 -
targetRevisionは、監視する Git リポジトリーブランチを示します。 -
pathは、それぞれSiteConfigおよびPolicyGeneratorまたはPolicyGentemplateCR へのパスを指定します。
-
Git リポジトリーを参照するように URL を更新します。URL は
GitOps ZTP プラグインをインストールするには、ハブクラスター内の ArgoCD インスタンスに、関連するマルチクラスターエンジン (MCE) サブスクリプションイメージをパッチ適用します。以前に
out/argocd/deployment/ディレクトリーに展開したパッチファイルを環境に合わせてカスタマイズします。RHACM バージョンに一致する
multicluster-operators-subscriptionイメージを選択します。-
RHACM 2.8 および 2.9 の場合は、
registry.redhat.io/rhacm2/multicluster-operators-subscription-rhel8:v<rhacm_version>イメージを使用します。 -
RHACM 2.10 以降の場合は、
registry.redhat.io/rhacm2/multicluster-operators-subscription-rhel9:v<rhacm_version>イメージを使用します。
重要multicluster-operators-subscriptionイメージのバージョンは、RHACM のバージョンと一致する必要があります。MCE 2.10 リリース以降、RHEL 9 はmulticluster-operators-subscriptionイメージのベースイメージです。OpenShift Operator のライフサイクル の表「Platform Aligned Operators」の
[Expand for Operator list]をクリックすると、OpenShift Container Platform でサポートされている Operator の完全なマトリックスが表示されます。-
RHACM 2.8 および 2.9 の場合は、
RHACM バージョンに一致する
multicluster-operators-subscriptionイメージを使用して、out/argocd/deployment/argocd-openshift-gitops-patch.jsonファイルを変更します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ArgoCD インスタンスにパッチを適用します。以下のコマンドを実行します。
oc patch argocd openshift-gitops \ -n openshift-gitops --type=merge \ --patch-file out/argocd/deployment/argocd-openshift-gitops-patch.json
$ oc patch argocd openshift-gitops \ -n openshift-gitops --type=merge \ --patch-file out/argocd/deployment/argocd-openshift-gitops-patch.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow
RHACM 2.7 以降では、マルチクラスターエンジンはデフォルトで
cluster-proxy-addon機能を有効にします。次のパッチを適用して、cluster-proxy-addon機能を無効にし、このアドオンに関連するハブクラスターとマネージド Pod を削除します。以下のコマンドを実行します。oc patch multiclusterengines.multicluster.openshift.io multiclusterengine --type=merge --patch-file out/argocd/deployment/disable-cluster-proxy-addon.json
$ oc patch multiclusterengines.multicluster.openshift.io multiclusterengine --type=merge --patch-file out/argocd/deployment/disable-cluster-proxy-addon.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、パイプライン設定をハブクラスターに適用します。
oc apply -k out/argocd/deployment
$ oc apply -k out/argocd/deploymentCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 既存の ArgoCD アプリケーションがある場合は、次のコマンドを実行して、
ApplicationリソースにPrunePropagationPolicy=backgroundポリシーが設定されていることを確認します。oc -n openshift-gitops get applications.argoproj.io \ clusters -o jsonpath='{.spec.syncPolicy.syncOptions}' |jq$ oc -n openshift-gitops get applications.argoproj.io \ clusters -o jsonpath='{.spec.syncPolicy.syncOptions}' |jqCopy to Clipboard Copied! Toggle word wrap Toggle overflow 既存のポリシーの出力例
[ "CreateNamespace=true", "PrunePropagationPolicy=background", "RespectIgnoreDifferences=true" ]
[ "CreateNamespace=true", "PrunePropagationPolicy=background", "RespectIgnoreDifferences=true" ]Copy to Clipboard Copied! Toggle word wrap Toggle overflow spec.syncPolicy.syncOptionフィールドにPrunePropagationPolicyパラメーターが含まれていない場合、またはPrunePropagationPolicyがforeground値に設定されている場合は、Applicationリソースでポリシーをbackgroundに設定します。以下の例を参照してください。kind: Application spec: syncPolicy: syncOptions: - PrunePropagationPolicy=backgroundkind: Application spec: syncPolicy: syncOptions: - PrunePropagationPolicy=backgroundCopy to Clipboard Copied! Toggle word wrap Toggle overflow
background削除ポリシーを設定すると、ManagedClusterCR とそれに関連付けられたすべてのリソースが削除されます。
2.9. GitOps ZTP サイト設定リポジトリーの準備 リンクのコピーリンクがクリップボードにコピーされました!
GitOps Zero Touch Provisioning (ZTP) パイプラインを使用する前に、サイト設定データをホストする Git リポジトリーを準備する必要があります。
前提条件
- 必要なインストールおよびポリシーのカスタムリソース (CR) を生成するためのハブクラスター GitOps アプリケーションを設定している。
- GitOps ZTP を使用してマネージドクラスターをデプロイしている。
手順
SiteConfigとPolicyGeneratorまたはPolicyGentemplateCR 用に個別のパスを持つディレクトリー構造を作成します。注記SiteConfigとPolicyGeneratorまたはPolicyGentemplateCR を個別のディレクトリーに保存します。SiteConfigディレクトリーと、PolicyGeneratorまたはPolicyGentemplateディレクトリーの両方に、そのディレクトリー内のファイルを明示的に含めるkustomization.yamlファイルが含まれている必要があります。以下のコマンドを使用して
ztp-site-generateコンテナーイメージからargocdディレクトリーをエクスポートします。podman pull registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.20
$ podman pull registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.20Copy to Clipboard Copied! Toggle word wrap Toggle overflow mkdir -p ./out
$ mkdir -p ./outCopy to Clipboard Copied! Toggle word wrap Toggle overflow podman run --log-driver=none --rm registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.20 extract /home/ztp --tar | tar x -C ./out
$ podman run --log-driver=none --rm registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.20 extract /home/ztp --tar | tar x -C ./outCopy to Clipboard Copied! Toggle word wrap Toggle overflow outディレクトリーに以下のサブディレクトリーが含まれていることを確認します。-
out/extra-manifestには、SiteConfigが追加の manifestconfigMapの生成に使用するソース CR ファイルが含まれます。 -
out/source-crsには、PolicyGeneratorが Red Hat Advanced Cluster Management (RHACM) ポリシーを生成するために使用するソース CR ファイルが含まれています。 -
out/argocd/deploymentには、この手順の次のステップで使用するハブクラスターに適用するパッチおよび YAML ファイルが含まれます。 -
out/argocd/exampleには、推奨される設定を表すSiteConfigファイルと、PolicyGeneratorまたはPolicyGentemplateファイルのサンプルが含まれています。
-
-
out/source-crsフォルダーとその内容をPolicyGeneratorまたはPolicyGentemplateディレクトリーにコピーします。 out/extra-manifests ディレクトリーには、RAN DU クラスターの参照マニフェストが含まれています。
out/extra-manifestsディレクトリーをSiteConfigフォルダーにコピーします。このディレクトリーには、ztp-site-generateコンテナーからの CR のみを含める必要があります。ユーザー提供の CR をここに追加しないでください。ユーザー提供の CR を使用する場合は、そのコンテンツ用に別のディレクトリーを作成する必要があります。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
PolicyGenTemplateCR を使用してポリシーを管理およびデプロイし、クラスターを管理することは、OpenShift Container Platform の今後のリリースでは非推奨になります。Red Hat Advanced Cluster Management (RHACM) およびPolicyGeneratorCR を使用すると、同等の機能および改善された機能が利用できます。
-
ディレクトリー構造と
kustomization.yamlファイルをコミットし、Git リポジトリーにプッシュします。Git への最初のプッシュには、kustomization.yamlファイルが含まれている必要があります。
out/argocd/example のディレクトリー構造は、Git リポジトリーの構造およびコンテンツの参照として使用します。この構造には、シングルノード、3 ノード、および標準クラスターの SiteConfig と、PolicyGenerator または PolicyGentemplate 参照 CR が含まれます。使用されていないクラスタータイプの参照を削除します。
すべてのクラスタータイプについて、次のことを行う必要があります。
-
source-crsサブディレクトリーをacmpolicygeneratorまたはpolicygentemplatesディレクトリーに追加します。 -
extra-manifestsディレクトリーをsiteconfigディレクトリーに追加します。
以下の例では、シングルノードクラスターのネットワークの CR のセットを説明しています。
PolicyGenTemplate CR を使用してポリシーを管理し、マネージドクラスターにデプロイすることは、OpenShift Container Platform の今後のリリースでは非推奨になります。同等の機能および改善された機能は、Red Hat Advanced Cluster Management (RHACM) および PolicyGenerator CR を使用する場合に利用できます。
PolicyGenerator リソースの詳細は、RHACM の ポリシージェネレーターの統合 ドキュメントを参照してください。
2.10. バージョンに依存しないように GitOps ZTP サイト設定リポジトリーを準備する リンクのコピーリンクがクリップボードにコピーされました!
GitOps ZTP を使用して、OpenShift Container Platform のさまざまなバージョンを実行しているマネージドクラスターのソースカスタムリソース (CR) を管理できます。これは、ハブクラスター上で実行している OpenShift Container Platform のバージョンが、マネージドクラスター上で実行しているバージョンから独立している可能性があることを意味します。
次の手順では、クラスターポリシー管理に PolicyGentemplate リソースではなく、PolicyGenerator リソースを使用していることを前提としています。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてログインしている。
手順
-
SiteConfigCR とPolicyGeneratorCR の個別のパスを持つディレクトリー構造を作成します。 PolicyGeneratorディレクトリー内に、使用可能にする OpenShift Container Platform バージョンごとにディレクトリーを作成します。バージョンごとに、次のリソースを作成します。-
そのディレクトリー内のファイルを明示的に含む
kustomization.yamlファイル source-crsディレクトリーには、ztp-site-generateコンテナーからの参照 CR 設定ファイルが含まれます。ユーザー提供の CR を使用する場合は、CR 用に別のディレクトリーを作成する必要があります。
-
そのディレクトリー内のファイルを明示的に含む
/siteconfigディレクトリーに、使用可能にする OpenShift Container Platform バージョンごとにサブディレクトリーを作成します。バージョンごとに、コンテナーからコピーされる参照 CR 用のディレクトリーを少なくとも 1 つ作成します。ディレクトリーの名前や参照ディレクトリーの数に制限はありません。カスタムマニフェストを使用する場合は、個別のディレクトリーを作成する必要があります。次の例では、OpenShift Container Platform のさまざまなバージョンのユーザー提供のマニフェストと CR を使用した構造を説明します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 最上位の
kustomizationYAML ファイルを作成します。 - 2 7
- カスタム
/acmpolicygeneratorディレクトリー内にバージョン固有のディレクトリーを作成します。 - 3 8
- バージョンごとに
kustomization.yamlファイルを作成します。 - 4 9
ztp-site-generateコンテナーからの参照 CR を含めるために、バージョンごとにsource-crsディレクトリーを作成します。- 5 10
- ZTP コンテナーから展開されるポリシー CR の
reference-crsディレクトリーを作成します。 - 6 11
- オプション: ユーザー提供の CR 用に
custom-crsディレクトリーを作成します。 - 12 14
- カスタム
/siteconfigディレクトリー内にディレクトリーを作成し、ztp-site-generateコンテナーからの追加のマニフェストを含めます。 - 13 15
- ユーザーによって提供されるマニフェストを保持するフォルダーを作成します。
注記前の例では、カスタム
/siteconfigディレクトリー内の各バージョンサブディレクトリーにはさらに 2 つのサブディレクトリーが含まれており、1 つはコンテナーからコピーされた参照マニフェストを含み、もう 1 つは提供するカスタムマニフェスト用です。これらのディレクトリーに割り当てられた名前は一例です。ユーザー提供の CR を使用する場合は、SiteConfigCR のextraManifests.searchPathsの下にリストされている最後のディレクトリーが、ユーザー提供の CR を含むディレクトリーである必要があります。SiteConfigCR を編集して、作成したディレクトリーの検索パスを含めます。extraManifests.searchPathsの下にリストされる最初のディレクトリーは、参照マニフェストを含むディレクトリーである必要があります。ディレクトリーがリストされている順序を考慮してください。ディレクトリーに同じ名前のファイルが含まれている場合は、最後のディレクトリーにあるファイルが優先されます。SiteConfig CR の例
extraManifests: searchPaths: - extra-manifest/ - custom-manifest/extraManifests: searchPaths: - extra-manifest/1 - custom-manifest/2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow トップレベルの
kustomization.yamlファイルを編集して、アクティブな OpenShift Container Platform バージョンを制御します。以下は、最上位レベルのkustomization.yamlファイルの例です。resources: - version_4.13 #- version_4.14
resources: - version_4.131 #- version_4.142 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.11. バックアップおよび復元用のハブクラスターの設定 リンクのコピーリンクがクリップボードにコピーされました!
GitOps ZTP を使用して、BareMetalHost リソースをバックアップするための一連のポリシーを設定できます。これにより、障害が発生したハブクラスターからデータを回復し、Red Hat Advanced Cluster Management (RHACM) を使用して代替クラスターをデプロイできます。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてログインしている。
手順
cluster.open-cluster-management.io/backup=cluster-activationラベルをinfraenvs.agent-install.openshift.ioラベルの付いたすべてのBareMetalHostリソースに追加するポリシーを作成します。ポリシーをBareMetalHostBackupPolicy.yamlとして保存します。以下の例では、
cluster.open-cluster-management.io/backupラベルを、infraenvs.agent-install.openshift.ioラベルの付いたすべてのBareMetalHostリソースに追加します。ポリシーの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
cluster.open-cluster-management.io/backup: cluster-activationラベルをBareMetalHostリソースに適用すると、RHACM クラスターはそれらのリソースをバックアップします。ハブアクティベーションリソースを復元する際に、アクティブなクラスターが使用できなくなった場合は、BareMetalHostリソースを復元できます。
以下のコマンドを実行してポリシーを適用します。
oc apply -f BareMetalHostBackupPolicy.yaml
$ oc apply -f BareMetalHostBackupPolicy.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
以下のコマンドを実行して、ラベル
infraenvs.agent-install.openshift.ioを持つすべてのBareMetalHostリソースを検索します。oc get BareMetalHost -A -l infraenvs.agent-install.openshift.io
$ oc get BareMetalHost -A -l infraenvs.agent-install.openshift.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAMESPACE NAME STATE CONSUMER ONLINE ERROR AGE baremetal-ns baremetal-name false 50s
NAMESPACE NAME STATE CONSUMER ONLINE ERROR AGE baremetal-ns baremetal-name false 50sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、ポリシーがラベル
cluster.open-cluster-management.io/backup=cluster-activationをこれらのリソースすべてに適用していることを確認します。oc get BareMetalHost -A -l infraenvs.agent-install.openshift.io,cluster.open-cluster-management.io/backup=cluster-activation
$ oc get BareMetalHost -A -l infraenvs.agent-install.openshift.io,cluster.open-cluster-management.io/backup=cluster-activationCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAMESPACE NAME STATE CONSUMER ONLINE ERROR AGE baremetal-ns baremetal-name false 50s
NAMESPACE NAME STATE CONSUMER ONLINE ERROR AGE baremetal-ns baremetal-name false 50sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力には、前の手順と同じリストが表示されるはずです。このリストには、ラベル
infraenvs.agent-install.openshift.ioが付いたすべてのBareMetalHostリソースが表示されています。これにより、infraenvs.agent-install.openshift.ioラベルが付いたすべてのBareMetalHostリソースに、cluster.open-cluster-management.io/backup: cluster-activationラベルも付いていることが確認されます。以下の例は、
infraenvs.agent-install.openshift.ioラベルの付いたBareMetalHostリソースを示しています。リソースには、ステップ 1 で作成したポリシーによって追加されたcluster.open-cluster-management.io/backup: cluster-activationラベルも必要です。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Red Hat Advanced Cluster Management を使用して、マネージドクラスターを復元できるようになりました。
クラスターアクティベーションデータの復元の一環として BareMetalHosts リソースを復元する場合、BareMetalHosts ステータスを復元する必要があります。次の RHACM Restore リソースの例では、BareMetalHosts を含むアクティベーションリソースを復元し、BareMetalHosts リソースのステータスも復元します。
第3章 GitOps ZTP の更新 リンクのコピーリンクがクリップボードにコピーされました!
GitOps Zero Touch Provisioning (ZTP) インフラストラクチャーは、ハブクラスター、Red Hat Advanced Cluster Management (RHACM)、および OpenShift Container Platform マネージドクラスターとは別に更新できます。
新しいバージョンが利用可能になったら、Red Hat OpenShift GitOps Operator を更新できます。GitOps ZTP プラグインを更新するときは、参照設定で更新されたファイルを確認し、変更が要件を満たしていることを確認してください。
PolicyGenTemplate CR を使用してポリシーを管理し、マネージドクラスターにデプロイすることは、OpenShift Container Platform の今後のリリースでは非推奨になります。同等の機能および改善された機能は、Red Hat Advanced Cluster Management (RHACM) および PolicyGenerator CR を使用する場合に利用できます。
PolicyGenerator リソースの詳細は、RHACM の ポリシージェネレーターの統合 ドキュメントを参照してください。
3.1. GitOps ZTP 更新プロセスの概要 リンクのコピーリンクがクリップボードにコピーされました!
以前のバージョンの GitOps ZTP インフラストラクチャーを実行している、完全に機能するハブクラスターの GitOps Zero Touch Provisioning (ZTP) を更新できます。更新プロセスにより、マネージドクラスターへの影響が回避されます。
推奨コンテンツの追加など、ポリシー設定を変更すると、更新されたポリシーが作成され、マネージドクラスターにロールアウトして調整する必要があります。
GitOps ZTP インフラストラクチャーを更新するためのストラテジーの概要は次のとおりです。
-
既存のすべてのクラスターに
ztp-doneラベルを付けます。 - ArgoCD アプリケーションを停止します。
- 新しい GitOps ZTP ツールをインストールします。
- Git リポジトリーで必要なコンテンツおよびオプションの変更を更新します。
- 必要な OpenShift Container Platform バージョンの ISO イメージのプルを有効にします。
- アプリケーション設定を更新して再起動します。
3.2. アップグレードの準備 リンクのコピーリンクがクリップボードにコピーされました!
次の手順を使用して、GitOps Zero Touch Provisioning (ZTP) アップグレードのためにサイトを準備します。
手順
- GitOps ZTP で使用するために Red Hat OpenShift GitOps の設定に使用されるカスタムリソース (CR) を持つ GitOps ZTP コンテナーの最新バージョンを取得します。
次のコマンドを使用して、
argocd/deploymentディレクトリーを抽出します。mkdir -p ./update
$ mkdir -p ./updateCopy to Clipboard Copied! Toggle word wrap Toggle overflow podman run --log-driver=none --rm registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.20 extract /home/ztp --tar | tar x -C ./update
$ podman run --log-driver=none --rm registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.20 extract /home/ztp --tar | tar x -C ./updateCopy to Clipboard Copied! Toggle word wrap Toggle overflow /updateディレクトリーには、次のサブディレクトリーが含まれています。-
update/extra-manifest:SiteConfigCR が追加のマニフェストconfigMapを生成するために使用するソース CR ファイルが含まれています。 -
update/source-crs:PolicyGeneratorまたはPolicyGentemplateCR が Red Hat Advanced Cluster Management (RHACM) ポリシーを生成するために使用するソース CR ファイルが含まれます。 -
update/argocd/deploymentには、この手順の次のステップで使用するハブクラスターに適用するパッチおよび YAML ファイルが含まれます。 -
update/argocd/example: 推奨される設定を表すSiteConfigと、PolicyGeneratorまたはPolicyGentemplateファイルの例が含まれています。
-
clusters-app.yamlファイルおよびpolicies-app.yamlファイルを更新して、Git リポジトリーのアプリケーションおよび URL、ブランチ、およびパスを反映します。アップグレードにポリシーの廃止につながる変更が含まれている場合は、アップグレードを実行する前に、廃止されたポリシーを削除する必要があります。
/updateフォルダー内の設定およびデプロイソース CR と、フリートサイト CR を管理する Git リポジトリーとの間の変更を比較します。必要な変更をサイトリポジトリーに適用してプッシュします。重要GitOps ZTP を最新バージョンに更新するときは、
update/argocd/deploymentディレクトリーからサイトリポジトリーに変更を適用する必要があります。古いバージョンのargocd/deployment/ファイルは使用しないでください。
3.3. 既存クラスターのラベル付け リンクのコピーリンクがクリップボードにコピーされました!
既存のクラスターがツールの更新の影響を受けないようにするには、既存のすべてのマネージドクラスターに ztp-done ラベルを付けます。
この手順は、Topology Aware Lifecycle Manager (TALM) でプロビジョニングされていないクラスターを更新する場合にのみ適用されます。TALM でプロビジョニングするクラスターには、自動的に ztp-done というラベルが付けられます。
手順
local-cluster!=trueなど、GitOps Zero Touch Provisioning (ZTP) でデプロイされたマネージドクラスターを一覧表示するラベルセレクターを見つけます。oc get managedcluster -l 'local-cluster!=true'
$ oc get managedcluster -l 'local-cluster!=true'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 結果のリストに、GitOps ZTP でデプロイされたすべてのマネージドクラスターが含まれていることを確認してから、そのセレクターを使用して
ztp-doneラベルを追加します。oc label managedcluster -l 'local-cluster!=true' ztp-done=
$ oc label managedcluster -l 'local-cluster!=true' ztp-done=Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4. 既存の GitOps ZTP アプリケーションの停止 リンクのコピーリンクがクリップボードにコピーされました!
既存のアプリケーションを削除すると、Git リポジトリー内の既存のコンテンツに対する変更は、ツールの新しいバージョンが利用可能になるまでロールアウトされません。
deployment ディレクトリーからのアプリケーションファイルを使用します。アプリケーションにカスタム名を使用した場合は、まずこれらのファイルの名前を更新します。
手順
clustersアプリケーションで非カスケード削除を実行して、生成されたすべてのリソースをそのまま残します。oc delete -f update/argocd/deployment/clusters-app.yaml
$ oc delete -f update/argocd/deployment/clusters-app.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow policiesアプリケーションでカスケード削除を実行して、以前のすべてのポリシーを削除します。oc patch -f policies-app.yaml -p '{"metadata": {"finalizers": ["resources-finalizer.argocd.argoproj.io"]}}' --type merge$ oc patch -f policies-app.yaml -p '{"metadata": {"finalizers": ["resources-finalizer.argocd.argoproj.io"]}}' --type mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete -f update/argocd/deployment/policies-app.yaml
$ oc delete -f update/argocd/deployment/policies-app.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5. Git リポジトリーに必要な変更 リンクのコピーリンクがクリップボードにコピーされました!
ztp-site-generate コンテナーを以前のリリースの GitOps Zero Touch Provisioning (ZTP) から 4.10 以降にアップグレードする場合は、Git リポジトリーのコンテンツに関する追加の要件があります。これらの変更を反映するには、リポジトリー内の既存のコンテンツを更新する必要があります。
次の手順では、クラスターポリシー管理に PolicyGentemplate リソースではなく、PolicyGenerator リソースを使用していることを前提としています。
PolicyGeneratorファイルに必要な変更を加えます。すべての
PolicyGeneratorファイルは、ztpという接頭辞が付いたNamespace内に作成する必要があります。これにより、GitOps ZTP アプリケーションは、Red Hat Advanced Cluster Management (RHACM) が内部でポリシーを管理する方法と競合することなく、GitOps ZTP によって生成されたポリシー CR を管理できるようになります。kustomization.yamlファイルをリポジトリーに追加します。すべての
SiteConfigおよびPolicyGeneratorCR は、それぞれのディレクトリーツリーの下にあるkustomization.yamlファイルに含める必要があります。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記generatorセクションにリスト表示されているファイルには、SiteConfigまたは{policy-gen-cr}CR のいずれかのみが含まれている必要があります。既存の YAML ファイルにNamespaceなどの他の CR が含まれている場合、これらの他の CR を別のファイルに取り出して、resourcesセクションにリストする必要があります。PolicyGeneratorkustomization ファイルには、generatorセクション内のすべてのPolicyGeneratorYAML ファイルと、resourcesセクションのNamespaceCR が含まれている必要があります。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow SiteConfigkustomization ファイルには、すべてのSiteConfigYAML ファイルがgeneratorセクションおよびリソースの他の CR に含まれている必要があります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow pre-sync.yamlファイルおよびpost-sync.yamlファイルを削除します。OpenShift Container Platform 4.10 以降では、
pre-sync.yamlおよびpost-sync.yamlファイルは不要になりました。update/deployment/kustomization.yamlCR は、ハブクラスターでのポリシーのデプロイを管理します。注記SiteConfigツリーと{policy-gen-cr}ツリーの両方の下に、pre-sync.yamlファイルとpost-sync.yamlファイルのセットが存在します。推奨される変更の確認および組み込み
各リリースには、デプロイされたクラスターに適用される設定に推奨される追加の変更が含まれる場合があります。通常、これらの変更により、OpenShift プラットフォーム、追加機能、またはプラットフォームのチューニングが改善された CPU の使用率が低下します。
ネットワーク内のクラスターのタイプに適用可能なリファレンス
SiteConfigおよびPolicyGeneratorCR を確認します。これらの例は、GitOps ZTP コンテナーから抽出したargocd/exampleディレクトリーにあります。
3.6. 新規 GitOps ZTP アプリケーションのインストール リンクのコピーリンクがクリップボードにコピーされました!
展開した argocd/deployment ディレクトリーを使用し、アプリケーションがサイトの Git リポジトリーをポイントすることを確認してから、deployment ディレクトリーの完全なコンテンツを適用します。ディレクトリーのすべての内容を適用すると、アプリケーションに必要なすべてのリソースが正しく設定されます。
手順
GitOps ZTP プラグインをインストールするには、ハブクラスター内の ArgoCD インスタンスに、関連するマルチクラスターエンジン (MCE) サブスクリプションイメージをパッチ適用します。以前に
out/argocd/deployment/ディレクトリーに展開したパッチファイルを環境に合わせてカスタマイズします。RHACM バージョンに一致する
multicluster-operators-subscriptionイメージを選択します。-
RHACM 2.8 および 2.9 の場合は、
registry.redhat.io/rhacm2/multicluster-operators-subscription-rhel8:v<rhacm_version>イメージを使用します。 -
RHACM 2.10 以降の場合は、
registry.redhat.io/rhacm2/multicluster-operators-subscription-rhel9:v<rhacm_version>イメージを使用します。
重要multicluster-operators-subscriptionイメージのバージョンは、RHACM のバージョンと一致する必要があります。MCE 2.10 リリース以降、RHEL 9 はmulticluster-operators-subscriptionイメージのベースイメージです。OpenShift Operator のライフサイクル の表「Platform Aligned Operators」の
[Expand for Operator list]をクリックすると、OpenShift Container Platform でサポートされている Operator の完全なマトリックスが表示されます。-
RHACM 2.8 および 2.9 の場合は、
RHACM バージョンに一致する
multicluster-operators-subscriptionイメージを使用して、out/argocd/deployment/argocd-openshift-gitops-patch.jsonファイルを変更します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ArgoCD インスタンスにパッチを適用します。以下のコマンドを実行します。
oc patch argocd openshift-gitops \ -n openshift-gitops --type=merge \ --patch-file out/argocd/deployment/argocd-openshift-gitops-patch.json
$ oc patch argocd openshift-gitops \ -n openshift-gitops --type=merge \ --patch-file out/argocd/deployment/argocd-openshift-gitops-patch.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow
RHACM 2.7 以降では、マルチクラスターエンジンはデフォルトで
cluster-proxy-addon機能を有効にします。次のパッチを適用して、cluster-proxy-addon機能を無効にし、このアドオンに関連するハブクラスターとマネージド Pod を削除します。以下のコマンドを実行します。oc patch multiclusterengines.multicluster.openshift.io multiclusterengine --type=merge --patch-file out/argocd/deployment/disable-cluster-proxy-addon.json
$ oc patch multiclusterengines.multicluster.openshift.io multiclusterengine --type=merge --patch-file out/argocd/deployment/disable-cluster-proxy-addon.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、パイプライン設定をハブクラスターに適用します。
oc apply -k out/argocd/deployment
$ oc apply -k out/argocd/deploymentCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.7. 必要な OpenShift Container Platform バージョンの ISO イメージのプル リンクのコピーリンクがクリップボードにコピーされました!
必要な OpenShift Container Platform バージョンの ISO イメージをプルするには、ミラーレジストリー HTTP サーバーでホストされている必要な ISO および RootFS イメージへの参照を使用して AgentServiceConfig カスタムリソース (CR) を更新します。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。 -
RHACM で
MultiClusterHubが有効になっている。 - アシストサービスが有効になっている。
手順
spec.osImagesフィールドを更新するために、次のコマンドを実行してAgentServiceConfigCR を開きます。oc edit AgentServiceConfig
$ oc edit AgentServiceConfigCopy to Clipboard Copied! Toggle word wrap Toggle overflow AgentServiceConfigCR のspec.osImagesフィールドを更新します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
<host>- ターゲットミラーレジストリー HTTP サーバーの完全修飾ドメイン名 (FQDN) を指定します。
<path>- ターゲットミラーレジストリー上のイメージへのパスを指定します。
- エディターを保存して終了し、変更を適用します。
3.8. GitOps ZTP 設定の変更のロールアウト リンクのコピーリンクがクリップボードにコピーされました!
推奨される変更を実装したために設定の変更がアップグレードに含まれていた場合、アップグレードプロセスの結果、ハブクラスターの一連のポリシー CR が Non-Compliant 状態になります。GitOps Zero Touch Provisioning (ZTP) バージョン 4.10 以降の ztp-site-generate コンテナーの場合、これらのポリシーは inform モードに設定されており、ユーザーが追加の手順を実行しないとマネージドクラスターにプッシュされません。これにより、クラスターへの潜在的に破壊的な変更を、メンテナンスウィンドウなどでいつ変更が行われたか、および同時に更新されるクラスターの数に関して管理できるようになります。
変更をロールアウトするには、TALM ドキュメントの詳細に従って、1 つ以上の ClusterGroupUpgrade CR を作成します。CR には、スポーククラスターにプッシュする Non-Compliant ポリシーのリストと、更新に含めるクラスターのリストまたはセレクターが含まれている必要があります。
第4章 RHACM および SiteConfig リソースを使用したマネージドクラスターのインストール リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management (RHACM) を使用して OpenShift Container Platform クラスターを大規模にプロビジョニングするには、アシストサービスと、コア削減テクノロジーが有効になっている GitOps プラグインポリシージェネレーターを使用します。GitOps Zero Touch Provisioning (ZTP) パイプラインは、クラスターのインストールを実行します。GitOps ZTP は、非接続環境で使用できます。
PolicyGenTemplate CR を使用してポリシーを管理し、マネージドクラスターにデプロイすることは、OpenShift Container Platform の今後のリリースでは非推奨になります。同等の機能および改善された機能は、Red Hat Advanced Cluster Management (RHACM) および PolicyGenerator CR を使用する場合に利用できます。
PolicyGenerator リソースの詳細は、RHACM の ポリシージェネレーターの統合 ドキュメントを参照してください。
4.1. GitOps ZTP および Topology Aware Lifecycle Manager リンクのコピーリンクがクリップボードにコピーされました!
GitOps Zero Touch Provisioning (ZTP) は、Git に格納されたマニフェストからインストールと設定の CR を生成します。これらのアーティファクトは、Red Hat Advanced Cluster Management (RHACM)、アシストサービス、および Topology Aware Lifecycle Manager (TALM) が CR を使用してマネージドクラスターをインストールおよび設定する中央ハブクラスターに適用されます。GitOps ZTP パイプラインの設定フェーズでは、TALM を使用してクラスターに対する設定 CR の適用のオーケストレーションを行います。GitOps ZTP と TALM の間には、いくつかの重要な統合ポイントがあります。
- Inform ポリシー
-
デフォルトでは、GitOps ZTP は、
informの修復アクションですべてのポリシーを作成します。これらのポリシーにより、RHACM はポリシーに関連するクラスターのコンプライアンスステータスを報告しますが、必要な設定は適用されません。GitOps ZTP プロセスの中で OpenShift をインストールした後に、TALM は作成された各informポリシーを確認し、これらのポリシーをターゲットのマネージドクラスターに適用します。これにより、設定がマネージドクラスターに適用されます。クラスターライフサイクルの GitOps ZTP フェーズ以外では、影響を受けるマネージドクラスターで変更をすぐにロールアウトするリスクなしに、ポリシーを変更できます。TALM を使用して、修復されたクラスターのタイミングとセットを制御できます。 - ClusterGroupUpgrade CR の自動作成
新しくデプロイされたクラスターの初期設定を自動化するために、TALM はハブクラスター上のすべての
ManagedClusterCR の状態を監視します。新規に作成されたManagedClusterCR を含むztp-doneラベルを持たないManagedClusterCR が適用されると、TALM は以下の特性でClusterGroupUpgradeCR を自動的に作成します。-
ClusterGroupUpgradeCR がztp-installnamespace に作成され、有効にされます。 -
ClusterGroupUpgradeCR の名前はManagedClusterCR と同じになります。 -
クラスターセレクターには、その
ManagedClusterCR に関連付けられたクラスターのみが含まれます。 -
管理ポリシーのセットには、
ClusterGroupUpgradeの作成時に RHACM がクラスターにバインドされているすべてのポリシーが含まれます。 - 事前キャッシュは無効です。
- タイムアウトを 4 時間 (240 分) に設定。
有効な
ClusterGroupUpgradeの自動生成により、ユーザーの介入を必要としないゼロタッチのクラスター展開が可能になります。さらに、ztp-doneラベルのないManagedClusterに対してClusterGroupUpgradeCR が自動的に作成されるため、そのクラスターのClusterGroupUpgradeCR を削除するだけで失敗した GitOps ZTP インストールを再開できます。-
- Waves
PolicyGeneratorまたはPolicyGentemplateCR から生成された各ポリシーには、ztp-deploy-waveアノテーションが含まれます。このアノテーションは、そのポリシーに含まれる各 CR と同じアノテーションに基づいています。wave アノテーションは、自動生成されたClusterGroupUpgradeCR でポリシーを順序付けするために使用されます。wave アノテーションは、自動生成されたClusterGroupUpgradeCR 以外には使用されません。注記同じポリシーのすべての CR には
ztp-deploy-waveアノテーションに同じ設定が必要です。各 CR のこのアノテーションのデフォルト値は、PolicyGeneratorまたはPolicyGentemplateでオーバーライドできます。ソース CR の wave アノテーションは、ポリシーの wave アノテーションを判別し、設定するために使用されます。このアノテーションは、実行時に生成されるポリシーに含まれるビルドされる各 CR から削除されます。TALM は、wave アノテーションで指定された順序で設定ポリシーを適用します。TALM は、各ポリシーが準拠しているのを待ってから次のポリシーに移動します。各 CR の wave アノテーションは、それらの CR がクラスターに適用されるための前提条件を確実に考慮することが重要である。たとえば、Operator は Operator の設定前後にインストールする必要があります。同様に、Operator 用
CatalogSourceは、Operator 用サブスクリプションの前または同時にウェーブにインストールする必要があります。各 CR のデフォルトの波動値は、これらの前提条件を考慮したものです。注記複数の CR およびポリシーは同じアンブ番号を共有できます。ポリシーの数を少なくすることで、デプロイメントを高速化し、CPU 使用率を低減させることができます。多くの CR を比較的少なくするのがベストプラクティスです。
各ソース CR でデフォルトの wave 値を確認するには、
ztp-site-generateコンテナーイメージからデプロイメントしたout/source-crsディレクトリーに対して以下のコマンドを実行します。grep -r "ztp-deploy-wave" out/source-crs
$ grep -r "ztp-deploy-wave" out/source-crsCopy to Clipboard Copied! Toggle word wrap Toggle overflow - フェーズラベル
ClusterGroupUpgradeCR は自動的に作成され、そこには GitOps ZTP プロセスの開始時と終了時にManagedClusterCR をラベルでアノテートするディレクティブが含まれています。インストール後に GitOps ZTP 設定が開始すると、
ManagedClusterにztp-runningラベルが適用されます。すべてのポリシーがクラスターに修復され、完全に準拠されると、TALM はztp-runningラベルを削除し、ztp-doneラベルを適用します。informDuValidatorポリシーを使用するデプロイメントでは、クラスターが完全にアプリケーションをデプロイするための準備が整った時点でztp-doneラベルが適用されます。これには、GitOps ZTP が適用された設定 CR の調整および影響がすべて含まれます。ztp-doneラベルは、TALM によるClusterGroupUpgradeCR の自動作成に影響します。クラスターの最初の GitOps ZTP インストール後は、このラベルを操作しないでください。- リンクされた CR
-
自動的に作成された
ClusterGroupUpgradeCR には所有者の参照が、そこから派生したManagedClusterとして設定されます。この参照により、ManagedClusterCR を削除すると、ClusterGroupUpgradeのインスタンスがサポートされるリソースと共に削除されるようにします。
4.2. GitOps ZTP を使用したマネージドクラスターのデプロイの概要 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management (RHACM) は、GitOps Zero Touch Provisioning (ZTP) を使用して、シングルノード OpenShift Container Platform クラスター、3 ノードのクラスター、および標準クラスターをデプロイします。サイト設定データは、Git リポジトリーで OpenShift Container Platform カスタムリソース (CR) として管理します。GitOps ZTP は、宣言的な GitOps アプローチを使用して、一度開発すればどこにでもデプロイできるモデルを使用して、マネージドクラスターをデプロイします。
クラスターのデプロイメントには、以下が含まれます。
- ホストオペレーティングシステム (RHCOS) の空のサーバーへのインストール。
- OpenShift Container Platform のデプロイ
- クラスターポリシーおよびサイトサブスクリプションの作成
- サーバーオペレーティングシステムに必要なネットワーク設定を行う
- プロファイル Operator をデプロイし、パフォーマンスプロファイル、PTP、SR-IOV などの必要なソフトウェア関連の設定を実行します。
4.2.1. マネージドサイトのインストールプロセスの概要 リンクのコピーリンクがクリップボードにコピーされました!
マネージドサイトのカスタムリソース (CR) をハブクラスターに適用すると、次のアクションが自動的に実行されます。
- Discovery イメージの ISO ファイルが生成され、ターゲットホストで起動します。
- ISO ファイルがターゲットホストで正常に起動すると、ホストのハードウェア情報が RHACM にレポートされます。
- すべてのホストの検出後に、OpenShift Container Platform がインストールされます。
-
OpenShift Container Platform のインストールが完了すると、ハブは
klusterletサービスをターゲットクラスターにインストールします。 - 要求されたアドオンサービスがターゲットクラスターにインストールされている。
マネージドクラスターの Agent CR がハブクラスター上に作成されると、検出イメージ ISO プロセスが完了します。
ターゲットのベアメタルホストは、vDU アプリケーションワークロードに推奨されるシングルノード OpenShift クラスター設定 に記載されているネットワーク、ファームウェア、およびハードウェアの要件を満たす必要があります。
4.3. マネージドベアメタルホストシークレットの作成 リンクのコピーリンクがクリップボードにコピーされました!
マネージドベアメタルホストに必要な Secret カスタムリソース (CR) をハブクラスターに追加します。GitOps Zero Touch Provisioning (ZTP) パイプラインが Baseboard Management Controller (BMC) にアクセスするためのシークレットと、アシストインストーラーサービスがレジストリーからクラスターインストールイメージを取得するためのシークレットが必要です。
シークレットは、SiteConfig CR から名前で参照されます。namespace は SiteConfig namespace と一致する必要があります。
手順
ホスト Baseboard Management Controller (BMC) の認証情報と、OpenShift およびすべてのアドオンクラスター Operator のインストールに必要なプルシークレットを含む YAML シークレットファイルを作成します。
-
example-sno-secret.yamlへの相対パスを、クラスターのインストールに使用するkustomization.yamlファイルに追加します。
4.4. GitOps ZTP を使用したインストール用の Discovery ISO カーネル引数の設定 リンクのコピーリンクがクリップボードにコピーされました!
GitOps Zero Touch Provisioning (ZTP) ワークフローは、マネージドベアメタルホストでの OpenShift Container Platform インストールプロセスの一部として Discovery ISO を使用します。InfraEnv リソースを編集して、Discovery ISO のカーネル引数を指定できます。これは、特定の環境要件を持つクラスターのインストールに役立ちます。たとえば、Discovery ISO の rd.net.timeout.carrier カーネル引数を設定して、クラスターの静的ネットワーク設定を容易にしたり、インストール中に root ファイルシステムをダウンロードする前に DHCP アドレスを受信したりできます。
OpenShift Container Platform 4.20 では、カーネル引数のみを追加できます。カーネル引数を置き換えたり削除したりすることはできません。
前提条件
- OpenShift CLI (oc) がインストールされている。
- cluster-admin 権限を持つユーザーとしてハブクラスターにログインしている。
手順
InfraEnvCR を作成し、spec.kernelArguments仕様を編集してカーネル引数を設定します。次の YAML を
InfraEnv-example.yamlファイルに保存します。注記この例の
InfraEnvCR は、SiteConfigCR の値に基づいて入力される{{ .Cluster.ClusterName }}などのテンプレート構文を使用します。SiteConfigCR は、デプロイメント中にこれらのテンプレートの値を自動的に設定します。テンプレートを手動で編集しないでください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
InfraEnv-example.yamlCR を、Git リポジトリー内のSiteConfigCR と同じ場所にコミットし、変更をプッシュします。次の例は、サンプルの Git リポジトリー構造を示しています。~/example-ztp/install └── site-install ├── siteconfig-example.yaml ├── InfraEnv-example.yaml ...~/example-ztp/install └── site-install ├── siteconfig-example.yaml ├── InfraEnv-example.yaml ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow SiteConfigCR のspec.clusters.crTemplates仕様を編集して、Git リポジトリーのInfraEnv-example.yamlCR を参照します。clusters: crTemplates: InfraEnv: "InfraEnv-example.yaml"clusters: crTemplates: InfraEnv: "InfraEnv-example.yaml"Copy to Clipboard Copied! Toggle word wrap Toggle overflow SiteConfigCR をコミットおよびプッシュしてクラスターをデプロイする準備ができたら、ビルドパイプラインは Git リポジトリー内のカスタムInfraEnv-exampleCR を使用して、カスタムカーネル引数を含むインフラストラクチャー環境を設定します。
検証
カーネル引数が適用されていることを確認するには、Discovery イメージが OpenShift Container Platform をインストールする準備ができていることを確認した後、インストールプロセスを開始する前にターゲットホストに SSH 接続します。その時点で、/proc/cmdline ファイルで Discovery ISO のカーネル引数を表示できます。
ターゲットホストとの SSH セッションを開始します。
ssh -i /path/to/privatekey core@<host_name>
$ ssh -i /path/to/privatekey core@<host_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを使用して、システムのカーネル引数を表示します。
cat /proc/cmdline
$ cat /proc/cmdlineCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.5. SiteConfig と GitOps ZTP を使用したマネージドクラスターのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
次の手順を使用して、SiteConfig カスタムリソース (CR) と関連ファイルを作成し、GitOps Zero Touch Provisioning (ZTP) クラスターのデプロイメントを開始します。
SiteConfig v1 は、OpenShift Container Platform バージョン 4.18 以降では非推奨になります。ClusterInstance カスタムリソースを使用する SiteConfig Operator を通じて、同等の改良された機能が利用できるようになりました。詳細は、Procedure to transition from SiteConfig CRs to the ClusterInstance API を参照してください。
SiteConfig Operator の詳細は、SiteConfig を参照してください。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。 - 必要なインストール CR とポリシー CR を生成するためにハブクラスターを設定している。
カスタムサイトの設定データを管理する Git リポジトリーを作成している。リポジトリーはハブクラスターからアクセスできる必要があり、ArgoCD アプリケーションのソースリポジトリーとして設定する必要があります。詳細は、「GitOps ZTP サイト設定リポジトリーの準備」を参照してください。
注記ソースリポジトリーを作成するときは、
ztp-site-generateコンテナーから抽出したargocd/deployment/argocd-openshift-gitops-patch.jsonパッチファイルを使用して ArgoCD アプリケーションにパッチを適用してください。「ArgoCD を使用したハブクラスターの設定」を参照してください。マネージドクラスターをプロビジョニングする準備を整えるには、各ベアメタルホストごとに次のものが必要です。
- ネットワーク接続
- ネットワークには DNS が必要です。マネージドクラスターホストは、ハブクラスターから到達可能である必要があります。ハブクラスターとマネージドクラスターホストの間にレイヤー 3 接続が存在することを確認します。
- Baseboard Management Controller (BMC) の詳細
-
GitOps ZTP は、BMC のユーザー名とパスワードの詳細を使用して、クラスターのインストール中に BMC に接続します。GitOps ZTP プラグインは、サイトの Git リポジトリーの
SiteConfigCR に基づいて、ハブクラスター上のManagedClusterCR を管理します。ホストごとに個別のBMCSecretCR を手動で作成します。
手順
ハブクラスターで必要なマネージドクラスターシークレットを作成します。これらのリソースは、クラスター名と一致する名前を持つネームスペースに存在する必要があります。たとえば、
out/argocd/example/siteconfig/example-sno.yamlでは、クラスター名と namespace がexample-snoになっています。次のコマンドを実行して、クラスター namespace をエクスポートします。
export CLUSTERNS=example-sno
$ export CLUSTERNS=example-snoCopy to Clipboard Copied! Toggle word wrap Toggle overflow namespace を作成します。
oc create namespace $CLUSTERNS
$ oc create namespace $CLUSTERNSCopy to Clipboard Copied! Toggle word wrap Toggle overflow
マネージドクラスターのプルシークレットと BMC
SecretCR を作成します。プルシークレットには、OpenShift Container Platform のインストールに必要なすべての認証情報と、必要なすべての Operator を含める必要があります。詳細は、「マネージドベアメタルホストシークレットの作成」を参照してください。注記シークレットは、名前で
SiteConfigカスタムリソース (CR) から参照されます。namespace はSiteConfignamespace と一致する必要があります。Git リポジトリーのローカルクローンに、クラスターの
SiteConfigCR を作成します。out/argocd/example/siteconfig/フォルダーから CR の適切な例を選択します。フォルダーには、シングルノード、3 ノード、標準クラスターのサンプルファイルが含まれます。-
example-sno.yaml -
example-3node.yaml -
example-standard.yaml
-
サンプルファイルのクラスターおよびホスト詳細を、必要なクラスタータイプに一致するように変更します。以下に例を示します。
シングルノード OpenShift SiteConfig CR の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記BMC アドレッシングの詳細は、「関連情報」セクションを参照してください。この例では、読みやすくするために、
installConfigOverridesフィールドとignitionConfigOverrideフィールドが展開されています。注記ノードのデフォルトの
BareMetalHostCR をオーバーライドするには、SiteConfigCR のノードレベルのcrTemplatesフィールドでオーバーライド用の CR を参照できます。オーバーライド用のBareMetalHostCR で、必ずargocd.argoproj.io/sync-wave: "3"アノテーションを設定してください。-
out/argocd/extra-manifestで extra-manifestMachineConfigCR のデフォルトセットを検査できます。これは、インストール時にクラスターに自動的に適用されます。 オプション: プロビジョニングされたクラスターに追加のインストール時マニフェストをプロビジョニングするには、Git リポジトリーに
sno-extra-manifest/などのディレクトリーを作成し、このディレクトリーにカスタムマニフェストの CR を追加します。SiteConfig.yamlがextraManifestPathフィールドでこのディレクトリーを参照する場合、この参照ディレクトリーの CR はすべて、デフォルトの追加マニフェストセットに追加されます。crun OCI コンテナーランタイムの有効化クラスターのパフォーマンスを最適化するには、シングルノード OpenShift、追加のワーカーノードを備えたシングルノード OpenShift、3 ノード OpenShift、および標準クラスターのマスターノードとワーカーノードで crun を有効にします。
クラスターの再起動を回避するには、追加の Day 0 インストール時マニフェストとして
ContainerRuntimeConfigCR で crun を有効にします。enable-crun-master.yamlおよびenable-crun-worker.yamlCR ファイルは、ztp-site-generateコンテナーから抽出できるout/source-crs/optional-extra-manifest/フォルダーにあります。詳細は、「GitOps ZTP パイプラインでの追加インストールマニフェストのカスタマイズ」を参照してください。
-
out/argocd/example/siteconfig/kustomization.yamlに示す例のように、generatorsセクションのkustomization.yamlファイルにSiteConfigCR を追加してください。 SiteConfigCR と関連するkustomization.yamlの変更を Git リポジトリーにコミットし、変更をプッシュします。ArgoCD パイプラインが変更を検出し、マネージドクラスターのデプロイを開始します。
検証
ノードのデプロイ後にカスタムのロールとラベルが適用されていることを確認します。
oc describe node example-node.example.com
$ oc describe node example-node.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow
出力例
- 1
- カスタムラベルがノードに適用されます。
4.5.1. GitOps ZTP の高速プロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
GitOps ZTP の高速プロビジョニングは、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
シングルノード OpenShift 用の GitOps ZTP の高速プロビジョニングを使用すると、クラスターのインストールにかかる時間を短縮できます。高速 ZTP は、ポリシーから派生した Day 2 マニフェストを早い段階で適用することで、インストールを高速化します。
GitOps ZTP の高速プロビジョニングは、Assisted Installer を使用してシングルノード OpenShift をインストールする場合にのみサポートされます。これ以外の場合は、このインストール方法は失敗します。
4.5.1.1. 高速 ZTP のアクティブ化 リンクのコピーリンクがクリップボードにコピーされました!
以下の例のように、spec.clusters.clusterLabels.accelerated-ztp ラベルを使用して高速 ZTP をアクティブ化できます。
高速 ZTP SiteConfig CR の例。
accelerated-ztp: full を使用すると、高速化プロセスを完全に自動化できます。GitOps ZTP により、高速 GitOps ZTP ConfigMap への参照を使用して AgentClusterInstall リソースが更新され、TALM によってポリシーから抽出されたリソースと、高速 ZTP ジョブマニフェストが追加されます。
accelerated-ztp: partial を使用すると、GitOps ZTP により、高速ジョブマニフェストは追加されませんが、次の kind のクラスターインストール中に作成されたポリシーに基づくオブジェクトが追加されます。
-
PerformanceProfile.performance.openshift.io -
Tuned.tuned.openshift.io -
Namespace -
CatalogSource.operators.coreos.com -
ContainerRuntimeConfig.machineconfiguration.openshift.io
この部分的な高速化により、Performance Profile、Tuned、および ContainerRuntimeConfig などの kind のリソースを適用するときに、ノードによって実行される再起動の回数を減らすことができます。TALM は、RHACM がクラスターのインポートを完了した後、標準の GitOps ZTP と同じフローに従って、ポリシーに基づく Operator サブスクリプションをインストールします。
高速 ZTP の利点は、デプロイメントの規模に応じて増大します。accelerated-ztp: full を使用すると、多数のクラスターでより大きなメリットをもたらします。クラスターの数が少ない場合、インストール時間の短縮はそれほど大きくありません。完全な高速 ZTP では、スポーク上に namespace と完了したジョブが残るため、手動で削除する必要があります。
accelerated-ztp: partial を使用する利点の 1 つは、ストック実装で問題が発生した場合やカスタム機能が必要な場合に、オンスポークジョブの機能をオーバーライドできることです。
4.5.1.2. 高速 ZTP のプロセス リンクのコピーリンクがクリップボードにコピーされました!
高速 ZTP は追加の ConfigMap を使用して、スポーククラスターのポリシーに基づくリソースを作成します。標準の ConfigMap には、GitOps ZTP ワークフローがクラスターのインストールをカスタマイズするために使用するマニフェストが含まれています。
TALM は accelerated-ztp ラベルが設定されていることを検出後、2 番目の ConfigMap を作成します。高速 ZTP の一部として、SiteConfig ジェネレーターは、命名規則 <spoke-cluster-name>-aztp を使用して、2 番目の ConfigMap への参照を追加します。
TALM は 2 番目の ConfigMap を作成した後、マネージドクラスターにバインドされているすべてのポリシーを検出し、GitOps ZTP プロファイル情報を抽出します。TALM は、GitOps ZTP プロファイル情報を <spoke-cluster-name>-aztp ConfigMap カスタムリソース (CR) に追加し、その CR をハブクラスター API に適用します。
4.5.2. GitOps ZTP および SiteConfig リソースを使用したシングルノード OpenShift クラスターの IPsec 暗号化の設定 リンクのコピーリンクがクリップボードにコピーされました!
GitOps ZTP と Red Hat Advanced Cluster Management (RHACM) を使用してインストールするシングルノード OpenShift マネージドクラスターで IPsec 暗号化を有効にできます。マネージドクラスターと、マネージドクラスター外の IPsec エンドポイント間のトラフィックを暗号化できます。OVN-Kubernetes クラスターネットワーク上のノード間のすべてのネットワークトラフィックが、Transport モードの IPsec で暗号化されます。
次の手順に従って、追加のワーカーノードを備えたシングルノード OpenShift クラスターの IPsec 暗号化を設定することもできます。シングルノード OpenShift クラスターおよび追加のワーカーノードを備えたシングルノード OpenShift クラスターの IPsec 暗号化を設定する際には、リソースの可用性が低いため、MachineConfig カスタムリソース (CR) を使用することを推奨します。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。 - マネージドクラスターに必要なインストールおよびポリシーカスタムリソース (CR) を生成するために、RHACM とハブクラスターを設定している。
- カスタムサイトの設定データを管理する Git リポジトリーを作成している。リポジトリーはハブクラスターからアクセス可能で、Argo CD アプリケーションのソースリポジトリーとして定義されている必要があります。
-
butaneユーティリティーバージョン 0.20.0 以降がインストールされている。 - IPsec エンドポイント用の PKCS#12 証明書と PEM 形式の CA 証明書がある。
手順
-
ztp-site-generateコンテナーソースの最新バージョンを抽出し、カスタムサイト設定データを管理するリポジトリーとマージします。 クラスター内の IPsec を設定するために必要な値を使用して、
optional-extra-manifest/ipsec/ipsec-endpoint-config.yamlを設定します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の証明書を
optional-extra-manifest/ipsecフォルダーに追加します。-
left_server.p12: IPsec エンドポイントの証明書バンドル ca.pem: 証明書に署名した認証局証明書ファイルは、各ホストのネットワークセキュリティーサービス (NSS) データベースで必要です。これらのファイルは、後の手順で Butane 設定の一部としてインポートされます。
-
-
カスタムサイト設定データを保持する Git リポジトリーの
optional-extra-manifest/ipsecフォルダーでシェルプロンプトを開きます。 必要な Butane および
MachineConfigCR ファイルを生成するには、optional-extra-manifest/ipsec/build.shスクリプトを実行します。PKCS#12 証明書がパスワードで保護されている場合は、
-W引数を設定します。出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow カスタムサイト設定データを管理するリポジトリーに
custom-manifest/フォルダーを作成します。enable-ipsec.yamlおよび99-ipsec-*YAML ファイルをディレクトリーに追加します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow SiteConfigCR で、extraManifests.searchPathsフィールドにcustom-manifest/ディレクトリーを追加します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow SiteConfigCR の変更と更新されたファイルを Git リポジトリーにコミットし、変更をプッシュしてマネージドクラスターをプロビジョニングし、IPsec 暗号化を設定します。Argo CD パイプラインが変更を検出し、マネージドクラスターのデプロイを開始します。
クラスターのプロビジョニング中に、GitOps ZTP パイプラインが、
custom-manifest/ディレクトリー内の CR を、extra-manifest/ディレクトリーに保存されているデフォルトの追加マニフェストのセットに追加します。
検証
IPsec 暗号化の検証は、「IPsec 暗号化の検証」を参照してください。
4.5.3. GitOps ZTP および SiteConfig リソースを使用したマルチノードクラスターの IPsec 暗号化の設定 リンクのコピーリンクがクリップボードにコピーされました!
GitOps ZTP と Red Hat Advanced Cluster Management (RHACM) を使用してインストールするマネージドマルチノードクラスターで、IPsec 暗号化を有効にできます。マネージドクラスターと、マネージドクラスター外の IPsec エンドポイント間のトラフィックを暗号化できます。OVN-Kubernetes クラスターネットワーク上のノード間のすべてのネットワークトラフィックが、Transport モードの IPsec で暗号化されます。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。 - マネージドクラスターに必要なインストールおよびポリシーカスタムリソース (CR) を生成するために、RHACM とハブクラスターを設定している。
- カスタムサイトの設定データを管理する Git リポジトリーを作成している。リポジトリーはハブクラスターからアクセス可能で、Argo CD アプリケーションのソースリポジトリーとして定義されている必要があります。
-
butaneユーティリティーバージョン 0.20.0 以降がインストールされている。 - IPsec エンドポイント用の PKCS#12 証明書と PEM 形式の CA 証明書がある。
- NMState Operator がインストールされている。
手順
-
ztp-site-generateコンテナーソースの最新バージョンを抽出し、カスタムサイト設定データを管理するリポジトリーとマージします。 クラスター内の IPsec を設定するために必要な値を使用して、
optional-extra-manifest/ipsec/ipsec-config-policy.yamlファイルを設定します。IPsec 設定を作成するための
ConfigurationPolicyオブジェクトCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次の証明書を
optional-extra-manifest/ipsecフォルダーに追加します。-
left_server.p12: IPsec エンドポイントの証明書バンドル ca.pem: 証明書に署名した認証局証明書ファイルは、各ホストのネットワークセキュリティーサービス (NSS) データベースで必要です。これらのファイルは、後の手順で Butane 設定の一部としてインポートされます。
-
-
カスタムサイト設定データを保持する Git リポジトリーの
optional-extra-manifest/ipsecフォルダーでシェルプロンプトを開きます。 optional-extra-manifest/ipsec/import-certs.shスクリプトを実行して、外部証明書をインポートするために必要な Butane およびMachineConfigCR を生成します。PKCS#12 証明書がパスワードで保護されている場合は、
-W引数を設定します。出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow カスタムのサイト設定データを管理するリポジトリーに
custom-manifest/フォルダーを作成し、enable-ipsec.yamlおよび99-ipsec-*YAML ファイルをディレクトリーに追加します。siteconfigディレクトリーの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow SiteConfigCR で、次の例のように、extraManifests.searchPathsフィールドにcustom-manifest/ディレクトリーを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
GitOps の
source-crsディレクトリーにipsec-config-policy.yaml設定ポリシーファイルを格納し、PolicyGeneratorCR の 1 つでそのファイルを参照します。 SiteConfigCR の変更と更新されたファイルを Git リポジトリーにコミットし、変更をプッシュしてマネージドクラスターをプロビジョニングし、IPsec 暗号化を設定します。Argo CD パイプラインが変更を検出し、マネージドクラスターのデプロイを開始します。
クラスターのプロビジョニング中に、GitOps ZTP パイプラインが、
custom-manifest/ディレクトリー内の CR を、extra-manifest/ディレクトリーに保存されているデフォルトの追加マニフェストのセットに追加します。
検証
IPsec 暗号化の検証は、「IPsec 暗号化の検証」を参照してください。
4.5.4. IPsec 暗号化の検証 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform マネージドクラスターで IPsec 暗号化が正常に適用されていることを確認できます。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。 - IPsec 暗号化が設定されている。
手順
次のコマンドを実行して、マネージドクラスターのデバッグ Pod を起動します。
oc debug node/<node_name>
$ oc debug node/<node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、IPsec ポリシーがクラスターノードに適用されていることを確認します。
ip xfrm policy
sh-5.1# ip xfrm policyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、IPsec トンネルが起動し接続されていることを確認します。
ip xfrm state
sh-5.1# ip xfrm stateCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、外部ホストサブネット内の既知の IP を ping します。たとえば、
ipsec/ipsec-endpoint-config.yamlファイルで設定したrightsubnet範囲内の IP アドレスを ping します。ping 172.16.110.8
sh-5.1# ping 172.16.110.8Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
PING 172.16.110.8 (172.16.110.8) 56(84) bytes of data. 64 bytes from 172.16.110.8: icmp_seq=1 ttl=64 time=153 ms 64 bytes from 172.16.110.8: icmp_seq=2 ttl=64 time=155 ms
PING 172.16.110.8 (172.16.110.8) 56(84) bytes of data. 64 bytes from 172.16.110.8: icmp_seq=1 ttl=64 time=153 ms 64 bytes from 172.16.110.8: icmp_seq=2 ttl=64 time=155 msCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.5.5. シングルノード OpenShift SiteConfig CR インストールリファレンス リンクのコピーリンクがクリップボードにコピーされました!
| SiteConfig CR フィールド | 説明 |
|---|---|
|
|
|
|
|
|
|
|
サイト内のすべてのクラスターのハブクラスターで使用できるイメージセットを設定します。ハブクラスターでサポートされるバージョンの一覧を表示するには、 |
|
|
クラスターのインストール前に、 重要
|
|
|
個々のクラスターをデプロイするために使用されるクラスターイメージセットを指定します。定義されている場合、サイトレベルで |
|
|
定義した
たとえば、 |
|
|
オプション: |
|
| このフィールドを設定すると、Trusted Platform Module (TPM) と Platform Configuration Register (PCR) 保護によるディスク暗号化が有効になります。詳細は、「TPM と PCR の保護によるディスク暗号化について」を参照してください。 注記
|
|
|
ディスク暗号化タイプを |
|
| ディスク暗号化用の Platform Configuration Register (PCR) 保護を設定します。 |
|
| ディスク暗号化に使用する Platform Configuration Register (PCR) のリストを設定します。PCR レジスター 1 と 7 を使用する必要があります。 |
|
|
シングルノードの導入では、単一のホストを定義します。3 ノードのデプロイメントの場合、3 台のホストを定義します。標準のデプロイメントでは、 |
|
| マネージドクラスター内のノードのカスタムロールを指定します。これらは追加のロールであり、OpenShift Container Platform コンポーネントでは使用されず、ユーザーによってのみ使用されます。カスタムロールを追加すると、そのロールの特定の設定を参照するカスタムマシン設定プールに関連付けることができます。インストール中にカスタムラベルまたはロールを追加すると、デプロイメントプロセスがより効率的になり、インストール完了後に追加の再起動が必要なくなります。 |
|
|
オプション: コメントを解除して値を |
|
| ホストへのアクセスに使用する BMC アドレス。すべてのクラスタータイプに適用されます。GitOps ZTP は、Redfish または IPMI プロトコルを使用して iPXE および仮想メディアの起動をサポートします。iPXE ブートを使用するには、RHACM 2.8 以降を使用する必要があります。BMC アドレッシングの詳細は、「関連情報」セクションを参照してください。 |
|
| ホストへのアクセスに使用する BMC アドレス。すべてのクラスタータイプに適用されます。GitOps ZTP は、Redfish または IPMI プロトコルを使用して iPXE および仮想メディアの起動をサポートします。iPXE ブートを使用するには、RHACM 2.8 以降を使用する必要があります。BMC アドレッシングの詳細は、「関連情報」セクションを参照してください。 注記 ファーエッジ通信会社のユースケースでは、GitOps ZTP では仮想メディアの使用のみがサポートされます。 |
|
|
ホスト BMC 認証情報を使用して、別途作成した |
|
|
ホストのブートモードを |
|
|
導入するデバイスを指定します。再起動後も安定した識別子が推奨されます。たとえば、 |
|
| オプション: このフィールドを使用して、永続ストレージのパーティションを割り当てます。ディスク ID とサイズを特定のハードウェアに合わせて調整します。 |
|
| ノードのネットワーク設定を行います。 |
|
| ホストの IPv6 アドレスを設定します。静的 IP アドレスを持つシングルノード OpenShift クラスターの場合、ノード固有の API と Ingress IP は同じである必要があります。 |
4.6. GitOps ZTP によるホストファームウェア設定の管理 リンクのコピーリンクがクリップボードにコピーされました!
高いパフォーマンスと最適な効率を確保するには、ホストに正しいファームウェア設定が必要です。GitOps ZTP を使用すると、マネージドクラスターのカスタムのホストファームウェア設定をデプロイできます。
ラボ内で詳細なハードウェアプロファイルを使用してホストをチューニングし、要件に合わせてホストを最適化してください。満足のいくホストのチューニングが完了したら、ホストプロファイルを抽出し、GitOps ZTP リポジトリーに保存します。その後、ホストプロファイルを使用して、GitOps ZTP でデプロイするマネージドクラスターホストのファームウェア設定を指定します。
必要なハードウェアプロファイルは、マネージドクラスターのデプロイに使用する SiteConfig カスタムリソース (CR) で指定します。GitOps ZTP パイプラインによって、ハブクラスターに適用される必要な HostFirmwareSettings (HFS) および BareMetalHost (BMH) CR が生成されます。
ホストのファームウェアプロファイルを管理する際には、次のベストプラクティスを使用してください。
- ハードウェアベンダーと協力して重要なファームウェア設定を特定する
- ハードウェアベンダーと協力して、最適なパフォーマンスと、デプロイされるホストプラットフォームとの互換性を確保するのに必要な、重要なホストファームウェア設定を特定してドキュメント化します。
- 類似するハードウェアプラットフォーム間で共通のファームウェア設定を使用する
- 可能であれば、類似するハードウェアプラットフォーム間で標準化されたホストファームウェア設定を使用して、デプロイ時の複雑さと潜在的なエラーを軽減します。
- ラボ環境でファームウェア設定をテストする
- 実稼働環境にデプロイする前に、制御されたラボ環境でホストファームウェア設定をテストし、ハードウェア、ファームウェア、ソフトウェアと設定の間に互換性があることを確認します。
- ソースコントロールでファームウェアプロファイルを管理する
- 変更を追跡し、一貫性を確保し、ベンダーとの協働を容易にするために、Git リポジトリーでホストのファームウェアプロファイルを管理します。
4.6.1. マネージドクラスターのホストファームウェアスキーマの取得 リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターのホストファームウェアスキーマを検出できます。ベアメタルホストのホストファームウェアスキーマには、Ironic API が返す情報が入力されます。この API は、ファームウェア設定タイプ、許容値、範囲、フラグなど、ホストのファームウェアインターフェイスに関する情報を返します。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
Red Hat Advanced Cluster Management (RHACM) をインストールを完了し、
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。 - RHACM によって管理されるクラスターをプロビジョニングした。
手順
マネージドクラスターのホストファームウェアスキーマを検出します。以下のコマンドを実行します。
oc get firmwareschema -n <managed_cluster_namespace> -o yaml
$ oc get firmwareschema -n <managed_cluster_namespace> -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.6.2. マネージドクラスターのホストファームウェア設定の取得 リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターのホストファームウェア設定を取得できます。これは、ホストファームウェアに変更をデプロイし、変更を監視して正常に適用されていることを確認する場合に便利です。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
Red Hat Advanced Cluster Management (RHACM) をインストールを完了し、
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。 - RHACM によって管理されるクラスターをプロビジョニングした。
手順
マネージドクラスターのホストファームウェア設定を取得します。以下のコマンドを実行します。
oc get hostfirmwaresettings -n <cluster_namespace> <node_name> -o yaml
$ oc get hostfirmwaresettings -n <cluster_namespace> <node_name> -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: クラスターの
HostFirmwareSettings(hfs) カスタムリソースのステータスを確認します。oc get hfs -n <managed_cluster_namespace> <managed_cluster_name> -o jsonpath='{.status.conditions[?(@.type=="ChangeDetected")].status}'$ oc get hfs -n <managed_cluster_namespace> <managed_cluster_name> -o jsonpath='{.status.conditions[?(@.type=="ChangeDetected")].status}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
True
TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: クラスターホストに無効なファームウェア設定がないか確認します。以下のコマンドを実行します。
oc get hfs -n <managed_cluster_namespace> <managed_cluster_name> -o jsonpath='{.status.conditions[?(@.type=="Valid")].status}'$ oc get hfs -n <managed_cluster_namespace> <managed_cluster_name> -o jsonpath='{.status.conditions[?(@.type=="Valid")].status}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
False
FalseCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.6.3. GitOps ZTP を使用してユーザー定義のファームウェアをクラスターホストにデプロイする リンクのコピーリンクがクリップボードにコピーされました!
SiteConfig カスタムリソース (CR) を設定し、クラスターホストのプロビジョニング中に適用するハードウェアプロファイルを含めることで、ユーザー定義のファームウェア設定をクラスターホストにデプロイできます。次のホストを対象に、適用するハードウェアプロファイルを設定できます。
- サイト全体のすべてのホスト
- 特定の条件を満たすクラスターホストのみ
- 個々のクラスターホスト
ホストのハードウェアプロファイルは、階層的に適用するように設定できます。クラスターレベルの設定は、サイト全体の設定をオーバーライドします。ノードレベルのプロファイルは、クラスターレベルの設定とサイト全体の設定をオーバーライドします。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
Red Hat Advanced Cluster Management (RHACM) をインストールを完了し、
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。 - RHACM によって管理されるクラスターをプロビジョニングした。
- カスタムサイトの設定データを管理する Git リポジトリーを作成している。リポジトリーはハブクラスターからアクセス可能で、Argo CD アプリケーションのソースリポジトリーとして定義されている必要があります。
手順
適用するファームウェア設定を含むホストファームウェアプロファイルを作成します。たとえば、次の YAML ファイルを作成します。
host-firmware.profile
BootMode: Uefi LogicalProc: Enabled ProcVirtualization: Enabled
BootMode: Uefi LogicalProc: Enabled ProcVirtualization: EnabledCopy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターのプロビジョニング方法を定義するために使用する
kustomization.yamlファイルを基準として、ハードウェアプロファイルの YAML ファイルを保存します。次に例を示します。example-ztp/install └── site-install ├── siteconfig-example.yaml ├── kustomization.yaml └── host-firmware.profileexample-ztp/install └── site-install ├── siteconfig-example.yaml ├── kustomization.yaml └── host-firmware.profileCopy to Clipboard Copied! Toggle word wrap Toggle overflow SiteConfigCR を編集して、クラスターに適用するファームウェアプロファイルを含めます。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- サイト全体のすべてのクラスターホストにハードウェアプロファイルを適用します。
注記可能な場合は、クラスターごとに 1 つの
SiteConfigCR を使用してください。オプション: 特定のクラスター内のホストにハードウェアプロファイルを適用するには、
clusters.biosConfigRef.filePathを適用するハードウェアプロファイルで更新します。以下に例を示します。clusters: - clusterName: "cluster-1" # ... biosConfigRef: filePath: "./host-firmware.profile"clusters: - clusterName: "cluster-1" # ... biosConfigRef: filePath: "./host-firmware.profile"1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
cluster-1クラスター内のすべてのホストに適用されます。
オプション: クラスター内の特定のホストにハードウェアプロファイルを適用するには、
clusters.nodes.biosConfigRef.filePathを、適用するハードウェアプロファイルで更新します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- ファームウェアプロファイルをクラスター内の
compute-1.example.comホストに適用します。
SiteConfigCR と関連するkustomization.yamlの変更を Git リポジトリーにコミットし、変更をプッシュします。ArgoCD パイプラインが変更を検出し、マネージドクラスターのデプロイを開始します。
注記無効なファームウェア設定が検出された場合でも、クラスターのデプロイは続行されます。GitOps ZTP を使用して修正を適用するには、修正したハードウェアプロファイルを使用してクラスターを再デプロイしてください。
検証
マネージドクラスターのホストにファームウェア設定が適用されていることを確認します。たとえば、以下のコマンドを実行します。
oc get hfs -n <managed_cluster_namespace> <managed_cluster_name> -o jsonpath='{.status.conditions[?(@.type=="Valid")].status}'$ oc get hfs -n <managed_cluster_namespace> <managed_cluster_name> -o jsonpath='{.status.conditions[?(@.type=="Valid")].status}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
True
TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.7. マネージドクラスターのインストールの進行状況の監視 リンクのコピーリンクがクリップボードにコピーされました!
ArgoCD パイプラインは、SiteConfig CR を使用してクラスター設定 CR を生成し、それをハブクラスターと同期します。ArgoCD ダッシュボードでこの同期の進捗をモニターできます。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。
手順
同期が完了すると、インストールは一般的に以下のように行われます。
Assisted Service Operator は OpenShift Container Platform をクラスターにインストールします。次のコマンドを実行して、RHACM ダッシュボードまたはコマンドラインからクラスターのインストールの進行状況を監視できます。
クラスター名をエクスポートします。
export CLUSTER=<clusterName>
$ export CLUSTER=<clusterName>Copy to Clipboard Copied! Toggle word wrap Toggle overflow マネージドクラスターの
AgentClusterInstallCR をクエリーします。oc get agentclusterinstall -n $CLUSTER $CLUSTER -o jsonpath='{.status.conditions[?(@.type=="Completed")]}' | jq$ oc get agentclusterinstall -n $CLUSTER $CLUSTER -o jsonpath='{.status.conditions[?(@.type=="Completed")]}' | jqCopy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターのインストールイベントを取得します。
curl -sk $(oc get agentclusterinstall -n $CLUSTER $CLUSTER -o jsonpath='{.status.debugInfo.eventsURL}') | jq '.[-2,-1]'$ curl -sk $(oc get agentclusterinstall -n $CLUSTER $CLUSTER -o jsonpath='{.status.debugInfo.eventsURL}') | jq '.[-2,-1]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.8. インストール CR の検証による GitOps ZTP のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
ArgoCD パイプラインは SiteConfig と、PolicyGenerator または PolicyGentemplate カスタムリソース (CR) を使用して、クラスター設定 CR と Red Hat Advanced Cluster Management (RHACM) ポリシーを生成します。以下の手順に従って、このプロセス時に発生する可能性のある問題のトラブルシューティングを行います。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。
手順
インストール CR が作成されたことは、以下のコマンドで確認することができます。
oc get AgentClusterInstall -n <cluster_name>
$ oc get AgentClusterInstall -n <cluster_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow オブジェクトが返されない場合は、以下の手順を使用して ArgoCD パイプラインフローを
SiteConfigファイルからインストール CR にトラブルシューティングします。ハブクラスターで
SiteConfigCR を使用してManagedClusterCR が生成されたことを確認します。oc get managedcluster
$ oc get managedclusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow ManagedClusterが見つからない場合は、clustersアプリケーションが Git リポジトリーからハブクラスターへのファイルの同期に失敗したかどうかを確認します。oc get applications.argoproj.io -n openshift-gitops clusters -o yaml
$ oc get applications.argoproj.io -n openshift-gitops clusters -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow マネージドクラスターのエラーログを識別するには、
status.operationState.syncResult.resourcesフィールドを調べます。たとえば、SiteConfigCR のextraManifestPathに無効な値が割り当てられると、次のようなエラーが生成されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow より詳細な
SiteConfigエラーを表示するには、次の手順を実行します。- Argo CD ダッシュボードで、Argo CD が同期しようとしている SiteConfig リソースをクリックします。
DESIRED MANIFEST タブをチェックして、
siteConfigErrorフィールドを見つけます。siteConfigError: >- Error: could not build the entire SiteConfig defined by /tmp/kust-plugin-config-1081291903: stat sno-extra-manifest: no such file or directory
siteConfigError: >- Error: could not build the entire SiteConfig defined by /tmp/kust-plugin-config-1081291903: stat sno-extra-manifest: no such file or directoryCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Status.Syncフィールドを確認します。ログエラーがある場合、Status.SyncフィールドはUnknownエラーを示している可能性があります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.9. SuperMicro サーバー上で起動する GitOps ZTP 仮想メディアのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
SuperMicro X11 サーバーは、イメージが https プロトコルを使用して提供される場合、仮想メディアのインストールをサポートしません。そのため、この環境のシングルノード OpenShift デプロイメントはターゲットノードで起動できません。この問題を回避するには、ハブクラスターにログインし、Provisioning リソースで Transport Layer Security (TLS) を無効にします。これにより、イメージアドレスで https スキームを使用している場合でも、イメージは TLS で提供されなくなります。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。
手順
次のコマンドを実行して、
Provisioningリソースの TLS を無効にします。oc patch provisioning provisioning-configuration --type merge -p '{"spec":{"disableVirtualMediaTLS": true}}'$ oc patch provisioning provisioning-configuration --type merge -p '{"spec":{"disableVirtualMediaTLS": true}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow - シングルノード OpenShift クラスターをデプロイする手順を続行します。
4.10. GitOps ZTP パイプラインからのマネージドクラスターサイトの削除 リンクのコピーリンクがクリップボードにコピーされました!
GitOps Zero Touch Provisioning (ZTP) パイプラインから、マネージドサイトと、関連するインストールおよび設定ポリシー CR を削除できます。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。
手順
-
kustomization.yamlファイルから、関連するSiteConfigと、PolicyGeneratorまたはPolicyGentemplateファイルを削除して、サイトと関連する CR を削除します。 次の
syncOptionsフィールドをSiteConfigアプリケーションに追加します。kind: Application spec: syncPolicy: syncOptions: - PrunePropagationPolicy=backgroundkind: Application spec: syncPolicy: syncOptions: - PrunePropagationPolicy=backgroundCopy to Clipboard Copied! Toggle word wrap Toggle overflow GitOps ZTP パイプラインを再度実行すると、生成された CR は削除されます。
-
オプション: サイトを完全に削除する場合は、
SiteConfigと、サイト固有のPolicyGeneratorまたはPolicyGentemplateファイルも Git リポジトリーから削除する必要があります。 -
オプション: サイトを再デプロイする場合など、一時的にサイトを削除する場合は、
SiteConfigとサイト固有のPolicyGeneratorまたはPolicyGentemplateCR を Git リポジトリーに残しておくことができます。
4.11. GitOps ZTP パイプラインからの古いコンテンツの削除 リンクのコピーリンクがクリップボードにコピーされました!
PolicyGenerator または PolicyGentemplate 設定の変更によってポリシーが古くなった場合 (ポリシーの名前を変更する場合など) は、次の手順を使用して古くなったポリシーを削除します。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。
手順
-
影響を受ける
PolicyGeneratorまたはPolicyGentemplateファイルを Git リポジトリーから削除し、コミットしてリモートリポジトリーにプッシュします。 - アプリケーションを介して変更が同期され、影響を受けるポリシーがハブクラスターから削除されるのを待ちます。
更新された
PolicyGeneratorまたはPolicyGentemplateファイルを Git リポジトリーに再び追加し、コミットしてリモートリポジトリーにプッシュします。注記Git リポジトリーから GitOps Zero Touch Provisioning (ZTP) ポリシーを削除し、その結果としてハブクラスターからもポリシーが削除されても、マネージドクラスターの設定には影響しません。ポリシーとそのポリシーによって管理される CR は、マネージドクラスターに残ります。
オプション: 別の方法として、
PolicyGeneratorまたはPolicyGentemplateCR に変更を加えたことでポリシーが古くなった場合は、これらのポリシーをハブクラスターから手動で削除できます。ポリシーの削除は、RHACM コンソールから Governance タブを使用するか、以下のコマンドを使用して行うことができます。oc delete policy -n <namespace> <policy_name>
$ oc delete policy -n <namespace> <policy_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.12. GitOps ZTP パイプラインの破棄 リンクのコピーリンクがクリップボードにコピーされました!
ArgoCD パイプラインと生成されたすべての GitOps Zero Touch Provisioning (ZTP) アーティファクトを削除できます。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。
手順
- ハブクラスターの Red Hat Advanced Cluster Management (RHACM) からすべてのクラスターを切り離します。
次のコマンドを使用して、
deploymentディレクトリーのkustomization.yamlファイルを削除します。oc delete -k out/argocd/deployment
$ oc delete -k out/argocd/deploymentCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更をコミットして、サイトリポジトリーにプッシュします。
第5章 GitOps ZTP を使用したシングルノード OpenShift クラスターの手動インストール リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management (RHACM) とアシストサービスを使用して、マネージドシングルノード OpenShift クラスターをデプロイできます。
複数のマネージドクラスターを作成する場合は、ZTP を使用したファーエッジサイトのデプロイメント で説明されている SiteConfig メソッドを使用します。
ターゲットのベアメタルホストは、vDU アプリケーションワークロードの推奨クラスター設定 に記載されているネットワーク、ファームウェア、およびハードウェアの要件を満たす必要があります。
5.1. GitOps ZTP インストール CR と設定 CR の手動生成 リンクのコピーリンクがクリップボードにコピーされました!
ztp-site-generate コンテナーの generator エントリーポイントを使用して、SiteConfig CR および PolicyGenerator CR に基づいたクラスターのサイトのインストールと設定のカスタムリソース (CR) を生成します。
SiteConfig v1 は、OpenShift Container Platform バージョン 4.18 以降では非推奨になります。ClusterInstance カスタムリソースを使用する SiteConfig Operator を通じて、同等の改良された機能が利用できるようになりました。詳細は、Procedure to transition from SiteConfig CRs to the ClusterInstance API を参照してください。
SiteConfig Operator の詳細は、SiteConfig を参照してください。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。
手順
次のコマンドを実行して、出力フォルダーを作成します。
mkdir -p ./out
$ mkdir -p ./outCopy to Clipboard Copied! Toggle word wrap Toggle overflow ztp-site-generateコンテナーイメージからargocdディレクトリーをエクスポートします。podman run --log-driver=none --rm registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.20 extract /home/ztp --tar | tar x -C ./out
$ podman run --log-driver=none --rm registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.20 extract /home/ztp --tar | tar x -C ./outCopy to Clipboard Copied! Toggle word wrap Toggle overflow ./outディレクトリーには、out/argocd/example/フォルダー内の参照PolicyGeneratorCR およびSiteConfigCR があります。出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow サイトインストール CR の出力フォルダーを作成します。
mkdir -p ./site-install
$ mkdir -p ./site-installCopy to Clipboard Copied! Toggle word wrap Toggle overflow インストールするクラスタータイプのサンプル
SiteConfigCR を変更します。example-sno.yamlをsite-1-sno.yamlにコピーし、インストールするサイトとベアメタルホストの詳細に一致するように CR を変更します。次に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ztp-site-generateコンテナーのout/extra-manifestディレクトリーから参照 CR 設定ファイルを抽出したら、extraManifests.searchPathsを使用して、それらのファイルを含む git ディレクトリーへのパスを含めることができます。これにより、GitOps ZTP パイプラインはクラスターのインストール中にこれらの CR ファイルを適用できるようになります。searchPathsディレクトリーを設定すると、GitOps ZTP パイプラインは、サイトのインストール中にztp-site-generateコンテナーからマニフェストを取得しません。次のコマンドを実行して、変更された
SiteConfigCRsite-1-sno.yamlを処理し、Day 0 インストール CR を生成します。podman run -it --rm -v `pwd`/out/argocd/example/siteconfig:/resources:Z -v `pwd`/site-install:/output:Z,U registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.20 generator install site-1-sno.yaml /output
$ podman run -it --rm -v `pwd`/out/argocd/example/siteconfig:/resources:Z -v `pwd`/site-install:/output:Z,U registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.20 generator install site-1-sno.yaml /outputCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション:
-Eオプションを使用して参照SiteConfigCR を処理することにより、特定のクラスタータイプの Day 0MachineConfigインストール CR のみを生成します。たとえば、以下のコマンドを実行します。MachineConfigCR の出力フォルダーを作成します。mkdir -p ./site-machineconfig
$ mkdir -p ./site-machineconfigCopy to Clipboard Copied! Toggle word wrap Toggle overflow MachineConfigインストール CR を生成します。podman run -it --rm -v `pwd`/out/argocd/example/siteconfig:/resources:Z -v `pwd`/site-machineconfig:/output:Z,U registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.20 generator install -E site-1-sno.yaml /output
$ podman run -it --rm -v `pwd`/out/argocd/example/siteconfig:/resources:Z -v `pwd`/site-machineconfig:/output:Z,U registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.20 generator install -E site-1-sno.yaml /outputCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
site-machineconfig └── site-1-sno ├── site-1-sno_machineconfig_02-master-workload-partitioning.yaml ├── site-1-sno_machineconfig_predefined-extra-manifests-master.yaml └── site-1-sno_machineconfig_predefined-extra-manifests-worker.yamlsite-machineconfig └── site-1-sno ├── site-1-sno_machineconfig_02-master-workload-partitioning.yaml ├── site-1-sno_machineconfig_predefined-extra-manifests-master.yaml └── site-1-sno_machineconfig_predefined-extra-manifests-worker.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
前の手順の参照
PolicyGeneratorCR を使用して、Day 2 設定 CR を生成してエクスポートします。以下のコマンドを実行します。Day 2 CR の出力フォルダーを作成します。
mkdir -p ./ref
$ mkdir -p ./refCopy to Clipboard Copied! Toggle word wrap Toggle overflow Day 2 設定 CR を生成してエクスポートします。
podman run -it --rm -v `pwd`/out/argocd/example/acmpolicygenerator:/resources:Z -v `pwd`/ref:/output:Z,U registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.20 generator config -N . /output
$ podman run -it --rm -v `pwd`/out/argocd/example/acmpolicygenerator:/resources:Z -v `pwd`/ref:/output:Z,U registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.20 generator config -N . /outputCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、シングルノード OpenShift、3 ノードクラスター、および標準クラスター用のサンプルグループおよびサイト固有の
PolicyGeneratorCR を./refフォルダーに生成します。出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- クラスターのインストールに使用する CR のベースとして、生成された CR を使用します。「単一のマネージドクラスターのインストール」で説明されているように、インストール CR をハブクラスターに適用します。設定 CR は、クラスターのインストールが完了した後にクラスターに適用できます。
検証
ノードのデプロイ後にカスタムのロールとラベルが適用されていることを確認します。
oc describe node example-node.example.com
$ oc describe node example-node.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow
出力例
- 1
- カスタムラベルがノードに適用されます。
5.2. マネージドベアメタルホストシークレットの作成 リンクのコピーリンクがクリップボードにコピーされました!
マネージドベアメタルホストに必要な Secret カスタムリソース (CR) をハブクラスターに追加します。GitOps Zero Touch Provisioning (ZTP) パイプラインが Baseboard Management Controller (BMC) にアクセスするためのシークレットと、アシストインストーラーサービスがレジストリーからクラスターインストールイメージを取得するためのシークレットが必要です。
シークレットは、SiteConfig CR から名前で参照されます。namespace は SiteConfig namespace と一致する必要があります。
手順
ホスト Baseboard Management Controller (BMC) の認証情報と、OpenShift およびすべてのアドオンクラスター Operator のインストールに必要なプルシークレットを含む YAML シークレットファイルを作成します。
-
example-sno-secret.yamlへの相対パスを、クラスターのインストールに使用するkustomization.yamlファイルに追加します。
5.3. GitOps ZTP を使用した手動インストール用の Discovery ISO カーネル引数の設定 リンクのコピーリンクがクリップボードにコピーされました!
GitOps Zero Touch Provisioning (ZTP) ワークフローは、マネージドベアメタルホストでの OpenShift Container Platform インストールプロセスの一部として Discovery ISO を使用します。InfraEnv リソースを編集して、Discovery ISO のカーネル引数を指定できます。これは、特定の環境要件を持つクラスターのインストールに役立ちます。たとえば、Discovery ISO の rd.net.timeout.carrier カーネル引数を設定して、クラスターの静的ネットワーク設定を容易にしたり、インストール中に root ファイルシステムをダウンロードする前に DHCP アドレスを受信したりできます。
OpenShift Container Platform 4.20 では、カーネル引数のみを追加できます。カーネル引数を置き換えたり削除したりすることはできません。
前提条件
- OpenShift CLI (oc) がインストールされている。
- cluster-admin 権限を持つユーザーとしてハブクラスターにログインしている。
- インストールと設定カスタムリソース (CR) を手動で生成している。
手順
-
InfraEnvCR のspec.kernelArguments仕様を編集して、カーネル引数を設定します。
SiteConfig CR は、Day-0 インストール CR の一部として InfraEnv リソースを生成します。
検証
カーネル引数が適用されていることを確認するには、Discovery イメージが OpenShift Container Platform をインストールする準備ができていることを確認した後、インストールプロセスを開始する前にターゲットホストに SSH 接続します。その時点で、/proc/cmdline ファイルで Discovery ISO のカーネル引数を表示できます。
ターゲットホストとの SSH セッションを開始します。
ssh -i /path/to/privatekey core@<host_name>
$ ssh -i /path/to/privatekey core@<host_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを使用して、システムのカーネル引数を表示します。
cat /proc/cmdline
$ cat /proc/cmdlineCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4. 単一のマネージドクラスターのインストール リンクのコピーリンクがクリップボードにコピーされました!
アシストサービスと Red Hat Advanced Cluster Management (RHACM) を使用して、単一のマネージドクラスターを手動でデプロイできます。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。 -
ベースボード管理コントローラー (BMC)
SecretとイメージプルシークレットSecretカスタムリソース (CR) を作成しました。詳細は、「管理されたベアメタルホストシークレットの作成」を参照してください。 - ターゲットのベアメタルホストが、マネージドクラスターのネットワークとハードウェアの要件を満たしている。
手順
デプロイする特定のクラスターバージョンごとに
ClusterImageSetを作成します (例:clusterImageSet-4.20.yaml)。ClusterImageSetのフォーマットは以下のとおりです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow clusterImageSetCR を適用します。oc apply -f clusterImageSet-4.20.yaml
$ oc apply -f clusterImageSet-4.20.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow cluster-namespace.yamlファイルにNamespaceCR を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して
NamespaceCR を適用します。oc apply -f cluster-namespace.yaml
$ oc apply -f cluster-namespace.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ztp-site-generateコンテナーから抽出し、要件を満たすようにカスタマイズした、生成された day-0 CR を適用します。oc apply -R ./site-install/site-sno-1
$ oc apply -R ./site-install/site-sno-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.5. マネージドクラスターのインストールステータスの監視 リンクのコピーリンクがクリップボードにコピーされました!
クラスターのステータスをチェックして、クラスターのプロビジョニングが正常に行われたことを確認します。
前提条件
-
すべてのカスタムリソースが設定およびプロビジョニングされ、プロビジョニングされ、マネージドクラスターのハブで
Agentカスタムリソースが作成されます。
手順
マネージドクラスターのステータスを確認します。
oc get managedcluster
$ oc get managedclusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow Trueはマネージドクラスターの準備が整っていることを示します。エージェントのステータスを確認します。
oc get agent -n <cluster_name>
$ oc get agent -n <cluster_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow describeコマンドを使用して、エージェントの条件に関する詳細な説明を指定します。認識できるステータスには、BackendError、InputError、ValidationsFailing、InstallationFailed、およびAgentIsConnectedが含まれます。これらのステータスは、AgentおよびAgentClusterInstallカスタムリソースに関連します。oc describe agent -n <cluster_name>
$ oc describe agent -n <cluster_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターのプロビジョニングのステータスを確認します。
oc get agentclusterinstall -n <cluster_name>
$ oc get agentclusterinstall -n <cluster_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow describeコマンドを使用して、クラスターのプロビジョニングステータスの詳細な説明を指定します。oc describe agentclusterinstall -n <cluster_name>
$ oc describe agentclusterinstall -n <cluster_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow マネージドクラスターのアドオンサービスのステータスを確認します。
oc get managedclusteraddon -n <cluster_name>
$ oc get managedclusteraddon -n <cluster_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow マネージドクラスターの
kubeconfigファイルの認証情報を取得します。oc get secret -n <cluster_name> <cluster_name>-admin-kubeconfig -o jsonpath={.data.kubeconfig} | base64 -d > <directory>/<cluster_name>-kubeconfig$ oc get secret -n <cluster_name> <cluster_name>-admin-kubeconfig -o jsonpath={.data.kubeconfig} | base64 -d > <directory>/<cluster_name>-kubeconfigCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.6. マネージドクラスターのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
以下の手順を使用して、マネージドクラスターで発生する可能性のあるインストール問題を診断します。
手順
マネージドクラスターのステータスを確認します。
oc get managedcluster
$ oc get managedclusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE SNO-cluster true True True 2d19h
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE SNO-cluster true True True 2d19hCopy to Clipboard Copied! Toggle word wrap Toggle overflow AVAILABLE列のステータスがTrueの場合、マネージドクラスターはハブによって管理されます。AVAILABLE列のステータスがUnknownの場合、マネージドクラスターはハブによって管理されていません。その他の情報を取得するには、以下の手順を使用します。AgentClusterInstallインストールのステータスを確認します。oc get clusterdeployment -n <cluster_name>
$ oc get clusterdeployment -n <cluster_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME PLATFORM REGION CLUSTERTYPE INSTALLED INFRAID VERSION POWERSTATE AGE Sno0026 agent-baremetal false Initialized 2d14h
NAME PLATFORM REGION CLUSTERTYPE INSTALLED INFRAID VERSION POWERSTATE AGE Sno0026 agent-baremetal false Initialized 2d14hCopy to Clipboard Copied! Toggle word wrap Toggle overflow INSTALLED列のステータスがfalseの場合、インストールは失敗していました。インストールが失敗した場合は、以下のコマンドを実行して
AgentClusterInstallリソースのステータスを確認します。oc describe agentclusterinstall -n <cluster_name> <cluster_name>
$ oc describe agentclusterinstall -n <cluster_name> <cluster_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow エラーを解決し、クラスターをリセットします。
クラスターのマネージドクラスターリソースを削除します。
oc delete managedcluster <cluster_name>
$ oc delete managedcluster <cluster_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターの namespace を削除します。
oc delete namespace <cluster_name>
$ oc delete namespace <cluster_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow これにより、このクラスター用に作成された namespace スコープのカスタムリソースがすべて削除されます。続行する前に、
ManagedClusterCR の削除が完了するのを待つ必要があります。- マネージドクラスターのカスタムリソースを再作成します。
5.7. RHACM によって生成されたクラスターインストール CR リファレンス リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management (RHACM) は、サイトごとに SiteConfig CR を使用して生成する特定のインストールカスタムリソース (CR) のセットを使用して、シングルノードクラスター、3 ノードクラスター、および標準クラスターに OpenShift Container Platform をデプロイすることをサポートします。
すべてのマネージドクラスターには独自の namespace があり、ManagedCluster と ClusterImageSet を除くすべてのインストール CR はその namespace の下にあります。ManagedCluster と ClusterImageSet は、ネームスペーススコープではなく、クラスタースコープです。namespace および CR 名はクラスター名に一致します。
次の表に、設定した SiteConfig CR を使用してクラスターをインストールするときに RHACM アシストサービスによって自動的に適用されるインストール CR を示します。
| CR | 説明 | 使用法 |
|---|---|---|
|
| ターゲットのベアメタルホストの Baseboard Management Controller (BMC) の接続情報が含まれています。 | Redfish プロトコルを使用して、BMC へのアクセスを提供し、ターゲットサーバーで検出イメージをロードおよび開始します。 |
|
| ターゲットのベアメタルホストに OpenShift Container Platform をインストールするための情報が含まれています。 |
|
|
|
ネットワークやコントロールプレーンノードの数など、マネージドクラスター設定の詳細を指定します。インストールが完了すると、クラスター | マネージドクラスターの設定情報を指定し、クラスターのインストール時にステータスを指定します。 |
|
|
使用する |
マネージドクラスターの Discovery ISO を生成するために |
|
|
| マネージドクラスターの Kube API サーバーの静的 IP アドレスを設定します。 |
|
| ターゲットのベアメタルホストに関するハードウェア情報が含まれています。 | ターゲットマシンの検出イメージの起動時にハブ上に自動的に作成されます。 |
|
| クラスターがハブで管理されている場合は、インポートして知られている必要があります。この Kubernetes オブジェクトはそのインターフェイスを提供します。 | ハブは、このリソースを使用してマネージドクラスターのステータスを管理し、表示します。 |
|
|
|
|
|
|
ハブ上にある |
リソースを |
|
|
|
|
|
| リポジトリーおよびイメージ名などの OpenShift Container Platform イメージ情報が含まれます。 | OpenShift Container Platform イメージを提供するためにリソースに渡されます。 |
第6章 SiteConfig CR から ClusterInstance CR への移行 リンクのコピーリンクがクリップボードにコピーされました!
シングルノードの OpenShift クラスターを SiteConfig カスタムリソース (CR) から ClusterInstance CR に段階的に移行できます。移行中は、既存のパイプラインと新しいパイプラインが並行して実行されるため、制御された段階的な方法で一度に 1 つ以上のクラスターを移行できます。
-
SiteConfigCR は OpenShift Container Platform バージョン 4.18 から非推奨となり、今後のバージョンでは削除される予定です。 -
ClusterInstanceCR は、Red Hat Advanced Cluster Management (RHACM) バージョン 2.12 以降で利用できます。
6.1. SiteConfig CR から ClusterInstance CR への移行の概要 リンクのコピーリンクがクリップボードにコピーされました!
ClusterInstance CR は、クラスターを定義するためのより統一された汎用的な方法を提供します。これは、GitOps ZTP ワークフローでクラスターデプロイメントを管理するための推奨される方法です。ClusterInstance カスタムリソース (CR) を管理する SiteConfig Operator は、Red Hat Advanced Cluster Management (RHACM) 内のアドオンとして出荷される開発が完了したコントローラーです。
SiteConfig Operator は ClusterInstance オブジェクトの更新のみをリコンサイルします。コントローラーは、非推奨の SiteConfig オブジェクトを監視または管理しません。
SiteConfig CR から ClusterInstance CR への移行により、スケーラビリティーの強化や、クラスターパラメーターとクラスターデプロイメント方法の明確な分離など、いくつかの点が改善されました。これらの改善点と SiteConfig Operator の詳細は、SiteConfig を参照してください。
移行プロセスには、大まかに次のステップが含まれます。
- リポジトリーに新しい Git フォルダー構造を準備し、対応する Argo CD プロジェクトとアプリケーションを作成して、並列パイプラインを設定します。
クラスターを段階的に移行するには、まず、古いパイプラインから関連する
SiteConfigCR を削除します。次に、対応するClusterInstanceCR を新しいパイプラインに追加します。注記初期 Argo CD アプリケーションで
prune=false同期ポリシーを使用すると、このアプリケーションからターゲットクラスターを削除した後でも、このパイプラインによって管理されるリソースはそのまま残ります。このアプローチにより、既存のクラスターリソースは移行プロセス中も確実に動作を継続します。-
必要に応じて、
siteconfig-converterツールを使用して、既存のSiteConfigCR をClusterInstanceCR に自動的に変換します。
-
必要に応じて、
- クラスターの移行が完了したら、元の Argo プロジェクトとアプリケーションを削除し、関連するリソースをクリーンアップします。
次のセクションでは、サンプルクラスターである sno1 を、SiteConfig CR から ClusterInstance CR に移行する方法について説明します。
この移行例の基礎として、次の Git リポジトリーフォルダー構造が使用されます。
6.2. ClusterInstance CR 用の並列 Argo CD パイプラインの準備 リンクのコピーリンクがクリップボードにコピーされました!
新しい ClusterInstance CR と関連するクラスターリソースを管理するための並列 Argo CD プロジェクトとアプリケーションを作成します。
前提条件
-
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。 - GitOps ZTP 環境を適切に設定した。
- Assisted Installer サービスを適切にインストールおよび設定した。
- シングルノードの OpenShift クラスター設定が含まれる Git リポジトリーにアクセスできる。
手順
並列 Argo プロジェクトとアプリケーション用の YAML ファイルを作成します。
AppProjectリソースを定義する YAML ファイルを作成します。ztp-app-project-v2.yamlのサンプルファイルCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
ClusterInstanceCR は、SiteConfigCR の代わりにsiteconfig.open-cluster-management.ioオブジェクトを管理します。
Applicationリソースを定義する YAML ファイルを作成します。clusters-v2.yamlのサンプルファイルCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記デフォルトで、
auto-syncが有効になっています。ただし、同期は、クラスターの設定データを新しい設定フォルダー (この例では、site-configs-v2/フォルダー) にプッシュした場合にのみ実行されます。
ClusterInstanceCR と関連リソースが格納されたルートフォルダーを Git リポジトリーに作成してコミットします。以下はその例です。mkdir site-configs-v2 touch site-configs-v2/.gitkeep git commit -s -m “Creates cluster-instance folder” git push origin main
$ mkdir site-configs-v2 $ touch site-configs-v2/.gitkeep $ git commit -s -m “Creates cluster-instance folder” $ git push origin mainCopy to Clipboard Copied! Toggle word wrap Toggle overflow .gitkeepファイルは、空のフォルダーが Git によって追跡されるようにするためのプレースホルダーです。注記パイプラインのセットアップ中に、ルート
site-configs-v2/フォルダーの作成およびコミットのみ行う必要があります。クラスターの移行手順中に、完全なsite-configs/フォルダー構造をsite-configs-v2/にミラーリングします。
次のコマンドを実行して、
AppProjectおよびApplicationリソースをハブクラスターに適用します。oc apply -f ztp-app-project-v2.yaml oc apply -f clusters-v2.yaml
$ oc apply -f ztp-app-project-v2.yaml $ oc apply -f clusters-v2.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、元の Argo CD プロジェクト (
ztp-app-project) と新しい Argo CD プロジェクト (ztp-app-project-v2) がハブクラスターに存在することを確認します。oc get appprojects -n openshift-gitops
$ oc get appprojects -n openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME AGE default 46h policy-app-project 42h ztp-app-project 18h ztp-app-project-v2 14s
NAME AGE default 46h policy-app-project 42h ztp-app-project 18h ztp-app-project-v2 14sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、元の Argo CD アプリケーション (
clusters) と新しい Argo CD アプリケーション (clusters-v2) がハブクラスター上に存在することを確認します。oc get application.argo -n openshift-gitops
$ oc get application.argo -n openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME SYNC STATUS HEALTH STATUS clusters Synced Healthy clusters-v2 Synced Healthy policies Synced Healthy
NAME SYNC STATUS HEALTH STATUS clusters Synced Healthy clusters-v2 Synced Healthy policies Synced HealthyCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.3. active-ocp-version ClusterImageSet の移行 リンクのコピーリンクがクリップボードにコピーされました!
active-ocp-version ClusterImageSet は、GitOps ZTP デプロイメントで使用される GitOps Zero Touch Provisioning (ZTP) 規則です。クラスターのプロビジョニング時に使用する、OpenShift Container Platform リリースイメージの単一の一元的な定義を提供します。デフォルトでは、このリソースは site-config/resources/ フォルダーからハブクラスターに同期されます。
デプロイメントで active-ocp-version ClusterImageSet CR を使用する場合は、それを ClusterInstance CR が格納された新しいディレクトリーの resources/ フォルダーに移行する必要があります。そうすることで、両方の Argo CD アプリケーションが同じリソースを管理できなくなり、同期の競合を防止できます。
前提条件
-
ClusterInstanceCR 用の並列 Argo CD パイプラインを作成する手順を完了した。 -
Argo CD アプリケーションは、新しい
ClusterInstanceCR と関連するクラスターリソースを格納する予定の Git リポジトリー内のフォルダーを指します。この例では、site-configs-v2/Argo CD アプリケーションはsite-configs-v2/フォルダーを指します。 -
Git リポジトリーでは、
resources/フォルダーにactive-ocp-version.yamlマニフェストがあります。
手順
site-configs/ディレクトリーのresources/フォルダーを新しいsite-configs-v2/ディレクトリーにコピーします。cp -r site-configs/resources site-configs-v2/
$ cp -r site-configs/resources site-configs-v2/Copy to Clipboard Copied! Toggle word wrap Toggle overflow site-configs/kustomization.yamlファイルからresources/フォルダーへの参照を削除します。これにより、古いclustersArgo CD アプリケーションがactive-ocp-versionリソースを管理しなくなります。更新された
site-configs/resources/kustomization.yamlファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow site-configs-v2/kustomization.yamlファイルにresources/フォルダーを追加します。このステップでは、ClusterImageSetの所有権を新しいclusters-v2アプリケーションに譲渡します。更新された
site-configs-v2/kustomization.yamlファイルの例apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - resources/
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - resources/Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更をコミットして Git リポジトリーにプッシュします。
検証
-
Argo CD で、
clusters-v2アプリケーションの状態が Healthy および Synced であることを確認します。 clusterArgo アプリケーション内のactive-ocp-versionClusterImageSetリソースが同期されていない場合は、次のコマンドを実行して Argo CD アプリケーションラベルを削除できます。oc label clusterimageset active-ocp-version app.kubernetes.io/instance-
$ oc label clusterimageset active-ocp-version app.kubernetes.io/instance-Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
clusterimageset.hive.openshift.io/active-ocp-version unlabeled
clusterimageset.hive.openshift.io/active-ocp-version unlabeledCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.4. SiteConfig CR から ClusterInstance CR への移行の実行 リンクのコピーリンクがクリップボードにコピーされました!
古いパイプラインから SiteConfig CR を削除し、対応する ClusterInstance CR を新しいパイプラインに追加することで、SiteConfig CR を使用するシングルノードの OpenShift クラスターを ClusterInstance CR を使用するように移行します。
前提条件
-
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。 -
Argo CD プロジェクトとアプリケーションが含まれる並列 Argo CD パイプラインを設定した。これは、
ClusterInstanceCR を使用してクラスターを管理します。 -
元の
SiteConfigCR パイプラインを管理する Argo CD アプリケーションは、同期ポリシーprune=falseで設定されています。この設定により、このアプリケーションからターゲットクラスターを削除した後もリソースがそのまま残ります。 - シングルノードの OpenShift クラスター設定が含まれる Git リポジトリーにアクセスできる。
- ハブクラスターに Red Hat Advanced Cluster Management (RHACM) バージョン 2.12 以降がインストールされている。
- SiteConfig Operator がハブクラスターにインストールされ、実行されている。
- Podman がインストール済みで、registry.redhat.io コンテナーイメージレジストリーにアクセスできます。
手順
site-configsフォルダー構造を、ClusterInstanceCR を格納する予定の新しいsite-configs-v2ディレクトリーにミラーリングします。以下はその例です。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Git 内の関連ファイル内のリソースをコメントアウトして、元の Argo CD アプリケーションからターゲットクラスターを削除します。
以下の例のように、
site-configs/kustomization.yamlファイルからターゲットクラスターをコメントアウトします。cat site-configs/kustomization.yaml
$ cat site-configs/kustomization.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新された
site-configs/kustomization.yamlファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow site-configs/pre-reqs/kustomization.yamlファイルからターゲットクラスターをコメントアウトします。これにより、移行が必要なsite-configs/pre-reqs/sno1フォルダーが削除されます。このフォルダーには、イメージレジストリープルシークレット、ベースボード管理コントローラーの認証情報などのリソースが含まれます。以下はその例です。cat site-configs/pre-reqs/kustomization.yaml
$ cat site-configs/pre-reqs/kustomization.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新された
site-configs/pre-reqs/kustomization.yamlファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
変更を Git リポジトリーにコミットします。
注記変更をコミットした後、元の Argo CD アプリケーションは引き続きターゲットクラスターのリソースのステータスを監視しようとするため、同期ステータスとして
OutOfSyncを報告します。ただし、同期ポリシーがprune=falseに設定されているため、Argo CD アプリケーションはリソースを削除しません。元の Argo CD アプリケーションがクラスターリソースを管理しないようにするには、次のコマンドを実行して、リソースから Argo CD アプリケーションラベルを削除します。
for cr in bmh,hfs,clusterdeployment,agentclusterinstall,infraenv,nmstateconfig,configmap,klusterletaddonconfig,secrets; do oc label $cr app.kubernetes.io/instance- --all -n sno1; done && oc label ns sno1 app.kubernetes.io/instance- && oc label managedclusters sno1 app.kubernetes.io/instance-
$ for cr in bmh,hfs,clusterdeployment,agentclusterinstall,infraenv,nmstateconfig,configmap,klusterletaddonconfig,secrets; do oc label $cr app.kubernetes.io/instance- --all -n sno1; done && oc label ns sno1 app.kubernetes.io/instance- && oc label managedclusters sno1 app.kubernetes.io/instance-Copy to Clipboard Copied! Toggle word wrap Toggle overflow Argo CD アプリケーションラベルは
sno1namespace 内のすべてのリソースから削除され、同期ステータスはSyncedに戻ります。ztp-site-generateコンテナーイメージに含まれるsiteconfig-converterツールを使用して、ターゲットクラスターのClusterInstanceCR を作成します。注記siteconfig-converter ツールは、次の非推奨フィールドを使用する、
SiteConfigCR 内のAgentClusterInstallリソースの以前のバージョンを変換できません。-
apiVIP -
ingressVIP -
manifestsConfigMapRef
この問題を解決するには、次のいずれかのオプションを実行できます。
- これらのフィールドが含まれるカスタムクラスターテンプレートを作成します。カスタムテンプレートの作成の詳細は、SiteConfig Operator を使用してカスタムテンプレートを作成する を参照してください。
-
AgentClusterInstallリソースの作成を抑制するには、それをClusterInstanceCR のsuppressedManifestsリストに追加するか、siteconfig-converterツールで-sフラグを使用します。クラスターを再インストールする場合は、suppressedManifestsリストからリソースを削除する必要があります。
次のコマンドを実行して、
ztp-site-generateコンテナーイメージをプルします。podman pull registry.redhat.io/openshift4/ztp-site-generate-rhel8:4.20
podman pull registry.redhat.io/openshift4/ztp-site-generate-rhel8:4.20Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、コンテナーを通じて
siteconfig-converterツールを対話的に実行します。podman run -v "${PWD}":/resources:Z,U -it registry.redhat.io/openshift4/ztp-site-generate-rhel8:{product-version} siteconfig-converter -d /resources/<output_folder> /resources/<path_to_siteconfig_resource>$ podman run -v "${PWD}":/resources:Z,U -it registry.redhat.io/openshift4/ztp-site-generate-rhel8:{product-version} siteconfig-converter -d /resources/<output_folder> /resources/<path_to_siteconfig_resource>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<output_folder>は、生成されたファイルの出力ディレクトリーに置き換えます。 <path_to_siteconfig_resource>は、ターゲットのSiteConfigCR ファイルへのパスに置き換えます。出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ClusterInstanceCR では、追加のマニフェストをConfigMapリソースで定義する必要があります。この要件を満たすために、
siteconfig-converterツールはkustomization.yamlスニペットを生成します。生成されたスニペットは、Kustomize のconfigMapGeneratorを使用して、マニフェストファイルを必要なConfigMapリソースに自動的にパッケージ化します。ConfigMapリソースが他のクラスターリソースと併せて作成および管理されるようにするには、このスニペットを元のkustomization.yamlファイルにマージする必要があります。
-
-
新しいパイプラインの
Kustomizationファイルでターゲットクラスターを参照することで、新しい Argo CD アプリケーションがターゲットクラスターを管理するように設定します。以下はその例です。cat site-configs-v2/kustomization.yaml
$ cat site-configs-v2/kustomization.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新された
site-configs-v2/kustomization.yamlファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat site-configs-v2/pre-reqs/kustomization.yaml
$ cat site-configs-v2/pre-reqs/kustomization.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新された
site-configs-v2/pre-reqs/kustomization.yamlファイルの例apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - sno1/
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - sno1/Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を Git リポジトリーにコミットします。
検証
次のコマンドを実行して、
ClusterInstanceCR が正常にデプロイされ、プロビジョニングステータスが完了を示していることを確認します。oc get clusterinstance -A
$ oc get clusterinstance -ACopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME PAUSED PROVISIONSTATUS PROVISIONDETAILS AGE clusterinstance.siteconfig.open-cluster-management.io/sno1 Completed Provisioning completed 27s
NAME PAUSED PROVISIONSTATUS PROVISIONDETAILS AGE clusterinstance.siteconfig.open-cluster-management.io/sno1 Completed Provisioning completed 27sCopy to Clipboard Copied! Toggle word wrap Toggle overflow この時点では、
ClusterInstanceCR を使用する新しい Argo CD アプリケーションがsno1クラスターを管理しています。すべてのターゲットクラスターが新しいパイプラインに移行されるまで、これらのステップを繰り返して一度に 1 つ以上のクラスターを移行します。site-configs-v2/ディレクトリー内のフォルダー構造とファイルに、sno1クラスターの移行されたリソースが含まれていることを確認します。以下はその例です。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
sno1クラスター用のClusterInstanceCR です。- 2
- このツールは、
ClusterInstanceCR によって参照される追加のマニフェストを自動的に生成します。生成後、ファイル名が変更される可能性があります。関連するkustomization.yamlファイル内の元の命名規則に合わせて、ファイルの名前を変更できます。 - 3
- このツールは、追加のマニフェストを指定する
ConfigMapリソースを作成するためのkuztomization.yamlファイルスニペットを生成します。生成されたkustomizationスニペットは、元のkuztomization.yamlファイルとマージできます。
6.4.1. siteconfig-converter ツールの参照フラグ リンクのコピーリンクがクリップボードにコピーされました!
次のマトリックスは、siteconfig-converter ツールのフラグについて説明しています。
| フラグ | タイプ | 説明 |
|---|---|---|
| -d | string |
変換された |
| -t | string |
namespace/名前の形式で、クラスターのテンプレート参照のコンマ区切りリストを定義します。デフォルト値は |
| -n | string |
namespace/名前の形式で、ノードのテンプレート参照のコンマ区切りリストを定義します。デフォルト値は |
| -m | string |
追加のマニフェスト参照に使用する |
| -s | string | クラスターレベルで抑制するマニフェスト名のコンマ区切りリストを定義します。 |
| -w | boolean |
変換された YAML ファイルの先頭に、変換の警告をコメントとして書き込みます。デフォルト値は |
| -c | boolean |
元の |
6.5. 移行後に Argo CD パイプラインを削除する リンクのコピーリンクがクリップボードにコピーされました!
すべてのシングルノード OpenShift クラスターを SiteConfig CR から ClusterInstance CR に移行した後、SiteConfig CR を管理していた元の Argo CD アプリケーションと関連リソースを削除できます。
必ず ClusterInstance CR を使用する新しい Argo CD アプリケーションによってすべてのクラスターが正常に管理されていることを確認してから、Argo CD アプリケーションと関連リソースを削除してください。さらに、Argo CD プロジェクトが移行されたクラスターの Argo アプリケーションにのみ使用されていた場合は、このプロジェクトも削除できます。
前提条件
-
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。 -
すべてのシングルノード OpenShift クラスターは
ClusterInstanceCR を使用するように正常に移行され、別の Argo CD アプリケーションによって管理されている。
手順
SiteConfigCR を管理していた元の Argo CD アプリケーションを削除します。oc delete application.argo clusters -n openshift-gitops
$ oc delete application.argo clusters -n openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
clustersは、元の Argo CD アプリケーションの名前に置き換えます。
-
次のコマンドを実行して、元の Argo CD プロジェクトを削除します。
oc delete appproject ztp-app-project -n openshift-gitops
$ oc delete appproject ztp-app-project -n openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
ztp-app-projectは、元の Argo CD プロジェクトの名前に置き換えます。
-
検証
次のコマンドを実行して、元の Argo CD アプリケーションが削除されていることを確認します。
oc get appproject -n openshift-gitops
$ oc get appproject -n openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME AGE default 6d20h policy-app-project 2d22h ztpv2-app-project 44h
NAME AGE default 6d20h policy-app-project 2d22h ztpv2-app-project 44hCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
この例では、元の Argo CD プロジェクトである
ztp-app-projectは出力に存在しません。
-
この例では、元の Argo CD プロジェクトである
次のコマンドを実行して、元の Argo CD プロジェクトが削除されていることを確認します。
oc get applications.argo -n openshift-gitops
oc get applications.argo -n openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME SYNC STATUS HEALTH STATUS clusters-v2 Synced Healthy policies Synced Healthy
NAME SYNC STATUS HEALTH STATUS clusters-v2 Synced Healthy policies Synced HealthyCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
この例では、元の Argo CD アプリケーションである
clustersは出力に存在しません。
-
この例では、元の Argo CD アプリケーションである
6.6. ClusterInstance CR への移行のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
SiteConfig CR から ClusterInstance CR への移行中に問題が発生した場合は、次のトラブルシューティングステップの実行を検討してください。
手順
次のコマンドを実行して、SiteConfig Operator が必要なすべてのデプロイメントリソースをレンダリングしたことを確認します。
oc -n <target_cluster> get clusterinstances <target_cluster> -ojson | jq .status.manifestsRendered
$ oc -n <target_cluster> get clusterinstances <target_cluster> -ojson | jq .status.manifestsRenderedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第7章 vDU アプリケーションのワークロードに推奨されるシングルノード OpenShift クラスター設定 リンクのコピーリンクがクリップボードにコピーされました!
以下の参照情報を使用して、仮想分散ユニット (vDU) アプリケーションをクラスターにデプロイするために必要なシングルノード OpenShift 設定を理解してください。設定には、高性能ワークロードのためのクラスターの最適化、ワークロードの分割の有効化、およびインストール後に必要な再起動の回数の最小化が含まれます。
7.1. OpenShift Container Platform で低レイテンシーのアプリケーションを実行する リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform は、いくつかのテクノロジーと特殊なハードウェアデバイスを使用して、市販の (COTS) ハードウェアで実行するアプリケーションの低レイテンシー処理を可能にします。
- RHCOS のリアルタイムカーネル
- ワークロードが高レベルのプロセス決定で処理されるようにします。
- CPU の分離
- CPU スケジューリングの遅延を回避し、CPU 容量が一貫して利用可能な状態にします。
- NUMA 対応のトポロジー管理
- メモリーと Huge Page を CPU および PCI デバイスに合わせて、保証されたコンテナーメモリーと Huge Page を不均一メモリーアクセス (NUMA) ノードに固定します。すべての Quality of Service (QoS) クラスの Pod リソースは、同じ NUMA ノードに留まります。これにより、レイテンシーが短縮され、ノードのパフォーマンスが向上します。
- Huge Page のメモリー管理
- Huge Page サイズを使用すると、ページテーブルへのアクセスに必要なシステムリソースの量を減らすことで、システムパフォーマンスが向上します。
- PTP を使用した精度同期
- サブマイクロ秒の正確性を持つネットワーク内のノード間の同期を可能にします。
7.2. vDU アプリケーションワークロードに推奨されるクラスターホスト要件 リンクのコピーリンクがクリップボードにコピーされました!
vDU アプリケーションワークロードを実行するには、OpenShift Container Platform サービスおよび実稼働ワークロードを実行するのに十分なリソースを備えたベアメタルホストが必要です。
| プロファイル | 仮想 CPU | メモリー | ストレージ |
|---|---|---|---|
| 最低限 | 4 - 8 個の仮想 CPU | 32 GB のメモリー | 120 GB |
1 つの仮想 CPU は 1 つの物理コアに相当します。ただし、同時マルチスレッディング (SMT) またはハイパースレッディングを有効にする場合は、次の式を使用して、1 つの物理コアを表す仮想 CPU の数を計算してください。
- (コアあたりのスレッド数 x コア数) x ソケット数 = 仮想 CPU
仮想メディアを使用して起動する場合は、サーバーには Baseboard Management Controller (BMC) が必要です。
7.3. 低遅延と高パフォーマンスのためのホストファームウェアの設定 リンクのコピーリンクがクリップボードにコピーされました!
ベアメタルホストでは、ホストをプロビジョニングする前にファームウェアを設定する必要があります。ファームウェアの設定は、特定のハードウェアおよびインストールの特定の要件によって異なります。
手順
-
UEFI/BIOS Boot Mode を
UEFIに設定します。 - ホスト起動シーケンスの順序で、ハードドライブ を設定します。
ハードウェアに特定のファームウェア設定を適用します。次の表は、Intel FlexRAN 4G および 5G baseband PHY リファレンスデザインに基づく、Intel Xeon Skylake サーバーおよびそれ以降のハードウェア世代の代表的なファームウェア設定を示しています。
重要ファームウェア設定は、実際のハードウェアおよびネットワークの要件によって異なります。以下の設定例は、説明のみを目的としています。
Expand 表7.2 ファームウェア設定のサンプル ファームウェア設定 設定 CPU Power and Performance Policy
パフォーマンス
Uncore Frequency Scaling
無効
Performance P-limit
無効
Enhanced Intel SpeedStep ® Tech
有効
Intel Configurable TDP
有効
Configurable TDP Level
レベル 2
Intel® Turbo Boost Technology
有効
Energy Efficient Turbo
無効
Hardware P-States
無効
Package C-State
C0/C1 の状態
C1E
無効
Processor C6
無効
ホストのファームウェアでグローバル SR-IOV および VT-d 設定を有効にします。これらの設定は、ベアメタル環境に関連します。
7.4. マネージドクラスターネットワークの接続の前提条件 リンクのコピーリンクがクリップボードにコピーされました!
GitOps Zero Touch Provisioning (ZTP) パイプラインを使用してマネージドクラスターをインストールおよびプロビジョニングするには、マネージドクラスターホストが次のネットワーク前提条件を満たしている必要があります。
- ハブクラスター内の GitOps ZTP コンテナーとターゲットベアメタルホストの Baseboard Management Controller (BMC) の間に双方向接続が必要です。
マネージドクラスターは、ハブホスト名と
*.appsホスト名の API ホスト名を解決して到達できる必要があります。ハブの API ホスト名と*.appsホスト名の例を次に示します。-
api.hub-cluster.internal.domain.com -
console-openshift-console.apps.hub-cluster.internal.domain.com
-
ハブクラスターは、マネージドクラスターの API および
*.appsホスト名を解決して到達できる必要があります。マネージドクラスターの API ホスト名と*.appsホスト名の例を次に示します。-
api.sno-managed-cluster-1.internal.domain.com -
console-openshift-console.apps.sno-managed-cluster-1.internal.domain.com
-
7.5. GitOps ZTP を使用したシングルノード OpenShift でのワークロードの分割 リンクのコピーリンクがクリップボードにコピーされました!
ワークロードのパーティショニングは、OpenShift Container Platform サービス、クラスター管理ワークロード、およびインフラストラクチャー Pod を、予約された数のホスト CPU で実行するように設定します。
GitOps Zero Touch Provisioning (ZTP) を使用してワークロードパーティショニングを設定するには、クラスターのインストールに使用する SiteConfig カスタムリソース (CR) の cpuPartitioningMode フィールドを設定し、ホスト上で isolated と reserved CPU を設定する PerformanceProfile CR を適用します。
SiteConfig CR を設定すると、クラスターのインストール時にワークロードパーティショニングが有効になり、PerformanceProfile CR を適用すると、reserved および isolated セットへの割り当てが設定されます。これらの手順は両方とも、クラスターのプロビジョニング中に異なるタイミングで実行されます。
SiteConfig CR の cpuPartitioningMode フィールドを使用したワークロードパーティショニングの設定は、OpenShift Container Platform 4.13 のテクノロジープレビュー機能です。
あるいは、SiteConfig カスタムリソース (CR) の cpuset フィールドと、グループ PolicyGenerator または PolicyGentemplate CR の reserved フィールドを使用して、クラスター管理 CPU リソースを指定することもできます。推奨されるアプローチは {policy-gen-cr} CR です。GitOps ZTP パイプラインは、これらの値を使用して、シングルノード OpenShift クラスターを設定するワークロードパーティショニング MachineConfig CR (cpuset) および PerformanceProfile CR (reserved) の必須フィールドにデータを入力します。このメソッドは、OpenShift Container Platform 4.14 で一般公開された機能です。
ワークロードパーティショニング設定は、OpenShift Container Platform インフラストラクチャー Pod を reserved CPU セットに固定します。systemd、CRI-O、kubelet などのプラットフォームサービスは、reserved CPU セット上で実行されます。isolated CPU セットは、コンテナーワークロードに排他的に割り当てられます。CPU を分離すると、同じノード上で実行されている他のアプリケーションと競合することなく、ワークロードが指定された CPU に確実にアクセスできるようになります。分離されていないすべての CPU を予約する必要があります。
reserved CPU セットと isolated CPU セットが重複しないようにしてください。
7.6. TPM と PCR の保護によるディスク暗号化について リンクのコピーリンクがクリップボードにコピーされました!
SiteConfig カスタムリソース (CR) の diskEncryption フィールドを使用して、Trusted Platform Module (TPM) と Platform Configuration Register (PCR) 保護によるディスク暗号化を設定できます。
TPM は、暗号鍵を保存し、システムのセキュリティー状態を評価するハードウェアコンポーネントです。TPM 内の PCR には、システムの現在のハードウェアおよびソフトウェア設定を表すハッシュ値が保存されます。次の PCR レジスターを使用して、ディスク暗号化の暗号鍵を保護できます。
- PCR 1
- Unified Extensible Firmware Interface (UEFI) の状態を表します。
- PCR 7
- セキュアブートの状態を表します。
TPM は、PCR 1 および PCR 7 に記録されているシステムの現在の状態に暗号鍵をリンクすることで、暗号鍵を保護します。dmcrypt ユーティリティーが、このキーを使用してディスクを暗号化します。暗号鍵と想定される PCR レジスター間のバインディングは、必要に応じてアップグレード後に自動的に更新されます。
システムの起動プロセス中に、dmcrypt ユーティリティーが TPM の PCR 値を使用してディスクのロックを解除します。現在の PCR 値が以前にリンクされた値と一致した場合、ロックの解除が成功します。PCR 値が一致しない場合、暗号鍵を解除することができず、ディスクが暗号化されたままアクセスできなくなります。
SiteConfig CR の diskEncryption フィールドを使用したディスク暗号化を設定は、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
7.7. 推奨されるクラスターインストールマニフェスト リンクのコピーリンクがクリップボードにコピーされました!
ZTP パイプラインは、クラスターのインストール中に次のカスタムリソース (CR) を適用します。これらの設定 CR により、クラスターが vDU アプリケーションの実行に必要な機能とパフォーマンスの要件を満たしていることが保証されます。
クラスターデプロイメントに GitOps ZTP プラグインと SiteConfig CR を使用する場合は、デフォルトで次の MachineConfig CR が含まれます。
デフォルトで含まれる CR を変更するには、SiteConfig の extraManifests フィルターを使用します。詳細は、SiteConfig CR を使用した高度なマネージドクラスター設定 を参照してください。
7.7.1. ワークロードの分割 リンクのコピーリンクがクリップボードにコピーされました!
DU ワークロードを実行するシングルノード OpenShift クラスターには、ワークロードの分割が必要です。これにより、プラットフォームサービスの実行が許可されるコアが制限され、アプリケーションペイロードの CPU コアが最大化されます。
ワークロードの分割は、クラスターのインストール中にのみ有効にできます。インストール後にワークロードパーティショニングを無効にすることはできません。ただし、PerformanceProfile CR を通じて、isolated セットと reserved セットに割り当てられた CPU のセットを変更できます。CPU 設定を変更すると、ノードが再起動します。
ワークロードパーティショニングを有効にするために cpuPartitioningMode の使用に移行する場合は、クラスターのプロビジョニングに使用する /extra-manifest フォルダーからワークロードパーティショニングの MachineConfig CR を削除します。
ワークロードパーティショニング用に推奨される SiteConfig CR 設定
- 1
- クラスター内におけるすべてのノードのワークロードパーティショニングを設定するには、
cpuPartitioningModeフィールドをAllNodesに設定します。
検証
アプリケーションとクラスターシステムの CPU ピニングが正しいことを確認します。以下のコマンドを実行します。
マネージドクラスターへのリモートシェルプロンプトを開きます。
oc debug node/example-sno-1
$ oc debug node/example-sno-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift インフラストラクチャーアプリケーションの CPU ピニングが正しいことを確認します。
pgrep ovn | while read i; do taskset -cp $i; done
sh-4.4# pgrep ovn | while read i; do taskset -cp $i; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow システムアプリケーションの CPU ピニングが正しいことを確認します。
pgrep systemd | while read i; do taskset -cp $i; done
sh-4.4# pgrep systemd | while read i; do taskset -cp $i; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
pid 1's current affinity list: 0-1,52-53 pid 938's current affinity list: 0-1,52-53 pid 962's current affinity list: 0-1,52-53 pid 1197's current affinity list: 0-1,52-53
pid 1's current affinity list: 0-1,52-53 pid 938's current affinity list: 0-1,52-53 pid 962's current affinity list: 0-1,52-53 pid 1197's current affinity list: 0-1,52-53Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.7.2. プラットフォーム管理フットプリントの削減 リンクのコピーリンクがクリップボードにコピーされました!
プラットフォームの全体的な管理フットプリントを削減するには、ホストオペレーティングシステムとは別の新しい namespace にすべての Kubernetes 固有のマウントポイントを配置する MachineConfig カスタムリソース (CR) が必要です。次の base64 でエンコードされた MachineConfig CR の例は、この設定を示しています。
推奨されるコンテナーマウント namespace 設定 (01-container-mount-ns-and-kubelet-conf-master.yaml)
7.7.3. SCTP リンクのコピーリンクがクリップボードにコピーされました!
Stream Control Transmission Protocol (SCTP) は、RAN アプリケーションで使用される主要なプロトコルです。この MachineConfig オブジェクトは、SCTP カーネルモジュールをノードに追加して、このプロトコルを有効にします。
推奨されるコントロールプレーンノードの SCTP 設定 (03-sctp-machine-config-master.yaml)
推奨されるワーカーノードの SCTP 設定 (03-sctp-machine-config-worker.yaml)
7.7.4. rcu_normal の設定 リンクのコピーリンクがクリップボードにコピーされました!
次の MachineConfig CR は、システムの起動完了後に rcu_normal を 1 に設定するようにシステムを設定します。これにより、vDU アプリケーションのカーネル遅延が改善されます。
ノードの起動完了後に rcu_expedited を無効にするために推奨される設定 (08-set-rcu-normal-master.yaml)
7.7.5. kdump による自動カーネルクラッシュダンプ リンクのコピーリンクがクリップボードにコピーされました!
kdump は、カーネルがクラッシュしたときにカーネルクラッシュダンプを作成する Linux カーネル機能です。kdump は、次の MachineConfig CR で有効になっています。
コントロールプレーンノード用に推奨される kdump 設定 (06-kdump-master.yaml)
kdump ワーカーノード用に推奨される設定 (06-kdump-worker.yaml)
7.7.6. CRI-O キャッシュの自動ワイプを無効にする リンクのコピーリンクがクリップボードにコピーされました!
制御されていないホストのシャットダウンまたはクラスターの再起動の後、CRI-O は CRI-O キャッシュ全体を自動的に削除します。そのため、ノードの再起動時にはすべてのイメージがレジストリーからプルされます。これにより、許容できないほど復元に時間がかかったり、復元が失敗したりする可能性があります。GitOps ZTP を使用してインストールするシングルノード OpenShift クラスターでこの問題が発生しないようにするには、クラスターをインストールする際に CRI-O 削除キャッシュ機能を無効にします。
コントロールプレーンノードで CRI-O キャッシュワイプを無効にするために推奨される MachineConfig CR (99-crio-disable-wipe-master.yaml)
ワーカーノードで CRI-O キャッシュワイプを無効にするために推奨される MachineConfig CR (99-crio-disable-wipe-worker.yaml)
7.7.7. crun をデフォルトのコンテナーランタイムに設定 リンクのコピーリンクがクリップボードにコピーされました!
次の ContainerRuntimeConfig カスタムリソース (CR) は、コントロールプレーンおよびワーカーノードのデフォルト OCI コンテナーランタイムとして crun を設定します。crun コンテナーランタイムは高速かつ軽量で、メモリーフットプリントも小さくなります。
パフォーマンスを最適化するには、シングルノード OpenShift、3 ノード OpenShift、および標準クラスターのコントロールプレーンとワーカーノードで crun を有効にします。CR 適用時にクラスターが再起動するのを回避するには、GitOps ZTP の追加の Day 0 インストール時マニフェストとして変更を適用します。
コントロールプレーンノード用に推奨される ContainerRuntimeConfig (enable-crun-master.yaml)
ワーカーノード用に推奨される ContainerRuntimeConfig (enable-crun-worker.yaml)
7.7.8. TPM と PCR の保護によるディスク暗号化の有効化 リンクのコピーリンクがクリップボードにコピーされました!
SiteConfig カスタムリソース (CR) の diskEncryption フィールドを使用して、Trusted Platform Module (TPM) と Platform Configuration Register (PCR) 保護によるディスク暗号化を設定できます。
SiteConfig CR を設定すると、クラスターのインストール時にディスク暗号化が有効になります。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてログインしている。 - 「TPM と PCR の保護によるディスク暗号化について」セクションを確認した。
手順
SiteConfigCR のspec.clusters.diskEncryptionフィールドを設定します。PCR の保護によるディスク暗号化を有効にする際に推奨される
SiteConfigCR の設定Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、TPM と PCR の保護によるディスク暗号化が有効になっていることを確認します。
clevis luks list -d <disk_path>
$ clevis luks list -d <disk_path>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<disk_path>は、ディスクへのパスに置き換えます。たとえば、/dev/sda4です。
出力例
1: tpm2 '{"hash":"sha256","key":"ecc","pcr_bank":"sha256","pcr_ids":"1,7"}'1: tpm2 '{"hash":"sha256","key":"ecc","pcr_bank":"sha256","pcr_ids":"1,7"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.8. 推奨されるインストール後のクラスター設定 リンクのコピーリンクがクリップボードにコピーされました!
クラスターのインストールが完了すると、ZTP パイプラインは、DU ワークロードを実行するために必要な次のカスタムリソース (CR) を適用します。
GitOps ZTP v4.10 以前では、MachineConfig CR を使用して UEFI セキュアブートを設定します。これは、GitOps ZTP v4.11 以降では不要になりました。v4.11 では、クラスターのインストールに使用する SiteConfig CR の spec.clusters.nodes.bootMode フィールドを更新することで、シングルノード OpenShift クラスターの UEFI セキュアブートを設定します。詳細は、SiteConfig および GitOps ZTP を使用したマネージドクラスターのデプロイ を参照してください。
7.8.1. Operator リンクのコピーリンクがクリップボードにコピーされました!
DU ワークロードを実行するシングルノード OpenShift クラスターには、次の Operator をインストールする必要があります。
- Local Storage Operator
- Logging Operator
- PTP Operator
- SR-IOV Network Operator
カスタム CatalogSource CR を設定し、デフォルトの OperatorHub 設定を無効にし、インストールするクラスターからアクセスできる ImageContentSourcePolicy ミラーレジストリーを設定する必要もあります。
推奨される Storage Operator namespace と Operator グループ設定 (StorageNS.yaml、StorageOperGroup.yaml)
推奨される Cluster Logging Operator namespace と Operator グループの設定 (ClusterLogNS.yaml、ClusterLogOperGroup.yaml)
推奨される PTP Operator namespace と Operator グループ設定 (PtpSubscriptionNS.yaml、PtpSubscriptionOperGroup.yaml)
推奨される SR-IOV Operator namespace と Operator グループ設定 (SriovSubscriptionNS.yaml、SriovSubscriptionOperGroup.yaml)
推奨される CatalogSource 設定 (DefaultCatsrc.yaml)
推奨される ImageContentSourcePolicy 設定 (DisconnectedICSP.yaml)
推奨される OperatorHub 設定 (OperatorHub.yaml)
7.8.2. Operator のサブスクリプション リンクのコピーリンクがクリップボードにコピーされました!
DU ワークロードを実行するシングルノード OpenShift クラスターには、次の Subscription CR が必要です。サブスクリプションは、次の Operator をダウンロードする場所を提供します。
- Local Storage Operator
- Logging Operator
- PTP Operator
- SR-IOV Network Operator
- SRIOV-FEC Operator
Operator サブスクリプションごとに、Operator の取得先であるチャネルを指定します。推奨チャンネルは stable です。
Manual 更新または Automatic 更新を指定できます。Automatic モードでは、Operator は、レジストリーで利用可能になると、チャネル内の最新バージョンに自動的に更新します。Manual モードでは、新しい Operator バージョンは、明示的に承認された場合にのみインストールされます。
サブスクリプションには Manual モードを使用します。これにより、スケジュールされたメンテナンス期間内に収まるように Operator の更新タイミングを制御できます。
推奨される Local Storage Operator サブスクリプション (StorageSubscription.yaml)
推奨される SR-IOV Operator サブスクリプション (SriovSubscription.yaml)
推奨される PTP Operator サブスクリプション (PtpSubscription.yaml)
推奨される Cluster Logging Operator サブスクリプション (ClusterLogSubscription.yaml)
7.8.3. クラスターのロギングとログ転送 リンクのコピーリンクがクリップボードにコピーされました!
DU ワークロードを実行するシングルノード OpenShift クラスターでは、デバッグのためにロギングとログ転送が必要です。次のカスタムリソース (CR) が必要です。
推奨される ClusterLogForwarder.yaml
spec.outputs.kafka.url フィールドには、ログの転送先となる Kafka サーバーの URL を設定してください。
推奨される ClusterLogNS.yaml
推奨される ClusterLogOperGroup.yaml
推奨される ClusterLogServiceAccount.yaml
推奨される ClusterLogServiceAccountAuditBinding.yaml
推奨される ClusterLogServiceAccountInfrastructureBinding.yaml
推奨される ClusterLogSubscription.yaml
7.8.4. パフォーマンスプロファイル リンクのコピーリンクがクリップボードにコピーされました!
DU ワークロードを実行するシングルノード OpenShift クラスターでは、リアルタイムのホスト機能とサービスを使用するために Node Tuning Operator パフォーマンスプロファイルが必要です。
OpenShift Container Platform の以前のバージョンでは、Performance Addon Operator を使用して自動チューニングを実装し、OpenShift アプリケーションの低レイテンシーパフォーマンスを実現していました。OpenShift Container Platform 4.11 以降では、この機能は Node Tuning Operator の一部です。
次の PerformanceProfile CR の例は、必要なシングルノード OpenShift クラスター設定を示しています。
推奨されるパフォーマンスプロファイル設定 (PerformanceProfile.yaml)
| PerformanceProfile CR フィールド | 説明 |
|---|---|
|
|
|
|
|
|
|
| 分離された CPU を設定します。すべてのハイパースレッディングペアが一致していることを確認します。 重要 予約済みおよび分離された CPU プールは重複してはならず、いずれも使用可能なすべてのコア全体にわたる必要があります。考慮されていない CPU コアは、システムで未定義の動作を引き起こします。 |
|
| 予約済みの CPU を設定します。ワークロードの分割が有効になっている場合、システムプロセス、カーネルスレッド、およびシステムコンテナースレッドは、これらの CPU に制限されます。分離されていないすべての CPU を予約する必要があります。 |
|
|
|
|
|
リアルタイムカーネルを使用するには、 |
|
|
|
7.8.5. クラスター時間同期の設定 リンクのコピーリンクがクリップボードにコピーされました!
コントロールプレーンまたはワーカーノードに対して、1 回限りのシステム時間同期ジョブを実行します。
コントロールプレーンノード用に推奨される 1 回限りの時間同期 (99-sync-time-once-master.yaml)
ワーカーノード用に推奨される 1 回限りの時間同期 (99-sync-time-once-worker.yaml)
7.8.6. PTP リンクのコピーリンクがクリップボードにコピーされました!
シングルノード OpenShift クラスターは、ネットワーク時間同期に Precision Time Protocol (PTP) を使用します。次の PtpConfig CR の例は、通常のクロック、境界クロック、およびグランドマスタークロックに必要な PTP 設定を示しています。適用する設定は、ノードのハードウェアとユースケースにより異なります。
推奨される PTP 通常クロック設定 (PtpConfigSlave.yaml)
推奨される境界クロック設定 (PtpConfigBoundary.yaml)
推奨される PTP Westport Channel e810 グランドマスタークロック設定 (PtpConfigGmWpc.yaml)
次のオプションの PtpOperatorConfig CR は、ノードの PTP イベントレポートを設定します。
推奨される PTP イベント設定 (PtpOperatorConfigForEvent.yaml)
7.8.7. 拡張調整済みプロファイル リンクのコピーリンクがクリップボードにコピーされました!
DU ワークロードを実行するシングルノード OpenShift クラスターには、高性能ワークロードに必要な追加のパフォーマンスチューニング設定が必要です。次の Tuned CR の例では、Tuned プロファイルを拡張しています。
推奨される拡張 Tuned プロファイル設定 (TunedPerformancePatch.yaml)
| 調整された CR フィールド | 説明 |
|---|---|
|
|
|
7.8.8. SR-IOV リンクのコピーリンクがクリップボードにコピーされました!
シングルルート I/O 仮想化 (SR-IOV) は、一般的にフロントホールネットワークとミッドホールネットワークを有効にするために使用されます。次の YAML の例では、シングルノード OpenShift クラスターの SR-IOV を設定します。
SriovNetwork CR の設定は、特定のネットワークとインフラストラクチャーの要件によって異なります。
推奨される SriovOperatorConfig CR 設定 (SriovOperatorConfig.yaml)
| SriovOperatorConfig CR フィールド | 説明 |
|---|---|
|
|
以下に例を示します。 |
|
|
|
推奨される SriovNetwork 設定 (SriovNetwork.yaml)
| SriovNetwork CR フィールド | 説明 |
|---|---|
|
|
|
推奨される SriovNetworkNodePolicy CR 設定 (SriovNetworkNodePolicy.yaml)
| SriovNetworkNodePolicy CR フィールド | 説明 |
|---|---|
|
|
|
|
| フロントホールネットワークに接続されているインターフェイスを指定します。 |
|
| フロントホールネットワークの VF の数を指定します。 |
|
| 物理機能の正確な名前は、ハードウェアと一致する必要があります。 |
推奨される SR-IOV カーネル設定 (07-sriov-related-kernel-args-master.yaml)
7.8.9. Console Operator リンクのコピーリンクがクリップボードにコピーされました!
クラスターケイパビリティー機能を使用して、コンソールオペレーターがインストールされないようにします。ノードが一元的に管理されている場合は必要ありません。Operator を削除すると、アプリケーションのワークロードに追加の領域と容量ができます。
マネージドクラスターのインストール中に Console Operator を無効にするには、SiteConfig カスタムリソース (CR) の spec.clusters.0.installConfigOverrides フィールドで次のように設定します。
installConfigOverrides: "{\"capabilities\":{\"baselineCapabilitySet\": \"None\" }}"
installConfigOverrides: "{\"capabilities\":{\"baselineCapabilitySet\": \"None\" }}"
7.8.10. Alertmanager リンクのコピーリンクがクリップボードにコピーされました!
DU ワークロードを実行するシングルノード OpenShift クラスターでは、OpenShift Container Platform モニタリングコンポーネントによって消費される CPU リソースを削減する必要があります。以下の ConfigMap カスタムリソース (CR) は Alertmanager を無効にします。
推奨されるクラスターモニタリング設定 (ReduceMonitoringFootprint.yaml)
7.8.11. Operator Lifecycle Manager リンクのコピーリンクがクリップボードにコピーされました!
分散ユニットワークロードを実行するシングルノード OpenShift クラスターには、CPU リソースへの一貫したアクセスが必要です。Operator Lifecycle Manager (OLM) は定期的に Operator からパフォーマンスデータを収集するため、CPU 使用率が増加します。次の ConfigMap カスタムリソース (CR) は、OLM によるオペレーターパフォーマンスデータの収集を無効にします。
推奨されるクラスター OLM 設定 (ReduceOLMFootprint.yaml)
7.8.12. LVM Storage リンクのコピーリンクがクリップボードにコピーされました!
論理ボリュームマネージャー (LVM) ストレージを使用して、シングルノード OpenShift クラスター上にローカルストレージを動的にプロビジョニングできます。
シングルノード OpenShift の推奨ストレージソリューションは、Local Storage Operator です。LVM Storage も使用できますが、その場合は追加の CPU リソースを割り当てる必要があります。
次の YAML の例では、OpenShift Container Platform アプリケーションで使用できるようにノードのストレージを設定しています。
推奨される LVMCluster 設定 (StorageLVMCluster.yaml)
| LVMCluster CR フィールド | 説明 |
|---|---|
|
| LVM Storage に使用されるディスクを設定します。ディスクが指定されていない場合、LVM Storage は指定されたシンプール内のすべての未使用ディスクを使用します。 |
7.8.13. ネットワーク診断 リンクのコピーリンクがクリップボードにコピーされました!
DU ワークロードを実行するシングルノード OpenShift クラスターでは、これらの Pod によって作成される追加の負荷を軽減するために、Pod 間のネットワーク接続チェックが少なくて済みます。次のカスタムリソース (CR) は、これらのチェックを無効にします。
推奨されるネットワーク診断設定 (DisableSnoNetworkDiag.yaml)
第8章 vDU アプリケーションワークロードのシングルノード OpenShift クラスターチューニングの検証 リンクのコピーリンクがクリップボードにコピーされました!
仮想化分散ユニット (vDU) アプリケーションをデプロイする前に、クラスターホストファームウェアおよびその他のさまざまなクラスター設定を調整および設定する必要があります。以下の情報を使用して、vDU ワークロードをサポートするためのクラスター設定を検証します。
8.1. vDU クラスターホストの推奨ファームウェア設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform 4.20 で実行される vDU アプリケーションのクラスターホストファームウェアを設定するための基礎として、以下の表を使用してください。
次の表は、vDU クラスターホストファームウェア設定の一般的な推奨事項です。正確なファームウェア設定は、要件と特定のハードウェアプラットフォームによって異なります。ファームウェアの自動設定は、ゼロタッチプロビジョニングパイプラインでは処理されません。
| ファームウェア設定 | 設定 | 説明 |
|---|---|---|
| HyperTransport (HT) | 有効 | HyperTransport (HT) バスは、AMD が開発したバス技術です。HT は、ホストメモリー内のコンポーネントと他のシステムペリフェラル間の高速リンクを提供します。 |
| UEFI | 有効 | vDU ホストの UEFI からの起動を有効にします。 |
| CPU Power and Performance Policy | パフォーマンス | CPU パワーとパフォーマンスポリシーを設定し、エネルギー効率よりもパフォーマンスを優先してシステムを最適化します。 |
| Uncore Frequency Scaling | 無効 | Uncore Frequency Scaling を無効にして、CPU のコア以外の部分の電圧と周波数が個別に設定されるのを防ぎます。 |
| Uncore Frequency | 最大 | キャッシュやメモリーコントローラーなど、CPU のコア以外の部分を可能な最大動作周波数に設定します。 |
| Performance P-limit | 無効 | プロセッサーのアンコア周波数の調整を防ぐには、Performance P-limit を無効にします。 |
| Enhanced Intel® SpeedStep Tech | 有効 | Enhanced Intel SpeedStep を有効にして、システムがプロセッサーの電圧とコア周波数を動的に調整できるようにし、ホストの消費電力と発熱を減らします。 |
| Intel® Turbo Boost Technology | 有効 | Intel ベースの CPU で Turbo Boost Technology を有効にすると、プロセッサーコアが電力、電流、および温度の仕様制限を下回って動作している場合、自動的に定格動作周波数よりも高速に動作できるようにします。 |
| Intel Configurable TDP | 有効 | CPU の Thermal Design Power (TDP) を有効にします。 |
| Configurable TDP Level | レベル 2 | TDP レベルは、特定のパフォーマンス評価に必要な CPU 消費電力を設定します。TDP レベル 2 は、消費電力を犠牲にして、CPU を最も安定したパフォーマンスレベルに設定します。 |
| Energy Efficient Turbo | 無効 | Energy Efficient Turbo を無効にして、プロセッサーがエネルギー効率ベースのポリシーを使用しないようにします。 |
| Hardware P-States | 有効化または無効化 |
OS 制御の P-States を有効にして、省電力設定を許可します。 |
| Package C-State | C0/C1 の状態 | C0 または C1 状態を使用して、プロセッサーを完全にアクティブな状態 (C0) に設定するか、ソフトウェアで実行されている CPU 内部クロックを停止します (C1)。 |
| C1E | 無効 | CPU Enhanced Halt (C1E) は、Intel チップの省電力機能です。C1E を無効にすると、非アクティブ時にオペレーティングシステムが停止コマンドを CPU に送信することを防ぎます。 |
| Processor C6 | 無効 | C6 節電は、アイドル状態の CPU コアとキャッシュを自動的に無効にする CPU 機能です。C6 を無効にすると、システムパフォーマンスが向上します。 |
| Sub-NUMA Clustering | 無効 | サブ NUMA クラスタリングは、プロセッサーコア、キャッシュ、およびメモリーを複数の NUMA ドメインに分割します。このオプションを無効にすると、レイテンシーの影響を受けやすいワークロードのパフォーマンスが向上します。 |
ホストのファームウェアでグローバル SR-IOV および VT-d 設定を有効にします。これらの設定は、ベアメタル環境に関連します。
C-states と OS 制御の P-States の両方を有効にして、Pod ごとの電源管理を許可します。
8.2. vDU アプリケーションを実行するための推奨クラスター設定 リンクのコピーリンクがクリップボードにコピーされました!
仮想化分散ユニット (vDU) アプリケーションを実行するクラスターには、高度に調整かつ最適化された設定が必要です。以下では、OpenShift Container Platform 4.20 クラスターで vDU ワークロードをサポートするために必要なさまざまな要素を説明します。
8.2.1. シングルノード OpenShift クラスター用の推奨クラスター MachineConfig CR リンクのコピーリンクがクリップボードにコピーされました!
ztp-site-generate コンテナーから抽出した MachineConfig カスタムリソース (CR) がクラスターに適用されていることを確認します。CR は、抽出した out/source-crs/extra-manifest/ フォルダーにあります。
ztp-site-generate コンテナーからの次の MachineConfig CR は、クラスターホストを設定します。
| MachineConfig CR | 説明 |
|---|---|
|
| コンテナーマウント namespace と kubelet 設定を設定します。 |
|
|
SCTP カーネルモジュールをロードします。これらの |
|
| クラスターの kdump クラッシュレポートを設定します。 |
|
| クラスターの SR-IOV カーネル引数を設定します。 |
|
|
クラスターの再起動後に |
|
| クラスター再起動後の自動 CRI-O キャッシュワイプを無効にします。 |
|
| Chrony サービスによるシステムクロックのワンタイムチェックと調整を設定します。 |
|
|
|
|
| クラスターのインストール時および RHACM クラスターポリシーの生成時に cgroups v1 を有効にします。 |
OpenShift Container Platform 4.14 以降では、SiteConfig CR の cpuPartitioningMode フィールドを使用してワークロードの分割を設定します。
8.2.2. 推奨されるクラスター Operator リンクのコピーリンクがクリップボードにコピーされました!
次の Operator は、仮想化分散ユニット (vDU) アプリケーションを実行するクラスターに必要であり、ベースライン参照設定の一部です。
- Node Tuning Operator (NTO)。NTO は、以前は Performance Addon Operator で提供されていた機能をパッケージ化し、現在は NTO の一部になっています。
- PTP Operator
- SR-IOV Network Operator
- Red Hat OpenShift Logging Operator
- Local Storage Operator
8.2.3. 推奨されるクラスターカーネル設定 リンクのコピーリンクがクリップボードにコピーされました!
クラスターでは常に、サポートされている最新のリアルタイムカーネルバージョンを使用してください。クラスターに次の設定を適用していることを確認します。
次の
additionalKernelArgsがクラスターパフォーマンスプロファイルに設定されていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション:
hardwareTuningフィールドで CPU 周波数を設定します。ハードウェアチューニングを使用して、予約済みコア CPU と分離コア CPU の CPU 周波数を調整できます。FlexRAN のようなアプリケーションの場合、ハードウェアベンダーは、デフォルトで提供される周波数よりも低い CPU 周波数で実行することを推奨しています。周波数を設定する前に、プロセッサー世代の最大周波数設定に関するハードウェアベンダーのガイドラインを参照することを強く推奨します。この例では、予約および分離された CPU の周波数を 2500 MHz に設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow TunedCR のperformance-patchプロファイルが、関連するPerformanceProfileCR のisolatedCPU セットと一致する正しい CPU 分離セットを設定していることを確認します。次に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.2.4. リアルタイムカーネルバージョンの確認 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform クラスターでは常にリアルタイムカーネルの最新バージョンを使用してください。クラスターで使用されているカーネルバージョンが不明な場合は、次の手順で現在のリアルタイムカーネルバージョンとリリースバージョンを比較できます。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてログインしている。 -
podmanがインストールされている。
手順
次のコマンドを実行して、クラスターのバージョンを取得します。
OCP_VERSION=$(oc get clusterversion version -o jsonpath='{.status.desired.version}{"\n"}')$ OCP_VERSION=$(oc get clusterversion version -o jsonpath='{.status.desired.version}{"\n"}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow リリースイメージの SHA 番号を取得します。
DTK_IMAGE=$(oc adm release info --image-for=driver-toolkit quay.io/openshift-release-dev/ocp-release:$OCP_VERSION-x86_64)
$ DTK_IMAGE=$(oc adm release info --image-for=driver-toolkit quay.io/openshift-release-dev/ocp-release:$OCP_VERSION-x86_64)Copy to Clipboard Copied! Toggle word wrap Toggle overflow リリースイメージコンテナーを実行し、クラスターの現在のリリースにパッケージ化されているカーネルバージョンを抽出します。
podman run --rm $DTK_IMAGE rpm -qa | grep 'kernel-rt-core-' | sed 's#kernel-rt-core-##'
$ podman run --rm $DTK_IMAGE rpm -qa | grep 'kernel-rt-core-' | sed 's#kernel-rt-core-##'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
4.18.0-305.49.1.rt7.121.el8_4.x86_64
4.18.0-305.49.1.rt7.121.el8_4.x86_64Copy to Clipboard Copied! Toggle word wrap Toggle overflow これは、リリースに同梱されているデフォルトのリアルタイムカーネルバージョンです。
注記リアルタイムカーネルは、カーネルバージョンの文字列
.rtで示されます。
検証
クラスターの現在のリリース用にリストされているカーネルバージョンが、クラスターで実行されている実際のリアルタイムカーネルと一致することを確認します。次のコマンドを実行して、実行中のリアルタイムカーネルバージョンを確認します。
クラスターノードへのリモートシェル接続を開きます。
oc debug node/<node_name>
$ oc debug node/<node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow リアルタイムカーネルバージョンを確認します。
uname -r
sh-4.4# uname -rCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
4.18.0-305.49.1.rt7.121.el8_4.x86_64
4.18.0-305.49.1.rt7.121.el8_4.x86_64Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.3. 推奨されるクラスター設定が適用されていることの確認 リンクのコピーリンクがクリップボードにコピーされました!
クラスターが正しい設定で実行されていることを確認できます。以下の手順では、OpenShift Container Platform 4.20 クラスターに DU アプリケーションをデプロイするために必要なさまざまな設定を確認する方法を説明します。
前提条件
- クラスターをデプロイし、vDU ワークロード用に調整している。
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてログインしている。
手順
デフォルトの OperatorHub ソースが無効になっていることを確認します。以下のコマンドを実行します。
oc get operatorhub cluster -o yaml
$ oc get operatorhub cluster -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
spec: disableAllDefaultSources: truespec: disableAllDefaultSources: trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、必要なすべての
CatalogSourceリソースにワークロードのパーティショニング (PreferredDuringScheduling) のアノテーションが付けられていることを確認します。oc get catalogsource -A -o jsonpath='{range .items[*]}{.metadata.name}{" -- "}{.metadata.annotations.target\.workload\.openshift\.io/management}{"\n"}{end}'$ oc get catalogsource -A -o jsonpath='{range .items[*]}{.metadata.name}{" -- "}{.metadata.annotations.target\.workload\.openshift\.io/management}{"\n"}{end}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
certified-operators -- {"effect": "PreferredDuringScheduling"} community-operators -- {"effect": "PreferredDuringScheduling"} ran-operators redhat-marketplace -- {"effect": "PreferredDuringScheduling"} redhat-operators -- {"effect": "PreferredDuringScheduling"}certified-operators -- {"effect": "PreferredDuringScheduling"} community-operators -- {"effect": "PreferredDuringScheduling"} ran-operators1 redhat-marketplace -- {"effect": "PreferredDuringScheduling"} redhat-operators -- {"effect": "PreferredDuringScheduling"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- アノテーションが付けられていない
CatalogSourceリソースも返されます。この例では、ran-operatorsCatalogSourceリソースにはアノテーションが付けられておらず、PreferredDuringSchedulingアノテーションがありません。
注記適切に設定された vDU クラスターでは、単一のアノテーション付きカタログソースのみがリスト表示されます。
該当するすべての OpenShift Container Platform Operator の namespace がワークロードのパーティショニング用にアノテーションされていることを確認します。これには、コア OpenShift Container Platform とともにインストールされたすべての Operator と、参照 DU チューニング設定に含まれる追加の Operator のセットが含まれます。以下のコマンドを実行します。
oc get namespaces -A -o jsonpath='{range .items[*]}{.metadata.name}{" -- "}{.metadata.annotations.workload\.openshift\.io/allowed}{"\n"}{end}'$ oc get namespaces -A -o jsonpath='{range .items[*]}{.metadata.name}{" -- "}{.metadata.annotations.workload\.openshift\.io/allowed}{"\n"}{end}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
default -- openshift-apiserver -- management openshift-apiserver-operator -- management openshift-authentication -- management openshift-authentication-operator -- management
default -- openshift-apiserver -- management openshift-apiserver-operator -- management openshift-authentication -- management openshift-authentication-operator -- managementCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要追加の Operator は、ワークロードパーティショニングのためにアノテーションを付けてはなりません。前のコマンドからの出力では、追加の Operator が
--セパレーターの右側に値なしでリストされている必要があります。ClusterLogging設定が正しいことを確認してください。以下のコマンドを実行します。適切な入力ログと出力ログが設定されていることを確認します。
oc get -n openshift-logging ClusterLogForwarder instance -o yaml
$ oc get -n openshift-logging ClusterLogForwarder instance -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow キュレーションスケジュールがアプリケーションに適していることを確認します。
oc get -n openshift-logging clusterloggings.logging.openshift.io instance -o yaml
$ oc get -n openshift-logging clusterloggings.logging.openshift.io instance -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のコマンドを実行して、Web コンソールが無効になっている (
managementState: Removed) ことを確認します。oc get consoles.operator.openshift.io cluster -o jsonpath="{ .spec.managementState }"$ oc get consoles.operator.openshift.io cluster -o jsonpath="{ .spec.managementState }"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Removed
RemovedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、クラスターノードで
chronydが無効になっていることを確認します。oc debug node/<node_name>
$ oc debug node/<node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ノードで
chronydのステータスを確認します。chroot /host
sh-4.4# chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl status chronyd
sh-4.4# systemctl status chronydCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
● chronyd.service - NTP client/server Loaded: loaded (/usr/lib/systemd/system/chronyd.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:chronyd(8) man:chrony.conf(5)● chronyd.service - NTP client/server Loaded: loaded (/usr/lib/systemd/system/chronyd.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:chronyd(8) man:chrony.conf(5)Copy to Clipboard Copied! Toggle word wrap Toggle overflow linuxptp-daemonコンテナーへのリモートシェル接続と PTP Management Client (pmc) ツールを使用して、PTP インターフェイスがプライマリークロックに正常に同期されていることを確認します。次のコマンドを実行して、
$PTP_POD_NAME変数にlinuxptp-daemonPod の名前を設定します。PTP_POD_NAME=$(oc get pods -n openshift-ptp -l app=linuxptp-daemon -o name)
$ PTP_POD_NAME=$(oc get pods -n openshift-ptp -l app=linuxptp-daemon -o name)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、PTP デバイスの同期ステータスを確認します。
oc -n openshift-ptp rsh -c linuxptp-daemon-container ${PTP_POD_NAME} pmc -u -f /var/run/ptp4l.0.config -b 0 'GET PORT_DATA_SET'$ oc -n openshift-ptp rsh -c linuxptp-daemon-container ${PTP_POD_NAME} pmc -u -f /var/run/ptp4l.0.config -b 0 'GET PORT_DATA_SET'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の
pmcコマンドを実行して、PTP クロックのステータスを確認します。oc -n openshift-ptp rsh -c linuxptp-daemon-container ${PTP_POD_NAME} pmc -u -f /var/run/ptp4l.0.config -b 0 'GET TIME_STATUS_NP'$ oc -n openshift-ptp rsh -c linuxptp-daemon-container ${PTP_POD_NAME} pmc -u -f /var/run/ptp4l.0.config -b 0 'GET TIME_STATUS_NP'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /var/run/ptp4l.0.configの値に対応する予期されるmaster offset値がlinuxptp-daemon-containerログにあることを確認します。oc logs $PTP_POD_NAME -n openshift-ptp -c linuxptp-daemon-container
$ oc logs $PTP_POD_NAME -n openshift-ptp -c linuxptp-daemon-containerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
phc2sys[56020.341]: [ptp4l.1.config] CLOCK_REALTIME phc offset -1731092 s2 freq -1546242 delay 497 ptp4l[56020.390]: [ptp4l.1.config] master offset -2 s2 freq -5863 path delay 541 ptp4l[56020.390]: [ptp4l.0.config] master offset -8 s2 freq -10699 path delay 533
phc2sys[56020.341]: [ptp4l.1.config] CLOCK_REALTIME phc offset -1731092 s2 freq -1546242 delay 497 ptp4l[56020.390]: [ptp4l.1.config] master offset -2 s2 freq -5863 path delay 541 ptp4l[56020.390]: [ptp4l.0.config] master offset -8 s2 freq -10699 path delay 533Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のコマンドを実行して、SR-IOV 設定が正しいことを確認します。
SriovOperatorConfigリソースのdisableDrain値がtrueに設定されていることを確認します。oc get sriovoperatorconfig -n openshift-sriov-network-operator default -o jsonpath="{.spec.disableDrain}{'\n'}"$ oc get sriovoperatorconfig -n openshift-sriov-network-operator default -o jsonpath="{.spec.disableDrain}{'\n'}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
true
trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
SriovNetworkNodeState同期ステータスがSucceededであることを確認します。oc get SriovNetworkNodeStates -n openshift-sriov-network-operator -o jsonpath="{.items[*].status.syncStatus}{'\n'}"$ oc get SriovNetworkNodeStates -n openshift-sriov-network-operator -o jsonpath="{.items[*].status.syncStatus}{'\n'}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Succeeded
SucceededCopy to Clipboard Copied! Toggle word wrap Toggle overflow SR-IOV 用に設定された各インターフェイスの下の仮想機能 (
Vfs) の予想される数と設定が、.status.interfacesフィールドに存在し、正しいことを確認します。以下に例を示します。oc get SriovNetworkNodeStates -n openshift-sriov-network-operator -o yaml
$ oc get SriovNetworkNodeStates -n openshift-sriov-network-operator -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
クラスターパフォーマンスプロファイルが正しいことを確認します。
cpuセクションとhugepagesセクションは、ハードウェア設定によって異なります。以下のコマンドを実行します。oc get PerformanceProfile openshift-node-performance-profile -o yaml
$ oc get PerformanceProfile openshift-node-performance-profile -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記CPU 設定は、サーバーで使用可能なコアの数に依存し、ワークロードパーティショニングの設定に合わせる必要があります。
hugepagesの設定は、サーバーとアプリケーションに依存します。次のコマンドを実行して、
PerformanceProfileがクラスターに正常に適用されたことを確認します。oc get performanceprofile openshift-node-performance-profile -o jsonpath="{range .status.conditions[*]}{ @.type }{' -- '}{@.status}{'\n'}{end}"$ oc get performanceprofile openshift-node-performance-profile -o jsonpath="{range .status.conditions[*]}{ @.type }{' -- '}{@.status}{'\n'}{end}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Available -- True Upgradeable -- True Progressing -- False Degraded -- False
Available -- True Upgradeable -- True Progressing -- False Degraded -- FalseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
Tunedパフォーマンスパッチの設定を確認します。oc get tuneds.tuned.openshift.io -n openshift-cluster-node-tuning-operator performance-patch -o yaml
$ oc get tuneds.tuned.openshift.io -n openshift-cluster-node-tuning-operator performance-patch -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
cmdline=nohz_full=の cpu リストは、ハードウェア設定によって異なります。
次のコマンドを実行して、クラスターネットワーク診断が無効になっていることを確認します。
oc get networks.operator.openshift.io cluster -o jsonpath='{.spec.disableNetworkDiagnostics}'$ oc get networks.operator.openshift.io cluster -o jsonpath='{.spec.disableNetworkDiagnostics}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
true
trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow Kubeletのハウスキーピング間隔が、遅い速度に調整されていることを確認します。これは、containerMountNSマシン設定で設定されます。以下のコマンドを実行します。oc describe machineconfig container-mount-namespace-and-kubelet-conf-master | grep OPENSHIFT_MAX_HOUSEKEEPING_INTERVAL_DURATION
$ oc describe machineconfig container-mount-namespace-and-kubelet-conf-master | grep OPENSHIFT_MAX_HOUSEKEEPING_INTERVAL_DURATIONCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Environment="OPENSHIFT_MAX_HOUSEKEEPING_INTERVAL_DURATION=60s"
Environment="OPENSHIFT_MAX_HOUSEKEEPING_INTERVAL_DURATION=60s"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Grafana と
alertManagerMainが無効になっていること、および Prometheus の保持期間が 24 時間に設定されていることを確認します。oc get configmap cluster-monitoring-config -n openshift-monitoring -o jsonpath="{ .data.config\.yaml }"$ oc get configmap cluster-monitoring-config -n openshift-monitoring -o jsonpath="{ .data.config\.yaml }"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを使用して、Grafana および
alertManagerMainルートがクラスター内に見つからないことを確認します。oc get route -n openshift-monitoring alertmanager-main
$ oc get route -n openshift-monitoring alertmanager-mainCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc get route -n openshift-monitoring grafana
$ oc get route -n openshift-monitoring grafanaCopy to Clipboard Copied! Toggle word wrap Toggle overflow どちらのクエリーも
Error from server (NotFound)メッセージを返す必要があります。
次のコマンドを実行して、
PerformanceProfile、Tunedperformance-patch、ワークロードパーティショニング、およびカーネルコマンドライン引数のそれぞれにreservedとして割り当てられた CPU が少なくとも 4 つあることを確認します。oc get performanceprofile -o jsonpath="{ .items[0].spec.cpu.reserved }"$ oc get performanceprofile -o jsonpath="{ .items[0].spec.cpu.reserved }"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
0-3
0-3Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ワークロードの要件によっては、追加の予約済み CPU の割り当てが必要になる場合があります。
第9章 SiteConfig リソースを使用した高度なマネージドクラスター設定 リンクのコピーリンクがクリップボードにコピーされました!
SiteConfig カスタムリソース (CR) を使用して、インストール時にマネージドクラスターにカスタム機能と設定をデプロイできます。
SiteConfig v1 は、OpenShift Container Platform バージョン 4.18 以降では非推奨になります。ClusterInstance カスタムリソースを使用する SiteConfig Operator を通じて、同等の改良された機能が利用できるようになりました。詳細は、Procedure to transition from SiteConfig CRs to the ClusterInstance API を参照してください。
SiteConfig Operator の詳細は、SiteConfig を参照してください。
9.1. GitOps ZTP パイプラインでの追加インストールマニフェストのカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
GitOps Zero Touch Provisioning (ZTP) パイプラインのインストールフェーズに追加するマニフェストセットを定義できます。これらのマニフェストは SiteConfig カスタムリソース (CR) にリンクされ、インストール時にクラスターに適用されます。インストール時に MachineConfig CR を含めると、インストール作業が効率的になります。
前提条件
- カスタムサイトの設定データを管理する Git リポジトリーを作成している。リポジトリーはハブクラスターからアクセス可能で、Argo CD アプリケーションのソースリポジトリーとして定義されている必要があります。
手順
- GitOps ZTP パイプラインがクラスターインストールのカスタマイズ使用する、追加のマニフェスト CR のセットを作成します。
カスタム
/siteconfigディレクトリーに、追加のマニフェスト用のサブディレクトリー/custom-manifestを作成します。以下の例は、/custom-manifestフォルダーを持つ/siteconfigのサンプルを示しています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記全体で使用されているサブディレクトリー名
/custom-manifestおよび/extra-manifestは、名前の例にすぎません。これらの名前を使用する必要はなく、これらのサブディレクトリーに名前を付ける方法に制限はありません。この例では、/extra-manifestは、ztp-site-generateコンテナーの/extra-manifestの内容を保存する Git サブディレクトリーを指します。-
カスタムの追加マニフェスト CR を
siteconfig/custom-manifestディレクトリーに追加します。 SiteConfigCR で、extraManifests.searchPathsフィールドにディレクトリー名を入力します。例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
SiteConfig、/extra-manifest、および/custom-manifestCR を保存し、サイト設定リポジトリーにプッシュします。
クラスターのプロビジョニング中に、GitOps ZTP パイプラインは、/custom-manifest ディレクトリー内の CR を、extra-manifest/ に保存されている追加マニフェストのデフォルトのセットに追加します。
バージョン 4.14 以降、extraManifestPath には非推奨の警告が表示されます。
extraManifestPath は引き続きサポートされていますが、extraManifests.searchPaths を使用することを推奨します。SiteConfig ファイルで extraManifests.searchPaths を定義すると、GitOps ZTP パイプラインはサイトのインストール中に ztp-site-generate コンテナーからマニフェストを取得しません。
Siteconfig CR で extraManifestPath と extraManifests.searchPaths の両方を定義した場合は、extraManifests.searchPaths に定義された設定が優先されます。
/extra-manifest の内容を ztp-site-generate コンテナーから抽出し、GIT リポジトリーにプッシュすることを強く推奨します。
9.2. SiteConfig フィルターを使用したカスタムリソースのフィルタリング リンクのコピーリンクがクリップボードにコピーされました!
フィルターを使用すると、SiteConfig カスタムリソース (CR) を簡単にカスタマイズして、GitOps Zero Touch Provisioning (ZTP) パイプラインのインストールフェーズで使用する他の CR を追加または除外できます。
SiteConfig CR の inclusionDefault 値として include または exclude を指定し、さらに、含めたり除外したりする特定の extraManifest RAN CR のリストを指定することもできます。inclusionDefault を include に設定すると、GitOps ZTP パイプラインはインストール中に /source-crs/extra-manifest 内のすべてのファイルを適用します。inclusionDefault を exclude に設定すると、その逆になります。
デフォルトで含まれている /source-crs/extra-manifest フォルダーから個々の CR を除外できます。以下の例では、インストール時に /source-crs/extra-manifest/03-sctp-machine-config-worker.yaml CR を除外するようにカスタムのシングルノード OpenShift SiteConfig CR を設定します。
また、いくつかのオプションのフィルタリングシナリオも説明されています。
前提条件
- 必要なインストール CR とポリシー CR を生成するためにハブクラスターを設定している。
- カスタムサイトの設定データを管理する Git リポジトリーを作成している。リポジトリーはハブクラスターからアクセス可能で、Argo CD アプリケーションのソースリポジトリーとして定義されている必要があります。
手順
GitOps ZTP パイプラインが
03-sctp-machine-config-worker.yamlCR ファイルを適用しないようにするには、SiteConfigCR で次の YAML を適用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow GitOps ZTP パイプラインは、インストール中に
03-sctp-machine-config-worker.yamlCR をスキップします。/source-crs/extra-manifest内の他のすべての CR が適用されます。SiteConfigCR を保存し、変更をサイト設定リポジトリーにプッシュします。GitOps ZTP パイプラインは、
SiteConfigフィルター命令に基づいて適用する CR を監視および調整します。オプション: クラスターのインストール中に GitOps ZTP パイプラインがすべての
/source-crs/extra-manifestCR を適用しないようにするには、SiteConfigCR で次の YAML を適用します。- clusterName: "site1-sno-du" extraManifests: filter: inclusionDefault: exclude- clusterName: "site1-sno-du" extraManifests: filter: inclusionDefault: excludeCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: インストール中にすべての
/source-crs/extra-manifestRAN CR を除外し、代わりにカスタム CR ファイルを含めるには、カスタムSiteConfigCR を編集してカスタムマニフェストフォルダーとincludeファイルを設定します。次に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例は、カスタムフォルダー構造を示しています。
siteconfig ├── site1-sno-du.yaml └── user-custom-manifest └── custom-sctp-machine-config-worker.yamlsiteconfig ├── site1-sno-du.yaml └── user-custom-manifest └── custom-sctp-machine-config-worker.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.3. SiteConfig CR を使用してノードを削除する リンクのコピーリンクがクリップボードにコピーされました!
SiteConfig カスタムリソース (CR) を使用すると、ノードを削除して再プロビジョニングできます。この方法は、手動でノードを削除するよりも効率的です。
前提条件
- 必要なインストールおよびポリシー CR を生成するようにハブクラスターを設定している。
- カスタムサイト設定データを管理できる Git リポジトリーを作成している。リポジトリーはハブクラスターからアクセス可能で、Argo CD アプリケーションのソースリポジトリーとして定義されている必要があります。
手順
SiteConfigCR を更新してbmac.agent-install.openshift.io/remove-agent-and-node-on-delete=trueアノテーションを追加し、変更を Git リポジトリーにプッシュします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
BareMetalHostオブジェクトにアノテーションが付けられていることを確認します。oc get bmh -n <managed-cluster-namespace> <bmh-object> -ojsonpath='{.metadata}' | jq -r '.annotations["bmac.agent-install.openshift.io/remove-agent-and-node-on-delete"]'oc get bmh -n <managed-cluster-namespace> <bmh-object> -ojsonpath='{.metadata}' | jq -r '.annotations["bmac.agent-install.openshift.io/remove-agent-and-node-on-delete"]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
true
trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow SiteConfigCR を更新してcrSuppression.BareMetalHostアノテーションを含めることで、BareMetalHostCR の生成を抑制します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
変更を Git リポジトリーにプッシュし、プロビジョニング解除が開始するまで待ちます。
BareMetalHostCR のステータスがdeprovisioningに変更されるはずです。BareMetalHostのプロビジョニング解除が完了し、完全に削除されるまで待ちます。
検証
次のコマンドを実行して、ワーカーノードの
BareMetalHostおよびAgentCR がハブクラスターから削除されていることを確認します。oc get bmh -n <cluster-ns>
$ oc get bmh -n <cluster-ns>Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get agent -n <cluster-ns>
$ oc get agent -n <cluster-ns>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、スポーククラスターからノードレコードが削除されたことを確認します。
oc get nodes
$ oc get nodesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記シークレットを操作している場合は、シークレットを削除するのが早すぎると、ArgoCD が削除後に再同期を完了するためにシークレットを必要とするため、問題が発生する可能性があります。現在の ArgoCD 同期が完了したら、ノードのクリーンアップ後にのみシークレットを削除します。
次のステップ
ノードを再プロビジョニングするには、以前に SiteConfig に追加された変更を削除し、変更を Git リポジトリーにプッシュして、同期が完了するまで待機します。これにより、ワーカーノードの BareMetalHost CR が再生成され、ノードの再インストールがトリガーされます。
第10章 PolicyGenerator リソースを使用したクラスターポリシーの管理 リンクのコピーリンクがクリップボードにコピーされました!
10.1. PolicyGenerator リソースを使用したマネージドクラスターポリシーの設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management (RHACM) が PolicyGenerator CR を使用して、プロビジョニングするマネージドクラスターを設定する Policy CR を生成する方法をカスタマイズできます。
ポリシーを管理し、マネージドクラスターにデプロイするには、RHACM と PolicyGenerator CR を使用する方法が推奨されます。つまり、これが理由で PolicyGenTemplate CR の使用が置き換えられます。PolicyGenerator リソースの詳細は、RHACM の Policy Generator のドキュメントを参照してください。
10.1.1. RHACM PolicyGenerator と PolicyGenTemplate リソースのパッチ適用の比較 リンクのコピーリンクがクリップボードにコピーされました!
PolicyGenerator カスタムリソース (CR) と PolicyGenTemplate CR を GitOps ZTP で使用して、マネージドクラスターの RHACM ポリシーを生成できます
GitOps ZTP を使用して OpenShift Container Platform リソースにパッチを適用する場合、PolicyGenTemplate CR よりも PolicyGenerator CR を使用する方が利点があります。RHACM PolicyGenerator API を使用すると、PolicyGenTemplate リソースでは不可能な、リソースにパッチを適用する一般的な方法が提供されます。
PolicyGenerator API は、Open Cluster Management 標準の一部ですが、PolicyGenTemplate API はその一部ではありません。次の表では、PolicyGenerator と PolicyGenTemplate リソースのパッチ適用および配置ストラテジーの比較を説明します。
PolicyGenTemplate CR を使用してポリシーを管理し、マネージドクラスターにデプロイすることは、OpenShift Container Platform の今後のリリースでは非推奨になります。同等の機能および改善された機能は、Red Hat Advanced Cluster Management (RHACM) および PolicyGenerator CR を使用する場合に利用できます。
PolicyGenerator リソースの詳細は、RHACM の ポリシージェネレーターの統合 ドキュメントを参照してください。
| PolicyGenerator のパッチ適用 | PolicyGenTemplate のパッチ適用 |
|---|---|
| リソースのマージには Kustomize ストラテジーマージを使用します。詳細は、Kustomize を使用した Kubernetes オブジェクトの宣言的管理 を参照してください。 | 変数をパッチで定義された値に置き換えることによって機能します。これは Kustomize マージストラテジーよりも柔軟性が低くなります。 |
|
|
|
| パッチ適用のみに依存し、埋め込み変数の置換は必要ありません。 | パッチで定義された変数値を上書きします。 |
| マージパッチ内のリストのマージはサポートされません。マージパッチ内のリストの置き換えはサポートされています。 | リストのマージと置換は制限付きでサポートされており、リスト内の 1 つのオブジェクトのみをマージできます。 |
|
現在、リソースのパッチ適用に OpenAPI 仕様 はサポートされていません。つまり、 | フィールドと値をパッチで定義された値に置き換えることによって機能します。 |
|
スキーマに従わないコンテンツをマージするには、パッチ内で |
ソース CR で定義されたフィールドと値を、パッチで定義された値 (例: |
|
参照ソース CR で定義された |
参照ソース CR で定義された |
10.1.2. PolicyGenerator CRD について リンクのコピーリンクがクリップボードにコピーされました!
PolicyGenerator カスタムリソース定義 (CRD) は、PolicyGen ポリシージェネレーターに、クラスター設定に含めるカスタムリソース (CR)、生成されたポリシーに CR を統合する方法、およびオーバーレイコンテンツで更新する必要がある CR 内の項目を指示します。
次の例は、ztp-site-generate 参照コンテナーから抽出された PolicyGenerator CR (acm-common-du-ranGen.yaml) を示しています。acm-common-du-ranGen.yaml ファイルは、2 つの Red Hat Advanced Cluster Management (RHACM) ポリシーを定義します。ポリシーは、CR 内の policyName の一意の値ごとに 1 つずつ、設定 CR のコレクションを管理します。acm-common-du-ranGen.yaml は、policyDefaults.placement.labelSelector セクションにリストされているラベルに基づいて、ポリシーをクラスターにバインドするための単一の配置バインディングと配置ルールを作成します。
PolicyGenerator CR の例 - acm-common-ranGen.yaml
PolicyGenerator CR は、任意の数の CR を含めて構築できます。次の例の CR をハブクラスターに適用して、単一の CR を含むポリシーを生成します。
ソースファイル PtpConfigSlave.yaml を例として使用すると、ファイルは PtpConfig CR を定義します。PtpConfigSlave サンプルの生成ポリシーは group-du-sno-config-policy という名前です。生成された group-du-sno-config-policy に定義される PtpConfig CR は du-ptp-slave という名前です。PtpConfigSlave.yaml で定義された spec は、du-ptp-slave の下に、ソースファイルで定義された他の spec 項目と共に配置されます。
次の例は、group-du-sno-config-policy CR を示しています。
10.1.3. PolicyGenerator CR をカスタマイズする際の推奨事項 リンクのコピーリンクがクリップボードにコピーされました!
サイト設定の PolicyGenerator カスタムリソース (CR) をカスタマイズするときは、以下のベストプラクティスを考慮してください。
-
必要な数のポリシーを使用します。使用するポリシーが少ないほど、必要なリソースが少なくなります。追加のポリシーごとに、ハブクラスターとデプロイされたマネージドクラスターの CPU 負荷が増加します。CR は
PolicyGeneratorCR のpolicyNameフィールドに基づいてポリシーに統合されます。同じPolicyGenerator内でpolicyNameの値が同じ CR は、シングルポリシーで管理されます。 -
非接続環境では、すべての Operator を含む単一のインデックスとしてレジストリーを設定することにより、すべての Operator に対して単一のカタログソースを使用します。マネージドクラスターに
CatalogSourceCR を追加するたびに、CPU 使用率が増加します。 -
MachineConfigCR は、インストール時に適用されるようにSiteConfigCR にextraManifestsとして組み込む必要があります。これにより、クラスターがアプリケーションをデプロイする準備ができるまで全体的な時間がかかる可能性があります。 -
PolicyGeneratorCR は、チャネルフィールドをオーバーライドして、目的のバージョンを明示的に識別する必要があります。これにより、アップグレード時にソース CR が変更されても、生成されたサブスクリプションが更新されないようになります。 -
policyDefaults.consolidateManifestsのデフォルト設定はtrueです。これは DU プロファイルに推奨される設定です。falseに設定すると、大規模なデプロイメントに影響する可能性があります。 -
policyDefaults.orderPoliciesのデフォルト設定はfalseです。これは DU プロファイルに推奨される設定です。クラスターのインストールが完了し、クラスターがReadyになると、TALM はこのクラスターに対応するClusterGroupUpgradeCR を作成します。ClusterGroupUpgradeCR にはran.openshift.io/ztp-deploy-waveアノテーションで定義され、順序付けされたポリシーのリストが含まれています。PolicyGeneratorCR を使用してポリシーの順序を変更すると、競合が発生し、設定が適用されない可能性があります。
ハブクラスターで多数のスポーククラスターを管理する場合は、ポリシーの数を最小限に抑えてリソースの消費を減らします。
複数のコンフィギュレーション CR を 1 つまたは限られた数のポリシーにグループ化することは、ハブクラスター上のポリシーの総数を減らすための 1 つの方法です。サイト設定の管理に共通、グループ、サイトというポリシーの階層を使用する場合は、サイト固有の設定を 1 つのポリシーにまとめることが特に重要である。
10.1.4. RAN デプロイメント用の PolicyGenerator CR リンクのコピーリンクがクリップボードにコピーされました!
PolicyGenerator カスタムリソース (CR) を使用し、GitOps Zero Touch Provisioning (ZTP) パイプラインを使用してクラスターに適用される設定をカスタマイズします。PolicyGenerator CR を使用すると、クラスター群の設定 CR のセットを管理するための 1 つ以上のポリシーを生成できます。PolicyGenerator CR は、マネージド CR のセットを識別し、それらをポリシーにバンドルして、それらの CR をラップするポリシーをビルドし、ラベルバインディングルールを使用してポリシーをクラスターに関連付けます。
GitOps ZTP コンテナーから取得した参照設定は、RAN (Radio Access Network) 分散ユニット (DU) アプリケーションに典型的な厳しいパフォーマンスとリソース利用制約をクラスターが確実にサポートできるように、重要な機能とノードのチューニング設定のセットを提供するように設計されています。ベースライン設定の変更または省略は、機能の可用性、パフォーマンス、およびリソースの利用に影響を与える可能性があります。参照 PolicyGenerator CR をベースに使用して、お客様のサイト要件に合わせた設定ファイルの階層を作成します。
RAN DU クラスター設定に定義されているベースライン PolicyGenerator CR は、GitOps ZTP ztp-site-generate コンテナーから抽出することが可能です。詳細は、「GitOps ZTP サイト設定リポジトリーの準備」を参照してください。
PolicyGenerator CR は、./out/argocd/example/acmpolicygenerator/ フォルダーにあります。参照アーキテクチャーには、common、group、および site 固有の設定 CR があります。各 PolicyGenerator CR は、./out/source-crs フォルダーにある他の CR を参照します。
以下で、RAN クラスター設定に関連する PolicyGenerator CR を説明します。シングルノード、3 ノードのコンパクト、および標準のクラスター設定の違いに対応するために、グループ PolicyGenerator CR にバリアントが提供されています。同様に、シングルノードクラスターとマルチノード (コンパクトまたはスタンダード) クラスターにも、サイト固有の設定バリエーションが提供されています。デプロイメントに関連するグループおよびサイト固有の設定バリアントを使用します。
| PolicyGenerator CR | 説明 |
|---|---|
|
| マルチノードクラスターに適用される一連の CR が含まれています。これらの CR は、RAN インストールに典型的な SR-IOV 機能を設定します。 |
|
| シングルノード OpenShift クラスターに適用される一連の CR が含まれています。これらの CR は、RAN インストールに典型的な SR-IOV 機能を設定します。 |
|
| マルチノードクラスターに適用される共通の RAN ポリシー設定のセットが含まれています。 |
|
| すべてのクラスターに適用される共通の RAN CR のセットが含まれています。これらの CR は、RAN の典型的なクラスター機能とベースラインクラスターのチューニングを提供する Operator のセットをサブスクライブします。 |
|
| 3 ノードクラスター用の RAN ポリシーのみが含まれています。 |
|
| シングルノードクラスター用の RAN ポリシーのみが含まれています。 |
|
| 標準的な 3 つのコントロールプレーンクラスターの RAN ポリシーが含まれています。 |
|
|
|
|
|
標準クラスターに必要なさまざまなポリシーを生成するために使用される |
|
|
シングルノード OpenShift クラスターに必要なさまざまなポリシーを生成するために使用される |
10.1.5. PolicyGenerator CR を使用したマネージドクラスターのカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
次の手順を使用して、GitOps Zero Touch Provisioning (ZTP) パイプラインを使用してプロビジョニングするマネージドクラスターに適用されるポリシーをカスタマイズします。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。 - 必要なインストール CR とポリシー CR を生成するためにハブクラスターを設定している。
- カスタムサイトの設定データを管理する Git リポジトリーを作成している。リポジトリーはハブクラスターからアクセス可能で、Argo CD アプリケーションのソースリポジトリーとして定義されている必要があります。
手順
サイト固有の設定 CR 用の
PolicyGeneratorCR を作成します。-
out/argocd/example/acmpolicygenerator/フォルダーから CR に適した例 (acm-example-sno-site.yamlまたはacm-example-multinode-site.yamlなど) を選択します。 サンプルファイルの
policyDefaults.placement.labelSelectorフィールドを、SiteConfigCR に含まれるサイト固有のラベルと一致するように変更します。サンプルのSiteConfigファイルでは、サイト固有のラベルはsites: example-snoです。注記PolicyGeneratorのpolicyDefaults.placement.labelSelectorフィールドで定義されているラベルが、関連するマネージドクラスターのSiteConfigCR で定義されているラベルに対応していることを確認します。- サンプルファイルの内容を目的の設定に合わせて変更します。
-
オプション: クラスター群全体に適用される一般的な設定 CR の
PolicyGeneratorCR を作成します。-
out/argocd/example/acmpolicygenerator/フォルダーから CR に適切な例 (acm-common-ranGen.yamlなど) を選択します。 - 必要な設定に合わせてサンプルファイルの内容を変更します。
-
オプション: クラスター群の特定のグループに適用されるグループ設定 CR の
PolicyGeneratorCR を作成します。オーバーレイド仕様ファイルの内容が必要な終了状態と一致することを確認します。参考までに、
out/source-crsディレクトリーには、PolicyGenerator テンプレートで含めたりオーバーレイしたりできる source-crs の完全なリストが含まれています。注記クラスターの特定の要件に応じて、クラスターのタイプごとに 1 つ以上のグループポリシーが必要になる場合があります。特に、サンプルのグループポリシーにはそれぞれ単一の
PerformancePolicy.yamlファイルがあり、それらのクラスターが同一のハードウェア設定で構成されている場合にのみ、クラスターのセット全体で共有できることを考慮すると、これが当てはまります。-
out/argocd/example/acmpolicygenerator/フォルダーから CR に適切な例 (acm-group-du-sno-ranGen.yamlなど) を選択します。 - 必要な設定に合わせてサンプルファイルの内容を変更します。
-
-
オプション: GitOps ZTP のインストールとデプロイされたクラスターの設定が完了したときに通知するバリデーター通知ポリシー
PolicyGeneratorCR を作成します。詳細は、「バリデーター通知ポリシーの作成」を参照してください。 サンプルの
out/argocd/example/acmpolicygenerator//ns.yamlファイルと同様の YAML ファイルですべてのポリシー namespace を定義します。重要NamespaceCR をPolicyGeneratorCR と同じファイルに含めないでください。-
out/argocd/example/acmpolicygenerator/kustomization.yamlに示されている例と同様に、PolicyGeneratorCR とNamespaceCR を、ジェネレーターセクションのkustomization.yamlファイルに追加します。 PolicyGeneratorCR、NamespaceCR、および関連するkustomization.yamlファイルを Git リポジトリーにコミットし、変更をプッシュします。ArgoCD パイプラインが変更を検出し、マネージドクラスターのデプロイを開始します。変更を
SiteConfigCR とPolicyGeneratorCR に同時にプッシュできます。
10.1.6. マネージドクラスターポリシーのデプロイメントの進行状況の監視 リンクのコピーリンクがクリップボードにコピーされました!
ArgoCD パイプラインは、Git の PolicyGenerator CR を使用して RHACM ポリシーを生成し、ハブクラスターに同期します。アシストサービスによってマネージドクラスターに OpenShift Container Platform がインストールされた後、マネージドクラスターのポリシー同期の進行状況を監視できます。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。
手順
Topology Aware Lifecycle Manager (TALM) は、クラスターにバインドされている設定ポリシーを適用します。
クラスターのインストールが完了し、クラスターが
Readyになると、ran.openshift.io/ztp-deploy-wave annotationsで定義された順序付きポリシーのリストで、このクラスターに対応するClusterGroupUpgradeCR が TALM により自動的に作成されます。クラスターのポリシーは、ClusterGroupUpgradeCR に記載されている順序で適用されます。以下のコマンドを使用して、設定ポリシー調整のハイレベルの進捗を監視できます。
export CLUSTER=<clusterName>
$ export CLUSTER=<clusterName>Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get clustergroupupgrades -n ztp-install $CLUSTER -o jsonpath='{.status.conditions[-1:]}' | jq$ oc get clustergroupupgrades -n ztp-install $CLUSTER -o jsonpath='{.status.conditions[-1:]}' | jqCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow RHACM ダッシュボードまたはコマンドラインを使用して、詳細なクラスターポリシーのコンプライアンスステータスを監視できます。
ocを使用してポリシーのコンプライアンスを確認するには、次のコマンドを実行します。oc get policies -n $CLUSTER
$ oc get policies -n $CLUSTERCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow RHACM Web コンソールからポリシーのステータスを確認するには、次のアクションを実行します。
- ガバナンス → ポリシーの検索 をクリックします。
- クラスターポリシーをクリックして、ステータスを確認します。
すべてのクラスターポリシーが準拠すると、クラスターの GitOps ZTP のインストールと設定が完了します。ztp-done ラベルがクラスターに追加されます。
参照設定では、準拠する最終的なポリシーは、*-du-validator-policy ポリシーで定義されたものです。このポリシーは、クラスターに準拠する場合、すべてのクラスター設定、Operator のインストール、および Operator 設定が完了します。
10.1.7. 設定変更のための再起動の調整 リンクのコピーリンクがクリップボードにコピーされました!
遅延チューニング変更などの設定変更で再起動が必要な場合、Topology Aware Lifecycle Manager (TALM) を使用して、一連のスポーククラスター全体で再起動を調整できます。再起動ポリシーが適用されると、TALM は選択したクラスター上の対象の MachineConfigPool 内のすべてのノードを再起動します。
個々の変更ごとにノードを再起動する代わりに、ポリシーを通じてすべての設定の更新を適用してから、単一の調整された再起動をトリガーできます。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。 - TALM をデプロイして設定した。
手順
PolicyGeneratorカスタムリソース (CR) を作成して、設定ポリシーを生成します。次のいずれかのサンプルマニフェストを使用できます。-
out/argocd/example/acmpolicygenerator/acm-example-sno-reboot -
out/argocd/example/acmpolicygenerator/acm-example-multinode-reboot
-
再起動するクラスターをターゲットにするには、
PolicyGeneratorCR のpolicyDefaults.placement.labelSelectorフィールドを更新します。ユースケースに応じて、必要な場合は他のフィールドを変更します。延期されたチューニング変更を適用するために再起動を調整する場合は、再起動ポリシーの
MachineConfigPoolがTunedオブジェクトのspec.recommendフィールドに指定された値と一致していることを確認します。-
PolicyGeneratorCR を適用して、設定ポリシーの設定と適用を行います。詳細な手順は、「PolicyGenerator CR を使用してマネージドクラスターをカスタマイズする」を参照してください。 ArgoCD がポリシーの同期を完了したら、
ClusterGroupUpgrade(CGU) CR を作成して適用します。CGU カスタムリソース設定の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
CGU カスタムリソースを適用すると、TALM は設定ポリシーを順番にロールアウトします。すべてのポリシーに準拠すると、再起動ポリシーが適用され、指定された
MachineConfigPool内のすべてのノードの再起動がトリガーされます。
検証
CGU のロールアウトステータスを監視します。
ステータスを確認することで、ハブ上の CGU カスタムリソースのロールアウトを監視できます。次のコマンドを実行して、再起動のロールアウトが成功したことを確認します。
oc get cgu -A
oc get cgu -ACopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAMESPACE NAME AGE STATE DETAILS default reboot 1d Completed All clusters are compliant with all the managed policies
NAMESPACE NAME AGE STATE DETAILS default reboot 1d Completed All clusters are compliant with all the managed policiesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 特定のノードで再起動が成功したことを確認します。
特定のノードで再起動が成功したことを確認するには、次のコマンドを実行して、ノードの
MachineConfigPool(MCP) のステータスを確認します。oc get mcp master
oc get mcp masterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-be5785c3b98eb7a1ec902fef2b81e865 True False False 3 3 3 0 72d
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-be5785c3b98eb7a1ec902fef2b81e865 True False False 3 3 3 0 72dCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.1.8. 設定ポリシー CR の生成の検証 リンクのコピーリンクがクリップボードにコピーされました!
Policy カスタムリソース (CR) は、作成元の PolicyGenerator と同じ namespace に生成されます。以下のコマンドを使用して示すように、ztp-common、ztp-group、または ztp-site ベースのいずれであるかにかかわらず、PolicyGenerator から生成されたすべてのポリシー CR に同じトラブルシューティングフローが適用されます。
export NS=<namespace>
$ export NS=<namespace>
oc get policy -n $NS
$ oc get policy -n $NS
予想される policy-wrapped CR のセットが表示されるはずです。
ポリシーの同期に失敗した場合は、以下のトラブルシューティング手順を使用します。
手順
ポリシーの詳細情報を表示するには、次のコマンドを実行します。
oc describe -n openshift-gitops application policies
$ oc describe -n openshift-gitops application policiesCopy to Clipboard Copied! Toggle word wrap Toggle overflow Status: Conditions:の有無を確認し、エラーログを表示します。たとえば、無効なsourceFileエントリーをfileName:に設定すると、以下次に示すエラーが生成されます。Status: Conditions: Last Transition Time: 2021-11-26T17:21:39Z Message: rpc error: code = Unknown desc = `kustomize build /tmp/https___git.com/ran-sites/policies/ --enable-alpha-plugins` failed exit status 1: 2021/11/26 17:21:40 Error could not find test.yaml under source-crs/: no such file or directory Error: failure in plugin configured via /tmp/kust-plugin-config-52463179; exit status 1: exit status 1 Type: ComparisonErrorStatus: Conditions: Last Transition Time: 2021-11-26T17:21:39Z Message: rpc error: code = Unknown desc = `kustomize build /tmp/https___git.com/ran-sites/policies/ --enable-alpha-plugins` failed exit status 1: 2021/11/26 17:21:40 Error could not find test.yaml under source-crs/: no such file or directory Error: failure in plugin configured via /tmp/kust-plugin-config-52463179; exit status 1: exit status 1 Type: ComparisonErrorCopy to Clipboard Copied! Toggle word wrap Toggle overflow Status: Sync:をチェックします。Status: Conditions:: でログエラーが発生した場合Status: Sync:にUnknownまたはErrorと表示されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Advanced Cluster Management (RHACM) が
ManagedClusterオブジェクトにポリシーが適用されることを認識すると、ポリシー CR オブジェクトがクラスターネームスペースに適用されます。ポリシーがクラスターネームスペースにコピーされたかどうかを確認します。oc get policy -n $CLUSTER
$ oc get policy -n $CLUSTERCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow RHACM は、適用可能なすべてのポリシーをクラスターの namespace にコピーします。コピーされたポリシー名の形式は、
<PolicyGenerator.Namespace>.<PolicyGenerator.Name>-<policyName>です。クラスター namespace にコピーされないポリシーの配置ルールを確認します。これらのポリシーの
PlacementのmatchSelectorは、ManagedClusterオブジェクトのラベルと一致する必要があります。oc get Placement -n $NS
$ oc get Placement -n $NSCopy to Clipboard Copied! Toggle word wrap Toggle overflow Placement名は、以下のコマンドを使用して、不足しているポリシー (common、group、または site) に適した名前であることに注意してください。oc get Placement -n $NS <placement_rule_name> -o yaml
$ oc get Placement -n $NS <placement_rule_name> -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - status-decisions にはクラスター名が含まれている必要があります。
-
spec の
matchSelectorの key-value ペアは、マネージドクラスター上のラベルと一致する必要があります。
以下のコマンドを使用して、
ManagedClusterオブジェクトのラベルを確認します。oc get ManagedCluster $CLUSTER -o jsonpath='{.metadata.labels}' | jq$ oc get ManagedCluster $CLUSTER -o jsonpath='{.metadata.labels}' | jqCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを使用して、どのポリシーが準拠しているかを確認します。
oc get policy -n $CLUSTER
$ oc get policy -n $CLUSTERCopy to Clipboard Copied! Toggle word wrap Toggle overflow Namespace、OperatorGroup、およびSubscriptionポリシーが準拠しているが Operator 設定ポリシーが該当しない場合、Operator はマネージドクラスターにインストールされていない可能性があります。このため、スポークに CRD がまだ適用されていないため、Operator 設定ポリシーの適用に失敗します。
10.1.9. ポリシー調整の再開 リンクのコピーリンクがクリップボードにコピーされました!
たとえば、ClusterGroupUpgrade カスタムリソース (CR) がタイムアウトした場合など、予期しないコンプライアンスの問題が発生した場合は、ポリシー調整を再開できます。
手順
ClusterGroupUpgradeCR は、管理クラスターの状態がReadyになった後に Topology Aware Lifecycle Manager によって namespaceztp-installに生成されます。export CLUSTER=<clusterName>
$ export CLUSTER=<clusterName>Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get clustergroupupgrades -n ztp-install $CLUSTER
$ oc get clustergroupupgrades -n ztp-install $CLUSTERCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予期せぬ問題が発生し、設定されたタイムアウト (デフォルトは 4 時間) 内にポリシーが苦情にならなかった場合、
ClusterGroupUpgradeCR のステータスはUpgradeTimedOutと表示されます。oc get clustergroupupgrades -n ztp-install $CLUSTER -o jsonpath='{.status.conditions[?(@.type=="Ready")]}'$ oc get clustergroupupgrades -n ztp-install $CLUSTER -o jsonpath='{.status.conditions[?(@.type=="Ready")]}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow UpgradeTimedOut状態のClusterGroupUpgradeCR は、1 時間ごとにポリシー照合を自動的に再開します。ポリシーを変更した場合は、既存のClusterGroupUpgradeCR を削除して再試行をすぐに開始できます。これにより、ポリシーをすぐに調整する新規ClusterGroupUpgradeCR の自動作成がトリガーされます。oc delete clustergroupupgrades -n ztp-install $CLUSTER
$ oc delete clustergroupupgrades -n ztp-install $CLUSTERCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ClusterGroupUpgrade CR が UpgradeCompleted ステータスで完了し、マネージドクラスターに ztp-done ラベルが適用されている場合は、PolicyGenerator を使用して追加の設定変更が可能な点に注意してください。既存の ClusterGroupUpgrade CR を削除しても、TALM は新規 CR を生成しません。
この時点で、GitOps ZTP はクラスターとの対話を完了しました。それ以降の対話は更新として扱われ、ポリシーの修復のために新しい ClusterGroupUpgrade CR が作成されます。
10.1.10. ポリシーを使用して適用済みマネージドクラスター CR を変更する リンクのコピーリンクがクリップボードにコピーされました!
ポリシーを使用して、マネージドクラスターにデプロイされたカスタムリソース (CR) からコンテンツを削除できます。
PolicyGenerator CR から作成されたすべての Policy CR は、complianceType フィールドがデフォルトで musthave に設定されています。マネージドクラスター上の CR には指定されたコンテンツがすべて含まれているため、コンテンツが削除されていない musthave ポリシーは依然として準拠しています。この設定では、CR からコンテンツを削除すると、TALM はポリシーからコンテンツを削除しますが、そのコンテンツはマネージドクラスター上の CR からは削除されません。
complianceType フィールドを mustonlyhave に設定することで、ポリシーはクラスター上の CR がポリシーで指定されている内容と完全に一致するようにします。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。 - RHACM を実行しているハブクラスターからマネージドクラスターをデプロイしている。
- ハブクラスターに Topology Aware Lifecycle Manager がインストールされている。
手順
影響を受ける CR から不要になったコンテンツを削除します。この例では、
SriovOperatorConfigCR からdisableDrain: false行が削除されました。CR の例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow acm-group-du-sno-ranGen.yamlファイルで、影響を受けるポリシーのcomplianceTypeをmustonlyhaveに変更します。サンプル YAML
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ClusterGroupUpdatesCR を作成し、CR の変更を受け取る必要があるクラスターを指定します。ClusterGroupUpdates CR の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して
ClusterGroupUpgradeCR を作成します。oc create -f cgu-remove.yaml
$ oc create -f cgu-remove.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow たとえば適切なメンテナンス期間中などに変更を適用する準備が完了したら、次のコマンドを実行して
spec.enableフィールドの値をtrueに変更します。oc --namespace=default patch clustergroupupgrade.ran.openshift.io/cgu-remove \ --patch '{"spec":{"enable":true}}' --type=merge$ oc --namespace=default patch clustergroupupgrade.ran.openshift.io/cgu-remove \ --patch '{"spec":{"enable":true}}' --type=mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
以下のコマンドを実行してポリシーのステータスを確認します。
oc get <kind> <changed_cr_name>
$ oc get <kind> <changed_cr_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAMESPACE NAME REMEDIATION ACTION COMPLIANCE STATE AGE default cgu-ztp-group.group-du-sno-config-policy enforce 17m default ztp-group.group-du-sno-config-policy inform NonCompliant 15h
NAMESPACE NAME REMEDIATION ACTION COMPLIANCE STATE AGE default cgu-ztp-group.group-du-sno-config-policy enforce 17m default ztp-group.group-du-sno-config-policy inform NonCompliant 15hCopy to Clipboard Copied! Toggle word wrap Toggle overflow ポリシーの
COMPLIANCE STATEがCompliantの場合、CR が更新され、不要なコンテンツが削除されたことを意味します。マネージドクラスターで次のコマンドを実行して、対象クラスターからポリシーが削除されたことを確認します。
oc get <kind> <changed_cr_name>
$ oc get <kind> <changed_cr_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 結果がない場合、CR はマネージドクラスターから削除されます。
10.1.11. GitOps ZTP インストール完了の表示 リンクのコピーリンクがクリップボードにコピーされました!
GitOps Zero Touch Provisioning (ZTP) は、クラスターの GitOps ZTP インストールステータスを確認するプロセスを単純化します。GitOps ZTP ステータスは、クラスターのインストール、クラスター設定、GitOps ZTP 完了の 3 つのフェーズを遷移します。
- クラスターインストールフェーズ
-
クラスターのインストールフェーズは、
ManagedClusterCR のManagedClusterJoinedおよびManagedClusterAvailable条件によって示されます。ManagedClusterCR にこの条件がない場合や、条件がFalseに設定されている場合、クラスターはインストールフェーズに残ります。インストールに関する追加情報は、AgentClusterInstallおよびClusterDeploymentCR から入手できます。詳細は、「GitOps ZTP のトラブルシューティング」を参照してください。 - クラスター設定フェーズ
-
クラスター設定フェーズは、クラスターの
ManagedClusterCR に適用されるztp-runningラベルで示されます。 - GitOps ZTP 完了
クラスターのインストールと設定は、GitOps ZTP 完了フェーズで実行されます。これは、
ztp-runningラベルを削除し、ManagedClusterCR にztp-doneラベルを追加することで表示されます。ztp-doneラベルは、設定が適用され、ベースライン DU 設定が完了したことを示しています。GitOps ZTP 完了状態への変更は、Red Hat Advanced Cluster Management (RHACM) バリデーター通知ポリシーの準拠状態が条件となります。このポリシーは、完了したインストールの既存の基準をキャプチャし、マネージドクラスターの GitOps ZTP プロビジョニングが完了したときにのみ、準拠した状態に移行することを検証するものです。
バリデータ通知ポリシーは、クラスターの設定が完全に適用され、Operator が初期化を完了したことを確認します。ポリシーは以下を検証します。
-
ターゲット
MachineConfigPoolには予想されるエントリーが含まれ、更新が完了しました。全ノードが利用可能で、低下することはありません。 -
SR-IOV Operator は、
syncStatus: Succeededの 1 つ以上のSriovNetworkNodeStateによって示されているように初期化を完了しています。 - PTP Operator デーモンセットが存在する。
-
ターゲット
10.2. PolicyGenerator リソースを使用した高度なマネージドクラスター設定 リンクのコピーリンクがクリップボードにコピーされました!
PolicyGenerator CR を使用して、マネージドクラスターにカスタム機能をデプロイできます。ポリシーを管理し、マネージドクラスターにデプロイするには、RHACM と PolicyGenerator CR を使用する方法が推奨されます。つまり、これが理由で PolicyGenTemplate CR の使用が置き換えられます。PolicyGenerator リソースの詳細は、RHACM の Policy Generator のドキュメントを参照してください。
10.2.1. 追加の変更のクラスターへのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
基本の GitOps Zero Touch Provisioning (ZTP) パイプライン設定以外のクラスター設定を変更する必要がある場合、次の 3 つのオプションを実行できます。
- GitOps ZTP パイプラインの完了後に追加設定を適用する
- GitOps ZTP パイプラインのデプロイが完了すると、デプロイされたクラスターはアプリケーションのワークロードに対応できるようになります。この時点で、Operator を追加インストールし、お客様の要件に応じた設定を適用することができます。追加のコンフィギュレーションがプラットフォームのパフォーマンスや割り当てられた CPU バジェットに悪影響を与えないことを確認する。
- GitOps ZTP ライブラリーにコンテンツを追加する
- GitOps ZTP パイプラインでデプロイするベースソースのカスタムリソース (CR) は、必要に応じてカスタムコンテンツで拡張できます。
- クラスターインストール用の追加マニフェストの作成
- インストール時に余分なマニフェストが適用され、インストール作業を効率化することができます。
追加のソース CR を提供したり、既存のソース CR を変更したりすると、OpenShift Container Platform のパフォーマンスまたは CPU プロファイルに大きな影響を与える可能性があります。
10.2.2. PolicyGenerator CR を使用したソース CR コンテンツのオーバーライド リンクのコピーリンクがクリップボードにコピーされました!
PolicyGenerator カスタムリソース (CR) を使用すると、ztp-site-generate コンテナー内の GitOps プラグインで提供されるベースソース CR の上に追加の設定の詳細をオーバーレイできます。PolicyGenerator CR は、ベース CR への論理的なマージまたはパッチと考えることができます。PolicyGenerator CR を使用して、ベース CR のシングルフィールドを更新するか、ベース CR の内容全体をオーバーレイします。ベース CR にない値の更新やフィールドの挿入が可能です。
以下の手順の例では、acm-group-du-sno-ranGen.yaml ファイルの PolicyGenerator CR に基づいて、参照設定用に生成された PerformanceProfile CR のフィールドを更新する方法を説明します。この手順を元に、PolicyGenerator の他の部分をお客様のご要望に応じて変更してください。
前提条件
- カスタムサイトの設定データを管理する Git リポジトリーを作成している。リポジトリーはハブクラスターからアクセス可能で、Argo CD のソースリポジトリーとして定義されている必要があります。
手順
既存のコンテンツのベースラインソース CR を確認します。参照
PolicyGeneratorCR にリストされているソース CR を GitOps Zero Touch Provisioning (ZTP) コンテナーから抽出し、確認できます。/outフォルダーを作成します。mkdir -p ./out
$ mkdir -p ./outCopy to Clipboard Copied! Toggle word wrap Toggle overflow ソース CR を抽出します。
podman run --log-driver=none --rm registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.20.1 extract /home/ztp --tar | tar x -C ./out
$ podman run --log-driver=none --rm registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.20.1 extract /home/ztp --tar | tar x -C ./outCopy to Clipboard Copied! Toggle word wrap Toggle overflow
./out/source-crs/PerformanceProfile.yamlにあるベースラインPerformanceProfileCR を確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ソース CR のフィールドで
$…を含むものは、PolicyGeneratorCR で提供されない場合、生成された CR から削除されます。acm-group-du-sno-ranGen.yaml参照ファイル内のPerformanceProfileのPolicyGeneratorエントリーを更新します。以下の例のPolicyGeneratorCR スタンザは、適切な CPU 仕様を指定し、hugepagesを設定して、globallyDisableIrqLoadBalancingを false に設定する新しいフィールドを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Git で
PolicyGenerator変更をコミットし、GitOps ZTP argo CD アプリケーションによって監視される Git リポジトリーにプッシュします。出力例
GitOps ZTP アプリケーションは、生成された
PerformanceProfileCR を含む RHACM ポリシーを生成します。その CR の内容は、PolicyGeneratorのPerformanceProfileエントリーのmetadataおよびspec内容をソース CR にマージすることによって生成されます。作成される CR には以下のコンテンツが含まれます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ztp-site-generate コンテナーからデプロイメントした /source-crs フォルダーでは、$ 構文が暗示するテンプレート置換は使用されません。むしろ、policyGen ツールが文字列の $ 接頭辞を認識し、関連する PolicyGenerator CR でそのフィールドの値を指定しない場合、そのフィールドは出力 CR から完全に省略されます。
例外として、/source-crs YAML ファイル内の $mcp 変数は、PolicyGenerator CR から mcp の指定値で代用されます。たとえば、example/acmpolicygenerator/acm-group-du-standard-ranGen.yaml では、mcp の値は worker です。
spec:
bindingRules:
group-du-standard: ""
mcp: "worker"
spec:
bindingRules:
group-du-standard: ""
mcp: "worker"
policyGen ツールは、$mcp のインスタンスを出力 CR の worker に置き換えます。
10.2.3. GitOps ZTP パイプラインへのカスタムコンテンツの追加 リンクのコピーリンクがクリップボードにコピーされました!
GitOps ZTP パイプラインに新しいコンテンツを追加するには、次の手順を実行します。
手順
-
PolicyGeneratorカスタムリソース (CR) のkustomization.yamlファイルが含まれるディレクトリーに、source-crsという名前のサブディレクトリーを作成します。 次の例に示すように、ユーザー提供の CR を
source-crsサブディレクトリーに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
source-crsサブディレクトリーは、kustomization.yamlファイルと同じディレクトリーにある必要があります。
必要な
PolicyGeneratorCR を更新して、source-crs/custom-crsおよびsource-crs/elasticsearchディレクトリーに追加したコンテンツへの参照を含めます。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Git で
PolicyGenerator変更をコミットしてから、GitOps ZTP Argo CD ポリシーアプリケーションが監視する Git リポジトリーにプッシュします。 変更された
PolicyGeneratorを含めるようにClusterGroupUpgradeCR を更新し、cgu-test.yamlとして保存します。次の例は、生成されたcgu-test.yamlファイルを示しています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、更新された
ClusterGroupUpgradeCR を適用します。oc apply -f cgu-test.yaml
$ oc apply -f cgu-test.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、更新が成功したことを確認します。
oc get cgu -A
$ oc get cgu -ACopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAMESPACE NAME AGE STATE DETAILS ztp-clusters custom-source-cr 6s InProgress Remediating non-compliant policies ztp-install cluster1 19h Completed All clusters are compliant with all the managed policies
NAMESPACE NAME AGE STATE DETAILS ztp-clusters custom-source-cr 6s InProgress Remediating non-compliant policies ztp-install cluster1 19h Completed All clusters are compliant with all the managed policiesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2.4. PolicyGenerator CR のポリシーコンプライアンス評価タイムアウトの設定 リンクのコピーリンクがクリップボードにコピーされました!
ハブクラスターにインストールされた Red Hat Advanced Cluster Management (RHACM) を使用して、マネージドクラスターが適用されたポリシーに準拠しているかどうかを監視および報告します。RHACM は、ポリシーテンプレートを使用して、定義済みのポリシーコントローラーとポリシーを適用します。ポリシーコントローラーは Kubernetes のカスタムリソース定義 (CRD) インスタンスです。
PolicyGenerator カスタムリソース (CR) を使用して、デフォルトのポリシー評価間隔をオーバーライドできます。RHACM が適用されたクラスターポリシーを再評価する前に、ConfigurationPolicy CR がポリシー準拠または非準拠の状態を維持できる期間を定義する期間設定を設定します。
GitOps Zero Touch Provisioning (ZTP) ポリシージェネレーターは、事前定義されたポリシー評価間隔で ConfigurationPolicy CR ポリシーを生成します。noncompliant 状態のデフォルト値は 10 秒です。compliant 状態のデフォルト値は 10 分です。評価間隔を無効にするには、値を never に設定します。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。 - カスタムサイトの設定データを管理する Git リポジトリーを作成している。
手順
PolicyGeneratorCR 内のすべてのポリシーの評価間隔を設定するには、evaluationIntervalフィールドに適切なcompliantとnoncompliant値を設定します。以下に例を示します。policyDefaults: evaluationInterval: compliant: 30m noncompliant: 45spolicyDefaults: evaluationInterval: compliant: 30m noncompliant: 45sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記また、
compliantフィールドとnoncompliantフィールドをneverに設定して、特定の準拠状態に達した後にポリシーの評価を停止することもできます。PolicyGeneratorCR 内の個々のポリシーオブジェクトの評価間隔を設定するには、evaluationIntervalフィールドを追加し、適切な値を設定します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Git リポジトリー内の
PolicyGeneratorCR ファイルをコミットし、変更をプッシュします。
検証
マネージドスポーククラスターポリシーが予想される間隔で監視されていることを確認します。
-
マネージドクラスターで
cluster-admin権限を持つユーザーとしてログインします。 open-cluster-management-agent-addonnamespace で実行されている Pod を取得します。以下のコマンドを実行します。oc get pods -n open-cluster-management-agent-addon
$ oc get pods -n open-cluster-management-agent-addonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE config-policy-controller-858b894c68-v4xdb 1/1 Running 22 (5d8h ago) 10d
NAME READY STATUS RESTARTS AGE config-policy-controller-858b894c68-v4xdb 1/1 Running 22 (5d8h ago) 10dCopy to Clipboard Copied! Toggle word wrap Toggle overflow config-policy-controllerPod のログで、適用されたポリシーが予想される間隔で評価されていることを確認します。oc logs -n open-cluster-management-agent-addon config-policy-controller-858b894c68-v4xdb
$ oc logs -n open-cluster-management-agent-addon config-policy-controller-858b894c68-v4xdbCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
2022-05-10T15:10:25.280Z info configuration-policy-controller controllers/configurationpolicy_controller.go:166 Skipping the policy evaluation due to the policy not reaching the evaluation interval {"policy": "compute-1-config-policy-config"} 2022-05-10T15:10:25.280Z info configuration-policy-controller controllers/configurationpolicy_controller.go:166 Skipping the policy evaluation due to the policy not reaching the evaluation interval {"policy": "compute-1-common-compute-1-catalog-policy-config"}2022-05-10T15:10:25.280Z info configuration-policy-controller controllers/configurationpolicy_controller.go:166 Skipping the policy evaluation due to the policy not reaching the evaluation interval {"policy": "compute-1-config-policy-config"} 2022-05-10T15:10:25.280Z info configuration-policy-controller controllers/configurationpolicy_controller.go:166 Skipping the policy evaluation due to the policy not reaching the evaluation interval {"policy": "compute-1-common-compute-1-catalog-policy-config"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2.5. バリデーターインフォームポリシーを使用した GitOps ZTP クラスターデプロイメントの完了のシグナリング リンクのコピーリンクがクリップボードにコピーされました!
デプロイされたクラスターの GitOps Zero Touch Provisioning (ZTP) のインストールと設定が完了したときに通知するバリデーター通知ポリシーを作成します。このポリシーは、シングルノード OpenShift クラスター、3 ノードクラスター、および標準クラスターのデプロイメントに使用できます。
手順
ソースファイル
validatorCRs/informDuValidator.yamlを含むスタンドアロンのPolicyGeneratorカスタムリソース (CR) を作成します。クラスタータイプごとにスタンドアロンPolicyGeneratorCR が 1 つだけ必要です。たとえば、次の CR は、シングルノード OpenShift クラスターにバリデータ通知ポリシーを適用します。シングルノードクラスターバリデーター通知ポリシー CR の例 (acm-group-du-sno-validator-ranGen.yaml)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Git リポジトリー内の
PolicyGeneratorCR ファイルをコミットし、変更をプッシュします。
10.2.6. PolicyGenerator CR を使用した電源状態の設定 リンクのコピーリンクがクリップボードにコピーされました!
低レイテンシーで高パフォーマンスのエッジデプロイメントでは、C ステートと P ステートを無効にするか制限する必要があります。この設定では、CPU は一定の周波数 (通常は最大ターボ周波数) で実行されます。これにより、CPU が常に最大速度で実行され、高いパフォーマンスと低レイテンシーが実現されます。これにより、ワークロードのレイテンシーが最適化されます。ただし、これは最大の電力消費にもつながり、すべてのワークロードに必要ではない可能性があります。
ワークロードはクリティカルまたは非クリティカルとして分類できます。クリティカルなワークロードでは、高パフォーマンスと低レイテンシーのために C ステートと P ステートの設定を無効にする必要があります。クリティカルでないワークロードでは、C ステートと P ステートの設定を使用して、いくらかのレイテンシーとパフォーマンスを犠牲にします。GitOps Zero Touch Provisioning (ZTP) を使用して、次の 3 つの電源状態を設定できます。
- 高性能モードは、最大の消費電力で超低遅延を提供します。
- パフォーマンスモードは、比較的高い電力消費で低遅延を提供します。
- 省電力は、消費電力の削減と遅延の増加のバランスをとります。
デフォルトの設定は、低遅延のパフォーマンスモードです。
PolicyGenerator カスタムリソース (CR) を使用すると、ztp-site-generate コンテナー内の GitOps プラグインで提供されるベースソース CR の上に追加の設定の詳細をオーバーレイできます。
acm-group-du-sno-ranGen.yaml の PolicyGenerator CR に基づいて、参照設定用に生成された PerformanceProfile CR の workloadHints フィールドを更新して、電源状態を設定します。
次の共通の前提条件は、3 つの電源状態すべての設定に適用されます。
前提条件
- カスタムサイトの設定データを管理する Git リポジトリーを作成している。リポジトリーはハブクラスターからアクセス可能で、Argo CD のソースリポジトリーとして定義されている必要があります。
- 「GitOps ZTP サイト設定リポジトリーの準備」で説明されている手順に従っている。
10.2.6.1. PolicyGenerator CR を使用したパフォーマンスモードの設定 リンクのコピーリンクがクリップボードにコピーされました!
この例に従って、acm-group-du-sno-ranGen.yaml の PolicyGenerator CR に基づき、参照設定用に生成された PerformanceProfile CR の workloadHints フィールドを更新して、パフォーマンスモードを設定します。
パフォーマンスモードは、比較的高い電力消費で低遅延を提供します。
前提条件
- 「低遅延および高パフォーマンスのためのホストファームウェアの設定」のガイダンスに従って、パフォーマンス関連の設定で BIOS を設定している。
手順
パフォーマンスモードを設定するには、
out/argocd/example/acmpolicygenerator//のacm-group-du-sno-ranGen.yaml参照ファイルでPerformanceProfileのPolicyGeneratorエントリーを以下のように更新します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Git で
PolicyGenerator変更をコミットしてから、GitOps ZTP Argo CD アプリケーションによって監視される Git リポジトリーにプッシュします。
10.2.6.2. PolicyGenerator CR を使用した高パフォーマンスモードの設定 リンクのコピーリンクがクリップボードにコピーされました!
この例に従って、acm-group-du-sno-ranGen.yaml の PolicyGenerator CR に基づき、参照設定用に生成された PerformanceProfile CR の workloadHints フィールドを更新して、高パフォーマンスモードを設定します。
高パフォーマンスモードは、最大の消費電力で超低遅延を提供します。
前提条件
- 「低遅延および高パフォーマンスのためのホストファームウェアの設定」のガイダンスに従って、パフォーマンス関連の設定で BIOS を設定している。
手順
高パフォーマンスモードを設定するには、
out/argocd/example/acmpolicygenerator/のacm-group-du-sno-ranGen.yaml参照ファイルでPerformanceProfileのPolicyGeneratorエントリーを次のように更新します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Git で
PolicyGenerator変更をコミットしてから、GitOps ZTP Argo CD アプリケーションによって監視される Git リポジトリーにプッシュします。
10.2.6.3. PolicyGenerator CR を使用した省電力モードの設定 リンクのコピーリンクがクリップボードにコピーされました!
この例に従って、acm-group-du-sno-ranGen.yaml の PolicyGenerator CR に基づき、参照設定用に生成された PerformanceProfile CR の workloadHints フィールドを更新して、省電力モードを設定します。
省電力モードは、消費電力の削減と遅延の増加のバランスをとります。
前提条件
- BIOS で C ステートと OS 制御の P ステートを有効化している。
手順
省電力モードを設定するには、
out/argocd/example/acmpolicygenerator/のacm-group-du-sno-ranGen.yaml参照ファイルでPerformanceProfileのPolicyGeneratorエントリーを次のように更新します。追加のカーネル引数オブジェクトを使用して、省電力モード用に CPU ガバナーを設定することを推奨します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
schedutilガバナーが推奨されますが、ondemandやpowersaveなどの他のガバナーを使用することもできます。
-
Git で
PolicyGenerator変更をコミットしてから、GitOps ZTP Argo CD アプリケーションによって監視される Git リポジトリーにプッシュします。
検証
次のコマンドを使用して、識別されたノードのリストから、デプロイされたクラスター内のワーカーノードを選択します。
oc get nodes
$ oc get nodesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを使用して、ノードにログインします。
oc debug node/<node-name>
$ oc debug node/<node-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <node-name>を、電源状態を確認するノードの名前に置き換えます。/hostをデバッグシェル内の root ディレクトリーとして設定します。デバッグ Pod は、Pod 内の/hostにホストの root ファイルシステムをマウントします。次の例に示すように、ルートディレクトリーを/hostに変更すると、ホストの実行可能パスに含まれるバイナリーを実行できます。chroot /host
# chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、適用された電源状態を確認します。
cat /proc/cmdline
# cat /proc/cmdlineCopy to Clipboard Copied! Toggle word wrap Toggle overflow
予想される出力
-
省電力モードの
intel_pstate=passive。
10.2.6.4. 省電力の最大化 リンクのコピーリンクがクリップボードにコピーされました!
最大の CPU 周波数を制限して、最大の電力節約を実現することを推奨します。最大 CPU 周波数を制限せずに重要でないワークロード CPU で C ステートを有効にすると、重要な CPU の周波数が高くなるため、消費電力の節約の多くが無効になります。
sysfs プラグインフィールドを更新し、リファレンス設定の TunedPerformancePatch CR で max_perf_pct に適切な値を設定することで、電力の節約を最大化します。acm-group-du-sno-ranGen.yaml に基づくこの例では、最大 CPU 周波数を制限するための手順を説明します。
前提条件
- 「PolicyGenerator CR を使用した省電力モードの設定」の説明に従って、省電力モードを設定している。
手順
out/argocd/example/acmpolicygenerator/のacm-group-du-sno-ranGen.yaml参照ファイルで、TunedPerformancePatchのPolicyGeneratorエントリーを更新します。電力を最大限に節約するには、次の例に示すようにmax_perf_pctを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
max_perf_pctは、cpufreqドライバーが設定できる最大周波数を、サポートされている最大 CPU 周波数のパーセンテージとして制御します。この値はすべての CPU に適用されます。サポートされている最大周波数は/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freqで確認できます。開始点として、All Cores Turbo周波数ですべての CPU を制限する割合を使用できます。All Cores Turbo周波数は、コアがすべて使用されているときにすべてのコアが実行される周波数です。
注記省電力を最大化するには、より低い値を設定します。
max_perf_pctの値を低く設定すると、最大 CPU 周波数が制限されるため、消費電力が削減されますが、パフォーマンスに影響を与える可能性もあります。さまざまな値を試し、システムのパフォーマンスと消費電力を監視して、ユースケースに最適な設定を見つけてください。-
Git で
PolicyGenerator変更をコミットしてから、GitOps ZTP Argo CD アプリケーションによって監視される Git リポジトリーにプッシュします。
10.2.7. PolicyGenerator CR を使用した LVM Storage の設定 リンクのコピーリンクがクリップボードにコピーされました!
GitOps Zero Touch Provisioning (ZTP) を使用して、デプロイするマネージドクラスターの論理ボリュームマネージャー (LVM) ストレージを設定できます。
HTTP トランスポートで PTP イベントまたはベアメタルハードウェアイベントを使用する場合、LVM Storage を使用してイベントサブスクリプションを永続化します。
分散ユニットでローカルボリュームを使用する永続ストレージには、Local Storage Operator を使用します。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてログインしている。 - カスタムサイトの設定データを管理する Git リポジトリーを作成している。
手順
新しいマネージドクラスターの LVM Storage を設定するには、
acm-common-ranGen.yamlファイルのpolicies.manifestsに次の YAML を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記Storage LVMO サブスクリプションは非推奨になりました。OpenShift Container Platform の将来のリリースでは、ストレージ LVMO サブスクリプションは利用できなくなります。代わりに、Storage LVMS サブスクリプションを使用する必要があります。
OpenShift Container Platform 4.20 では、LVMO サブスクリプションの代わりに Storage LVMS サブスクリプションを使用できます。LVMS サブスクリプションでは、
acm-common-ranGen.yamlファイルを手動でオーバーライドする必要はありません。Storage LVMS サブスクリプションを使用するには、acm-common-ranGen.yamlファイルのpolicies.manifestsに次の YAML を追加します。- path: source-crs/StorageLVMSubscriptionNS.yaml - path: source-crs/StorageLVMSubscriptionOperGroup.yaml - path: source-crs/StorageLVMSubscription.yaml
- path: source-crs/StorageLVMSubscriptionNS.yaml - path: source-crs/StorageLVMSubscriptionOperGroup.yaml - path: source-crs/StorageLVMSubscription.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 特定のグループまたは個々のサイト設定ファイルの
policies.manifestsにLVMClusterCR を追加します。たとえば、acm-group-du-sno-ranGen.yamlファイルに以下を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow この設定例では、OpenShift Container Platform がインストールされているディスクを除く、使用可能なすべてのデバイスを含むボリュームグループ (
vg1) を作成します。シンプール論理ボリュームも作成されます。- 必要なその他の変更およびファイルをカスタムサイトリポジトリーにマージします。
-
Git で
PolicyGeneratorの変更をコミットしてから、その変更をサイト設定リポジトリーにプッシュし、GitOps ZTP を使用して LVM Storage を新しいサイトにデプロイします。
10.2.8. PolicyGenerator CR を使用した PTP イベントの設定 リンクのコピーリンクがクリップボードにコピーされました!
GitOps ZTP パイプラインを使用して、HTTP トランスポートを使用する PTP イベントを設定できます。
10.2.8.1. HTTP トランスポートを使用する PTP イベントの設定 リンクのコピーリンクがクリップボードにコピーされました!
GitOps Zero Touch Provisioning (ZTP) パイプラインを使用してデプロイしたマネージドクラスター上で、HTTP トランスポートを使用する PTP イベントを設定できます。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてログインしている。 - カスタムサイトの設定データを管理する Git リポジトリーを作成している。
手順
要件に応じて、次の
PolicyGenerator変更をacm-group-du-3node-ranGen.yaml、acm-group-du-sno-ranGen.yaml、またはacm-group-du-standard-ranGen.yamlファイルに適用します。policies.manifestsに、トランスポートホストを設定するPtpOperatorConfigCR ファイルを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記OpenShift Container Platform 4.13 以降では、PTP イベントに HTTP トランスポートを使用するときに、
PtpOperatorConfigリソースのtransportHostフィールドを設定する必要はありません。PTP クロックの種類とインターフェイスに
linuxptpとphc2sysを設定します。たとえば、次の YAML をpolicies.manifestsに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 要件に応じて、
PtpConfigMaster.yamlまたはPtpConfigSlave.yamlを指定できます。acm-group-du-sno-ranGen.yamlまたはacm-group-du-3node-ranGen.yamlに基づいて設定する場合は、PtpConfigSlave.yamlを使用します。 - 2
- デバイス固有のインターフェイス名。
- 3
- PTP 高速イベントを有効にするには、
.spec.sourceFiles.spec.profileのptp4lOptsに--summary_interval -4値を追加する必要があります。 - 4
phc2sysOptsの値が必要です。-mはメッセージをstdoutに出力します。linuxptp-daemonDaemonSetはログを解析し、Prometheus メトリックを生成します。- 5
- オプション:
ptpClockThresholdスタンザが存在しない場合は、ptpClockThresholdフィールドにデフォルト値が使用されます。スタンザは、デフォルトのptpClockThreshold値を示します。ptpClockThreshold値は、PTP マスタークロックが PTP イベントが発生する前に切断されてからの期間を設定します。holdOverTimeoutは、PTP マスタークロックが切断されたときに、PTP クロックイベントの状態がFREERUNに変わるまでの時間値 (秒単位) です。maxOffsetThresholdおよびminOffsetThreshold設定は、CLOCK_REALTIME(phc2sys) またはマスターオフセット (ptp4l) の値と比較するナノ秒単位のオフセット値を設定します。ptp4lまたはphc2sysのオフセット値がこの範囲外の場合、PTP クロックの状態がFREERUNに設定されます。オフセット値がこの範囲内にある場合、PTP クロックの状態がLOCKEDに設定されます。
- 必要なその他の変更およびファイルをカスタムサイトリポジトリーにマージします。
- 変更をサイト設定リポジトリーにプッシュし、GitOps ZTP を使用して PTP 高速イベントを新規サイトにデプロイします。
10.2.9. イメージをローカルにキャッシュするための Image Registry Operator の設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform は、ローカルレジストリーを使用してイメージのキャッシュを管理します。エッジコンピューティングのユースケースでは、クラスターは集中型のイメージレジストリーと通信するときに帯域幅の制限を受けることが多く、イメージのダウンロード時間が長くなる可能性があります。
初期デプロイメント中はダウンロードに時間がかかることは避けられません。時間の経過とともに、予期しないシャットダウンが発生した場合に CRI-O が /var/lib/containers/storage ディレクトリーを消去するリスクがあります。イメージのダウンロード時間が長い場合の対処方法として、GitOps Zero Touch Provisioning (ZTP) を使用してリモートマネージドクラスター上にローカルイメージレジストリーを作成できます。これは、クラスターをネットワークのファーエッジにデプロイするエッジコンピューティングシナリオで役立ちます。
GitOps ZTP を使用してローカルイメージレジストリーをセットアップする前に、リモートマネージドクラスターのインストールに使用する SiteConfig CR でディスクパーティショニングを設定する必要があります。インストール後、PolicyGenerator CR を使用してローカルイメージレジストリーを設定します。次に、GitOps ZTP パイプラインは永続ボリューム (PV) と永続ボリューム要求 (PVC) CR を作成し、imageregistry 設定にパッチを適用します。
ローカルイメージレジストリーは、ユーザーアプリケーションイメージにのみ使用でき、OpenShift Container Platform または Operator Lifecycle Manager Operator イメージには使用できません。
10.2.9.1. SiteConfig を使用したディスクパーティショニングの設定 リンクのコピーリンクがクリップボードにコピーされました!
SiteConfig CR と GitOps Zero Touch Provisioning (ZTP) を使用して、マネージドクラスターのディスクパーティションを設定します。SiteConfig CR のディスクパーティションの詳細は、基になるディスクと一致する必要があります。
この手順はインストール時に完了する必要があります。
前提条件
- Butane をインストールしている。
手順
storage.buファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
storage.buを Ignition ファイルに変換します。butane storage.bu
$ butane storage.buCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
{"ignition":{"version":"3.2.0"},"storage":{"disks":[{"device":"/dev/disk/by-path/pci-0000:01:00.0-scsi-0:2:0:0","partitions":[{"label":"var-lib-containers","sizeMiB":0,"startMiB":250000}],"wipeTable":false}],"filesystems":[{"device":"/dev/disk/by-partlabel/var-lib-containers","format":"xfs","mountOptions":["defaults","prjquota"],"path":"/var/lib/containers","wipeFilesystem":true}]},"systemd":{"units":[{"contents":"# # Generated by Butane\n[Unit]\nRequires=systemd-fsck@dev-disk-by\\x2dpartlabel-var\\x2dlib\\x2dcontainers.service\nAfter=systemd-fsck@dev-disk-by\\x2dpartlabel-var\\x2dlib\\x2dcontainers.service\n\n[Mount]\nWhere=/var/lib/containers\nWhat=/dev/disk/by-partlabel/var-lib-containers\nType=xfs\nOptions=defaults,prjquota\n\n[Install]\nRequiredBy=local-fs.target","enabled":true,"name":"var-lib-containers.mount"}]}}{"ignition":{"version":"3.2.0"},"storage":{"disks":[{"device":"/dev/disk/by-path/pci-0000:01:00.0-scsi-0:2:0:0","partitions":[{"label":"var-lib-containers","sizeMiB":0,"startMiB":250000}],"wipeTable":false}],"filesystems":[{"device":"/dev/disk/by-partlabel/var-lib-containers","format":"xfs","mountOptions":["defaults","prjquota"],"path":"/var/lib/containers","wipeFilesystem":true}]},"systemd":{"units":[{"contents":"# # Generated by Butane\n[Unit]\nRequires=systemd-fsck@dev-disk-by\\x2dpartlabel-var\\x2dlib\\x2dcontainers.service\nAfter=systemd-fsck@dev-disk-by\\x2dpartlabel-var\\x2dlib\\x2dcontainers.service\n\n[Mount]\nWhere=/var/lib/containers\nWhat=/dev/disk/by-partlabel/var-lib-containers\nType=xfs\nOptions=defaults,prjquota\n\n[Install]\nRequiredBy=local-fs.target","enabled":true,"name":"var-lib-containers.mount"}]}}Copy to Clipboard Copied! Toggle word wrap Toggle overflow - JSON Pretty Print などのツールを使用して、出力を JSON 形式に変換します。
出力を
SiteConfigCR の.spec.clusters.nodes.ignitionConfigOverrideフィールドにコピーします。例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記.spec.clusters.nodes.ignitionConfigOverrideフィールドが存在しない場合は、作成します。
検証
インストール中またはインストール後に、次のコマンドを実行して、ハブクラスターで
BareMetalHostオブジェクトにアノテーションが表示されていることを確認します。oc get bmh -n my-sno-ns my-sno -ojson | jq '.metadata.annotations["bmac.agent-install.openshift.io/ignition-config-overrides"]
$ oc get bmh -n my-sno-ns my-sno -ojson | jq '.metadata.annotations["bmac.agent-install.openshift.io/ignition-config-overrides"]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
"{\"ignition\":{\"version\":\"3.2.0\"},\"storage\":{\"disks\":[{\"device\":\"/dev/disk/by-id/wwn-0x6b07b250ebb9d0002a33509f24af1f62\",\"partitions\":[{\"label\":\"var-lib-containers\",\"sizeMiB\":0,\"startMiB\":250000}],\"wipeTable\":false}],\"filesystems\":[{\"device\":\"/dev/disk/by-partlabel/var-lib-containers\",\"format\":\"xfs\",\"mountOptions\":[\"defaults\",\"prjquota\"],\"path\":\"/var/lib/containers\",\"wipeFilesystem\":true}]},\"systemd\":{\"units\":[{\"contents\":\"# Generated by Butane\\n[Unit]\\nRequires=systemd-fsck@dev-disk-by\\\\x2dpartlabel-var\\\\x2dlib\\\\x2dcontainers.service\\nAfter=systemd-fsck@dev-disk-by\\\\x2dpartlabel-var\\\\x2dlib\\\\x2dcontainers.service\\n\\n[Mount]\\nWhere=/var/lib/containers\\nWhat=/dev/disk/by-partlabel/var-lib-containers\\nType=xfs\\nOptions=defaults,prjquota\\n\\n[Install]\\nRequiredBy=local-fs.target\",\"enabled\":true,\"name\":\"var-lib-containers.mount\"}]}}""{\"ignition\":{\"version\":\"3.2.0\"},\"storage\":{\"disks\":[{\"device\":\"/dev/disk/by-id/wwn-0x6b07b250ebb9d0002a33509f24af1f62\",\"partitions\":[{\"label\":\"var-lib-containers\",\"sizeMiB\":0,\"startMiB\":250000}],\"wipeTable\":false}],\"filesystems\":[{\"device\":\"/dev/disk/by-partlabel/var-lib-containers\",\"format\":\"xfs\",\"mountOptions\":[\"defaults\",\"prjquota\"],\"path\":\"/var/lib/containers\",\"wipeFilesystem\":true}]},\"systemd\":{\"units\":[{\"contents\":\"# Generated by Butane\\n[Unit]\\nRequires=systemd-fsck@dev-disk-by\\\\x2dpartlabel-var\\\\x2dlib\\\\x2dcontainers.service\\nAfter=systemd-fsck@dev-disk-by\\\\x2dpartlabel-var\\\\x2dlib\\\\x2dcontainers.service\\n\\n[Mount]\\nWhere=/var/lib/containers\\nWhat=/dev/disk/by-partlabel/var-lib-containers\\nType=xfs\\nOptions=defaults,prjquota\\n\\n[Install]\\nRequiredBy=local-fs.target\",\"enabled\":true,\"name\":\"var-lib-containers.mount\"}]}}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow インストール後、シングルノード OpenShift ディスクのステータスを確認します。
次のコマンドを実行して、シングルノード OpenShift ノードでデバッグセッションを開始します。この手順は、
<node_name>-debugというデバッグ Pod をインスタンス化します。oc debug node/my-sno-node
$ oc debug node/my-sno-nodeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、デバッグシェル内で
/hostをルートディレクトリーとして設定します。デバッグ Pod は、Pod 内の/hostにホストの root ファイルシステムをマウントします。root ディレクトリーを/hostに変更すると、ホストの実行パスに含まれるバイナリーを実行できます。chroot /host
# chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、使用可能なすべてのブロックデバイスに関する情報をリスト表示します。
lsblk
# lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ファイルシステムのディスク領域の使用状況に関する情報を表示します。
df -h
# df -hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2.9.2. PolicyGenerator CR を使用したイメージレジストリーの設定 リンクのコピーリンクがクリップボードにコピーされました!
PolicyGenerator (PGT) CR を使用して、イメージレジストリーを設定するために必要な CR を適用し、imageregistry 設定にパッチを適用します。
前提条件
- マネージドクラスターでディスクパーティションを設定しました。
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。 - GitOps Zero Touch Provisioning (ZTP) で使用するカスタムサイト設定データを管理する Git リポジトリーを作成している。
手順
適切な
PolicyGeneratorCR で、ストレージクラス、永続ボリューム要求、永続ボリューム、およびイメージレジストリー設定を設定します。たとえば、個々のサイトを設定するには、次の YAML をacm-example-sno-site.yamlファイルに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要- fileName: ImageRegistryConfig.yaml設定には、complianceType: mustonlyhaveを設定しないでください。これにより、レジストリー Pod のデプロイが失敗する可能性があります。-
Git で
PolicyGenerator変更をコミットしてから、GitOps ZTP ArgoCD アプリケーションによって監視される Git リポジトリーにプッシュします。
検証
次の手順を使用して、マネージドクラスターのローカルイメージレジストリーに関するエラーをトラブルシューティングします。
マネージドクラスターにログインしているときに、レジストリーへのログインが成功したことを確認します。以下のコマンドを実行します。
マネージドクラスター名をエクスポートします。
cluster=<managed_cluster_name>
$ cluster=<managed_cluster_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow マネージドクラスター
kubeconfigの詳細を取得します。oc get secret -n $cluster $cluster-admin-password -o jsonpath='{.data.password}' | base64 -d > kubeadmin-password-$cluster$ oc get secret -n $cluster $cluster-admin-password -o jsonpath='{.data.password}' | base64 -d > kubeadmin-password-$clusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow クラスター
kubeconfigをダウンロードしてエクスポートします。oc get secret -n $cluster $cluster-admin-kubeconfig -o jsonpath='{.data.kubeconfig}' | base64 -d > kubeconfig-$cluster && export KUBECONFIG=./kubeconfig-$cluster$ oc get secret -n $cluster $cluster-admin-kubeconfig -o jsonpath='{.data.kubeconfig}' | base64 -d > kubeconfig-$cluster && export KUBECONFIG=./kubeconfig-$clusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow - マネージドクラスターからイメージレジストリーへのアクセスを確認します。「レジストリーへのアクセス」を参照してください。
imageregistry.operator.openshift.ioグループインスタンスのConfigCRD がエラーを報告していないことを確認します。マネージドクラスターにログインしているときに、次のコマンドを実行します。oc get image.config.openshift.io cluster -o yaml
$ oc get image.config.openshift.io cluster -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow マネージドクラスターの
PersistentVolumeClaimにデータが入力されていることを確認します。マネージドクラスターにログインしているときに、次のコマンドを実行します。oc get pv image-registry-sc
$ oc get pv image-registry-scCopy to Clipboard Copied! Toggle word wrap Toggle overflow registry*Pod が実行中であり、openshift-image-registrynamespace にあることを確認します。oc get pods -n openshift-image-registry | grep registry*
$ oc get pods -n openshift-image-registry | grep registry*Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
cluster-image-registry-operator-68f5c9c589-42cfg 1/1 Running 0 8d image-registry-5f8987879-6nx6h 1/1 Running 0 8d
cluster-image-registry-operator-68f5c9c589-42cfg 1/1 Running 0 8d image-registry-5f8987879-6nx6h 1/1 Running 0 8dCopy to Clipboard Copied! Toggle word wrap Toggle overflow マネージドクラスターのディスクパーティションが正しいことを確認します。
マネージドクラスターへのデバッグシェルを開きます。
oc debug node/sno-1.example.com
$ oc debug node/sno-1.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow lsblkを実行して、ホストディスクパーティションを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
/var/imageregistryは、ディスクが正しくパーティショニングされていることを示します。
10.3. PolicyGenerator リソースと TALM を使用した非接続環境でのマネージドクラスターの更新 リンクのコピーリンクがクリップボードにコピーされました!
Topology Aware Lifecycle Manager (TALM) を使用すると、GitOps Zero Touch Provisioning (ZTP) と Topology Aware Lifecycle Manager (TALM) を使用してデプロイしたマネージドクラスターのソフトウェアライフサイクルを管理できます。TALM は、Red Hat Advanced Cluster Management (RHACM) PolicyGenerator ポリシーを使用して、ターゲットクラスターに適用される変更を管理および制御します。
GitOps ZTP での PolicyGenerator リソースの使用は、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
10.3.1. 非接続環境の設定 リンクのコピーリンクがクリップボードにコピーされました!
TALM は、プラットフォームと Operator の更新の両方を実行できます。
TALM を使用して非接続クラスターを更新する前に、ミラーレジストリーで更新するプラットフォームイメージおよび Operator イメージの両方をミラーリングする必要があります。イメージをミラーリングするには以下の手順を実行します。
プラットフォームの更新では、以下の手順を実行する必要があります。
必要な OpenShift Container Platform イメージリポジトリーをミラーリングします。「OpenShift Container Platform イメージリポジトリーのミラーリング」(関連情報のリンクを参照) の手順に従って、目的のプラットフォームイメージがミラーリングされていることを確認します。
imageContentSources.yamlファイルのimageContentSourcesセクションの内容を保存します。出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ミラーリングされた目的のプラットフォームイメージのイメージシグネチャーを保存します。プラットフォームを更新するには、
PolicyGeneratorCR にイメージ署名を追加する必要があります。イメージ署名を取得するには、次の手順を実行します。以下のコマンドを実行して、目的の OpenShift Container Platform タグを指定します。
OCP_RELEASE_NUMBER=<release_version>
$ OCP_RELEASE_NUMBER=<release_version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、クラスターのアーキテクチャーを指定します。
ARCHITECTURE=<cluster_architecture>
$ ARCHITECTURE=<cluster_architecture>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
x86_64、aarch64、s390x、またはppc64leなど、クラスターのアーキテクチャーを指定します。
次のコマンドを実行して、Quay からリリースイメージダイジェストを取得します。
DIGEST="$(oc adm release info quay.io/openshift-release-dev/ocp-release:${OCP_RELEASE_NUMBER}-${ARCHITECTURE} | sed -n 's/Pull From: .*@//p')"$ DIGEST="$(oc adm release info quay.io/openshift-release-dev/ocp-release:${OCP_RELEASE_NUMBER}-${ARCHITECTURE} | sed -n 's/Pull From: .*@//p')"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ダイジェストアルゴリズムを設定します。
DIGEST_ALGO="${DIGEST%%:*}"$ DIGEST_ALGO="${DIGEST%%:*}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ダイジェスト署名を設定します。
DIGEST_ENCODED="${DIGEST#*:}"$ DIGEST_ENCODED="${DIGEST#*:}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、mirror.openshift.com Web サイトからイメージ署名を取得します。
SIGNATURE_BASE64=$(curl -s "https://mirror.openshift.com/pub/openshift-v4/signatures/openshift/release/${DIGEST_ALGO}=${DIGEST_ENCODED}/signature-1" | base64 -w0 && echo)$ SIGNATURE_BASE64=$(curl -s "https://mirror.openshift.com/pub/openshift-v4/signatures/openshift/release/${DIGEST_ALGO}=${DIGEST_ENCODED}/signature-1" | base64 -w0 && echo)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、イメージ署名を
checksum-<OCP_RELEASE_NUMBER>.yamlファイルに保存します。cat >checksum-${OCP_RELEASE_NUMBER}.yaml <<EOF$ cat >checksum-${OCP_RELEASE_NUMBER}.yaml <<EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow ${DIGEST_ALGO}-${DIGEST_ENCODED}: ${SIGNATURE_BASE64} EOF${DIGEST_ALGO}-${DIGEST_ENCODED}: ${SIGNATURE_BASE64} EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow
更新グラフを準備します。更新グラフを準備するオプションは 2 つあります。
OpenShift Update Service を使用します。
ハブクラスターでグラフを設定する方法の詳細は、OpenShift Update Service の Operator のデプロイ および グラフデータ init コンテナーのビルド を参照してください。
アップストリームグラフのローカルコピーを作成します。マネージドクラスターにアクセスできる非接続環境の
httpまたはhttpsサーバーで更新グラフをホストします。更新グラフをダウンロードするには、以下のコマンドを使用します。curl -s https://api.openshift.com/api/upgrades_info/v1/graph?channel=stable-4.20 -o ~/upgrade-graph_stable-4.20
$ curl -s https://api.openshift.com/api/upgrades_info/v1/graph?channel=stable-4.20 -o ~/upgrade-graph_stable-4.20Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Operator の更新は、以下のタスクを実行する必要があります。
- Operator カタログをミラーリングします。「非接続クラスターで使用する Operator カタログのミラーリング」セクションの手順に従って、目的の Operator イメージがミラーリングされていることを確認します。
10.3.2. PolicyGenerator CR を使用したプラットフォーム更新の実行 リンクのコピーリンクがクリップボードにコピーされました!
TALM を使用してプラットフォームの更新を実行できます。
前提条件
- Topology Aware Lifecycle Manager (TALM) をインストールしている。
- GitOps Zero Touch Provisioning (ZTP) を最新バージョンに更新している。
- GitOps ZTP を使用して 1 つ以上のマネージドクラスターをプロビジョニングしている。
- 目的のイメージリポジトリーをミラーリングしている。
-
cluster-admin権限を持つユーザーとしてログインしている。 - ハブクラスターで RHACM ポリシーを作成している。
手順
プラットフォーム更新用の
PolicyGeneratorCR を作成します。次の
PolicyGeneratorCR をdu-upgrade.yamlファイルに保存します。プラットフォーム更新のための
PolicyGeneratorの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 更新をトリガーする
ClusterVersionCR を示します。イメージの事前キャッシュには、channel、upstream、およびdesiredVersionフィールドがすべて必要です。 - 2
ImageSignature.yamlには、必要なリリースイメージのイメージ署名が含まれています。イメージ署名は、プラットフォーム更新を適用する前にイメージを検証するために使用されます。- 3
- 必要な OpenShift Container Platform イメージを含むミラーリポジトリーを表示します。「環境のセットアップ」セクションの手順に従って保存した
imageContentSources.yamlファイルからミラーを取得します。
PolicyGeneratorCR は 2 つのポリシーを生成します。-
du-upgrade-platform-upgrade-prepポリシーは、プラットフォームの更新の準備作業を行います。目的のリリースイメージシグネチャーのConfigMapCR を作成し、ミラー化されたリリースイメージリポジトリーのイメージコンテンツソースを作成し、目的の更新チャネルと非接続環境でマネージドクラスターが到達可能な更新グラフを使用してクラスターバージョンを更新します。 -
du-upgrade-platform-upgradeポリシーは、プラットフォームのアップグレードを実行するために使用されます。
PolicyGeneratorCR の GitOps ZTP Git リポジトリーにあるkustomization.yamlファイルにdu-upgrade.yamlファイルの内容を追加し、変更を Git リポジトリーにプッシュします。ArgoCD は Git リポジトリーから変更を取得し、ハブクラスターでポリシーを生成します。
以下のコマンドを実行して、作成したポリシーを確認します。
oc get policies -A | grep platform-upgrade
$ oc get policies -A | grep platform-upgradeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
spec.enableフィールドをfalseに設定して、プラットフォーム更新用のClusterGroupUpdateCR を作成します。次の例に示すように、プラットフォーム更新
ClusterGroupUpdateCR の内容を、du-upgrade-platform-upgrade-prepポリシーとdu-upgrade-platform-upgradeポリシーおよびターゲットクラスターとともに、cgu-platform-upgrade.ymlファイルに保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
ClusterGroupUpdateCR をハブクラスターに適用します。oc apply -f cgu-platform-upgrade.yml
$ oc apply -f cgu-platform-upgrade.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
オプション: プラットフォームの更新用にイメージを事前キャッシュします。
次のコマンドを実行して、
ClusterGroupUpdateCR で事前キャッシュを有効にします。oc --namespace=default patch clustergroupupgrade.ran.openshift.io/cgu-platform-upgrade \ --patch '{"spec":{"preCaching": true}}' --type=merge$ oc --namespace=default patch clustergroupupgrade.ran.openshift.io/cgu-platform-upgrade \ --patch '{"spec":{"preCaching": true}}' --type=mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新プロセスを監視し、事前キャッシュが完了するまで待ちます。ハブクラスターで次のコマンドを実行して、事前キャッシュの状態を確認します。
oc get cgu cgu-platform-upgrade -o jsonpath='{.status.precaching.status}'$ oc get cgu cgu-platform-upgrade -o jsonpath='{.status.precaching.status}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
プラットフォームの更新を開始します。
次のコマンドを実行して、
cgu-platform-upgradeポリシーを有効にし、事前キャッシュを無効にします。oc --namespace=default patch clustergroupupgrade.ran.openshift.io/cgu-platform-upgrade \ --patch '{"spec":{"enable":true, "preCaching": false}}' --type=merge$ oc --namespace=default patch clustergroupupgrade.ran.openshift.io/cgu-platform-upgrade \ --patch '{"spec":{"enable":true, "preCaching": false}}' --type=mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow プロセスを監視します。完了したら、次のコマンドを実行して、ポリシーが準拠していることを確認します。
oc get policies --all-namespaces
$ oc get policies --all-namespacesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.3.3. PolicyGenerator CR を使用した Operator 更新の実行 リンクのコピーリンクがクリップボードにコピーされました!
TALM で Operator の更新を実行できます。
前提条件
- Topology Aware Lifecycle Manager (TALM) をインストールしている。
- GitOps Zero Touch Provisioning (ZTP) を最新バージョンに更新している。
- GitOps ZTP を使用して 1 つ以上のマネージドクラスターをプロビジョニングしている。
- 目的のインデックスイメージ、バンドルイメージ、およびバンドルイメージで参照されるすべての Operator イメージをミラーリングします。
-
cluster-admin権限を持つユーザーとしてログインしている。 - ハブクラスターで RHACM ポリシーを作成している。
手順
Operator 更新のために
PolicyGeneratorCR を更新します。du-upgrade.yamlファイルの次の追加コンテンツでdu-upgradePolicyGeneratorCR を更新します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 必要な Operator イメージが含まれています。インデックスイメージが常に同じイメージ名とタグにプッシュされている場合、この変更は必要ありません。
- 2
- Operator Lifecycle Manager (OLM) が新しい Operator バージョンのインデックスイメージをポーリングする頻度を
registryPoll.intervalフィールドで設定します。y-stream および z-stream Operator の更新のために新しいインデックスイメージタグが常にプッシュされる場合、この変更は必要ありません。registryPoll.intervalフィールドを短い間隔に設定して更新を促進できますが、間隔を短くすると計算負荷が増加します。これに対処するために、更新が完了したら、registryPoll.intervalをデフォルト値に戻すことができます。 - 3
- カタログ接続の監視状態を表示します。
READY値は、CatalogSourceポリシーの準備が整っていることを保証し、インデックス Pod がプルされ、実行中であることを示します。このように、TALM は最新のポリシー準拠状態に基づいて Operator をアップグレードします。
この更新により、
du-upgrade-operator-catsrc-policyというポリシーが生成されます。これは、必要な Operator イメージを含む新しいインデックスイメージでredhat-operators-disconnectedカタログソースを更新するためのポリシーです。注記Operator にイメージの事前キャッシュを使用する必要があり、
redhat-operators-disconnected以外の別のカタログソースからの Operator がある場合は、次のタスクを実行する必要があります。- 別のカタログソースの新しいインデックスイメージまたはレジストリーポーリング間隔の更新を使用して、別のカタログソースポリシーを準備します。
- 異なるカタログソースからの目的の Operator に対して個別のサブスクリプションポリシーを準備します。
たとえば、目的の SRIOV-FEC Operator は、
certified-operatorsカタログソースで入手できます。カタログソースと Operator サブスクリプションを更新するには、次の内容を追加して、2 つのポリシーdu-upgrade-fec-catsrc-policyとdu-upgrade-subscriptions-fec-policyを生成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 共通
PolicyGeneratorCR に指定されたサブスクリプションチャネルが存在する場合は削除します。GitOps ZTP イメージのデフォルトサブスクリプションチャネルが更新に使用されます。注記GitOps ZTP 4.20 を通じて適用される Operator のデフォルトチャネルは、
performance-addon-operator以外はstableです。OpenShift Container Platform 4.11 以降、performance-addon-operator機能はnode-tuning-operatorに移動されました。4.10 リリースの場合、PAO のデフォルトチャネルはv4.10です。共通のPolicyGeneratorCR でデフォルトのチャネルを指定することもできます。PolicyGeneratorCR の更新を GitOps ZTP Git リポジトリーにプッシュします。ArgoCD は Git リポジトリーから変更を取得し、ハブクラスターでポリシーを生成します。
以下のコマンドを実行して、作成したポリシーを確認します。
oc get policies -A | grep -E "catsrc-policy|subscription"
$ oc get policies -A | grep -E "catsrc-policy|subscription"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Operator の更新を開始する前に、必要なカタログソースの更新を適用します。
operator-upgrade-prepという名前のClusterGroupUpgradeCR の内容をカタログソースポリシーと共に、ターゲットマネージドクラスターの内容をcgu-operator-upgrade-prep.ymlファイルに保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ポリシーをハブクラスターに適用します。
oc apply -f cgu-operator-upgrade-prep.yml
$ oc apply -f cgu-operator-upgrade-prep.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新プロセスを監視します。完了したら、次のコマンドを実行して、ポリシーが準拠していることを確認します。
oc get policies -A | grep -E "catsrc-policy"
$ oc get policies -A | grep -E "catsrc-policy"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
spec.enableフィールドをfalseに設定して、Operator 更新のClusterGroupUpgradeCR を作成します。以下の例のように、Operator 更新
ClusterGroupUpgradeCR の内容をdu-upgrade-operator-catsrc-policyポリシーで保存して、共通のPolicyGeneratorおよびターゲットクラスターで作成されたサブスクリプションポリシーをcgu-operator-upgrade.ymlファイルに保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記1 つの
ClusterGroupUpgradeCR は、ClusterGroupUpgradeCR に含まれる 1 つのカタログソースからサブスクリプションポリシーで定義される必要な Operator のイメージのみを事前キャッシュできます。SRIOV-FEC Operator の例のように、目的の Operator が異なるカタログソースからのものである場合、別のClusterGroupUpgradeCR をdu-upgrade-fec-catsrc-policyおよびdu-upgrade-subscriptions-fec-policyポリシーで作成する必要があります。SRIOV-FEC Operator イメージの事前キャッシュと更新。次のコマンドを実行して、
ClusterGroupUpgradeCR をハブクラスターに適用します。oc apply -f cgu-operator-upgrade.yml
$ oc apply -f cgu-operator-upgrade.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
オプション: Operator の更新用にイメージを事前キャッシュします。
イメージの事前キャッシュを開始する前に、以下のコマンドを実行して、サブスクリプションポリシーがこの時点で
NonCompliantであることを確認します。oc get policy common-subscriptions-policy -n <policy_namespace>
$ oc get policy common-subscriptions-policy -n <policy_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME REMEDIATION ACTION COMPLIANCE STATE AGE common-subscriptions-policy inform NonCompliant 27d
NAME REMEDIATION ACTION COMPLIANCE STATE AGE common-subscriptions-policy inform NonCompliant 27dCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、
ClusterGroupUpgradeCR で事前キャッシュを有効にします。oc --namespace=default patch clustergroupupgrade.ran.openshift.io/cgu-operator-upgrade \ --patch '{"spec":{"preCaching": true}}' --type=merge$ oc --namespace=default patch clustergroupupgrade.ran.openshift.io/cgu-operator-upgrade \ --patch '{"spec":{"preCaching": true}}' --type=mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow プロセスを監視し、事前キャッシュが完了するまで待ちます。マネージドクラスターで次のコマンドを実行して、事前キャッシュの状態を確認します。
oc get cgu cgu-operator-upgrade -o jsonpath='{.status.precaching.status}'$ oc get cgu cgu-operator-upgrade -o jsonpath='{.status.precaching.status}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、更新を開始する前に事前キャッシュが完了したかどうかを確認します。
oc get cgu -n default cgu-operator-upgrade -ojsonpath='{.status.conditions}' | jq$ oc get cgu -n default cgu-operator-upgrade -ojsonpath='{.status.conditions}' | jqCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Operator の更新を開始します。
以下のコマンドを実行して
cgu-operator-upgradeClusterGroupUpgradeCR を有効にし、事前キャッシュを無効にして Operator の更新を開始します。oc --namespace=default patch clustergroupupgrade.ran.openshift.io/cgu-operator-upgrade \ --patch '{"spec":{"enable":true, "preCaching": false}}' --type=merge$ oc --namespace=default patch clustergroupupgrade.ran.openshift.io/cgu-operator-upgrade \ --patch '{"spec":{"enable":true, "preCaching": false}}' --type=mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow プロセスを監視します。完了したら、次のコマンドを実行して、ポリシーが準拠していることを確認します。
oc get policies --all-namespaces
$ oc get policies --all-namespacesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.3.4. PolicyGenerator CR を使用した Operator 更新の失敗のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
一部のシナリオでは、ポリシーのコンプライアンス状態が古いため、Topology Aware Lifecycle Manager (TALM) が Operator の更新を見逃す可能性があります。
カタログソースの更新後に Operator Lifecycle Manager (OLM) がサブスクリプションステータスを更新すると、時間がかかります。TALM が修復が必要かどうかを判断する間、サブスクリプションポリシーのステータスは準拠していると表示される場合があります。その結果、サブスクリプションポリシーで指定された Operator はアップグレードされません。
このシナリオを回避するには、別のカタログソース設定を PolicyGenerator に追加し、更新が必要な Operator のサブスクリプションでこの設定を指定します。
手順
PolicyGeneratorリソースにカタログソース設定を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新が必要な Operator の新しい設定を指すように
Subscriptionリソースを更新します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
PolicyGeneratorリソースで定義した追加のカタログソース設定の名前を入力します。
10.3.5. プラットフォームと Operator の更新を一緒に実行する リンクのコピーリンクがクリップボードにコピーされました!
プラットフォームと Operator の更新を同時に実行できます。
前提条件
- Topology Aware Lifecycle Manager (TALM) をインストールしている。
- GitOps Zero Touch Provisioning (ZTP) を最新バージョンに更新している。
- GitOps ZTP を使用して 1 つ以上のマネージドクラスターをプロビジョニングしている。
-
cluster-admin権限を持つユーザーとしてログインしている。 - ハブクラスターで RHACM ポリシーを作成している。
手順
-
「プラットフォーム更新の実」および「Operator 更新の実行」セクションで説明されている手順に従って、更新用の
PolicyGeneratorCR を作成します。 プラットフォームの準備作業と Operator の更新を適用します。
プラットフォームの更新の準備作業、カタログソースの更新、およびターゲットクラスターのポリシーを含む
ClusterGroupUpgradeCR の内容をcgu-platform-operator-upgrade-prep.ymlファイルに保存します。次に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
cgu-platform-operator-upgrade-prep.ymlファイルをハブクラスターに適用します。oc apply -f cgu-platform-operator-upgrade-prep.yml
$ oc apply -f cgu-platform-operator-upgrade-prep.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow プロセスを監視します。完了したら、次のコマンドを実行して、ポリシーが準拠していることを確認します。
oc get policies --all-namespaces
$ oc get policies --all-namespacesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
プラットフォーム用の
ClusterGroupUpdateCR と、spec.enableフィールドをfalseに設定した Operator 更新を作成します。次の例に示すように、ポリシーとターゲットクラスターを含むプラットフォームと Operator の更新
ClusterGroupUpdateCR の内容をcgu-platform-operator-upgrade.ymlファイルに保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
cgu-platform-operator-upgrade.ymlファイルをハブクラスターに適用します。oc apply -f cgu-platform-operator-upgrade.yml
$ oc apply -f cgu-platform-operator-upgrade.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
オプション: プラットフォームおよび Operator の更新用にイメージを事前キャッシュします。
以下のコマンドを実行して、
ClusterGroupUpgradeCR で事前キャッシュを有効にします。oc --namespace=default patch clustergroupupgrade.ran.openshift.io/cgu-du-upgrade \ --patch '{"spec":{"preCaching": true}}' --type=merge$ oc --namespace=default patch clustergroupupgrade.ran.openshift.io/cgu-du-upgrade \ --patch '{"spec":{"preCaching": true}}' --type=mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新プロセスを監視し、事前キャッシュが完了するまで待ちます。マネージドクラスターで次のコマンドを実行して、事前キャッシュの状態を確認します。
oc get jobs,pods -n openshift-talm-pre-cache
$ oc get jobs,pods -n openshift-talm-pre-cacheCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、更新を開始する前に事前キャッシュが完了したかどうかを確認します。
oc get cgu cgu-du-upgrade -ojsonpath='{.status.conditions}'$ oc get cgu cgu-du-upgrade -ojsonpath='{.status.conditions}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
プラットフォームおよび Operator の更新を開始します。
以下のコマンドを実行して、
cgu-du-upgradeClusterGroupUpgradeCR がプラットフォームと Operator の更新を開始します。oc --namespace=default patch clustergroupupgrade.ran.openshift.io/cgu-du-upgrade \ --patch '{"spec":{"enable":true, "preCaching": false}}' --type=merge$ oc --namespace=default patch clustergroupupgrade.ran.openshift.io/cgu-du-upgrade \ --patch '{"spec":{"enable":true, "preCaching": false}}' --type=mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow プロセスを監視します。完了したら、次のコマンドを実行して、ポリシーが準拠していることを確認します。
oc get policies --all-namespaces
$ oc get policies --all-namespacesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記プラットフォームおよび Operator 更新の CR は、設定を
spec.enable: trueに設定して最初から作成できます。この場合、更新は事前キャッシュが完了した直後に開始し、CR を手動で有効にする必要はありません。事前キャッシュと更新の両方で、ポリシー、配置バインディング、配置ルール、マネージドクラスターアクション、マネージドクラスタービューなどの追加リソースが作成され、手順を完了することができます。
afterCompletion.deleteObjectsフィールドをtrueに設定すると、更新の完了後にこれらのリソースがすべて削除されます。
10.3.6. PolicyGenerator CR を使用したデプロイされたクラスターからの Performance Addon Operator サブスクリプションの削除 リンクのコピーリンクがクリップボードにコピーされました!
以前のバージョンの OpenShift Container Platform では、Performance Addon Operator はアプリケーションの自動低レイテンシーパフォーマンスチューニングを提供していました。OpenShift Container Platform 4.11 以降では、これらの機能は Node Tuning Operator の一部です。
OpenShift Container Platform 4.11 以降を実行しているクラスターに Performance Addon Operator をインストールしないでください。OpenShift Container Platform 4.11 以降にアップグレードすると、Node Tuning Operator は Performance Addon Operator を自動的に削除します。
Operator の再インストールを防ぐために、Performance Addon Operator サブスクリプションを作成するポリシーを削除する必要があります。
参照 DU プロファイルには、PolicyGenerator CR acm-common-ranGen.yaml の Performance Addon Operator が含まれています。デプロイされたマネージドクラスターからサブスクリプションを削除するには、acm-common-ranGen.yaml を更新する必要があります。
Performance Addon Operator 4.10.3-5 以降を OpenShift Container Platform 4.11 以降にインストールする場合、Performance Addon Operator はクラスターのバージョンを検出し、Node Tuning Operator 機能との干渉を避けるために自動的に休止状態になります。ただし、最高のパフォーマンスを確保するには、OpenShift Container Platform 4.11 クラスターから Performance Addon Operator を削除してください。
前提条件
- カスタムサイトの設定データを管理する Git リポジトリーを作成している。リポジトリーはハブクラスターからアクセス可能で、ArgoCD のソースリポジトリーとして定義されている必要があります。
- OpenShift Container Platform 4.11 以降に更新します。
-
cluster-admin権限を持つユーザーとしてログインしている。
手順
acm-common-ranGen.yamlファイルの Performance Addon Operator namespace、Operator グループ、およびサブスクリプションのcomplianceTypeをmustnothaveに変更します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
変更をカスタムサイトリポジトリーにマージし、ArgoCD アプリケーションが変更をハブクラスターに同期するのを待ちます。
common-subscriptions-policyポリシーのステータスがNon-Compliantに変わります。 - Topology Aware Lifecycle Manager を使用して、ターゲットクラスターに変更を適用します。設定変更のロールアウトの詳細は、「関連情報」セクションを参照してください。
プロセスを監視します。ターゲットクラスターの
common-subscriptions-policyポリシーのステータスがCompliantの場合、Performance Addon Operator はクラスターから削除されています。次のコマンドを実行して、common-subscriptions-policyのステータスを取得します。oc get policy -n ztp-common common-subscriptions-policy
$ oc get policy -n ztp-common common-subscriptions-policyCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
acm-common-ranGen.yamlファイルのpolicies.manifestsから、Performance Addon Operator namespace、Operator グループ、およびサブスクリプション CR を削除します。 - 変更をカスタムサイトリポジトリーにマージし、ArgoCD アプリケーションが変更をハブクラスターに同期するのを待ちます。ポリシーは準拠したままです。
10.3.7. シングルノード OpenShift クラスター上の TALM を使用したユーザー指定のイメージの事前キャッシュ リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションをアップグレードする前に、アプリケーション固有のワークロードイメージをシングルノード OpenShift クラスターに事前キャッシュできます。
次のカスタムリソース (CR) を使用して、事前キャッシュジョブの設定オプションを指定できます。
-
PreCachingConfigCR -
ClusterGroupUpgradeCR
PreCachingConfig CR のフィールドはすべてオプションです。
PreCachingConfig CR の例
- 1
- デフォルトでは、TALM は、マネージドクラスターのポリシーから
platformImage、operatorsIndexes、およびoperatorsPackagesAndChannelsフィールドに自動的に値を設定します。これらのフィールドのデフォルトの TALM 派生値をオーバーライドする値を指定できます。 - 2
- クラスター上で最低限必要なディスク容量を指定します。指定しない場合、TALM は OpenShift Container Platform イメージのデフォルト値を定義します。ディスク容量フィールドには、整数値とストレージユニットを含める必要があります。たとえば、
40 GiB、200 MB、1 TiBです。 - 3
- イメージ名の一致に基づいて事前キャッシュから除外するイメージを指定します。
- 4
- 事前キャッシュする追加イメージのリストを指定します。
PreCachingConfig CR 参照を使用した ClusterGroupUpgrade CR の例
10.3.7.1. 事前キャッシュ用のカスタムリソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
PreCachingConfig CR は、ClusterGroupUpgrade CR の前または同時に作成する必要があります。
事前キャッシュする追加イメージのリストを使用して
PreCachingConfigCR を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow preCachingフィールドをtrueに設定してClusterGroupUpgradeCR を作成し、前の手順で作成したPreCachingConfigCR を指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告クラスターにイメージをインストールすると、それらを変更したり削除したりすることはできません。
イメージを事前キャッシュを開始する場合は、次のコマンドを実行して
ClusterGroupUpgradeCR を適用します。oc apply -f cgu.yaml
$ oc apply -f cgu.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
TALM は ClusterGroupUpgrade CR を検証します。
この時点から、TALM 事前キャッシュワークフローを続行できます。
すべてのサイトが同時に事前キャッシュされます。
検証
次のコマンドを実行して、
ClusterUpgradeGroupCR が適用されているハブクラスターの事前キャッシュステータスを確認します。oc get cgu <cgu_name> -n <cgu_namespace> -oyaml
$ oc get cgu <cgu_name> -n <cgu_namespace> -oyamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 事前キャッシュ設定は、管理ポリシーが存在するかどうかをチェックすることによって検証されます。
ClusterGroupUpgradeおよびPreCachingConfigCR の設定が有効であると、次のステータスになります。有効な CR の出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 無効な PreCachingConfig CR の例
Type: "PrecacheSpecValid" Status: False, Reason: "PrecacheSpecIncomplete" Message: "Precaching spec is incomplete: failed to get PreCachingConfig resource due to PreCachingConfig.ran.openshift.io "<pre-caching_cr_name>" not found"
Type: "PrecacheSpecValid" Status: False, Reason: "PrecacheSpecIncomplete" Message: "Precaching spec is incomplete: failed to get PreCachingConfig resource due to PreCachingConfig.ran.openshift.io "<pre-caching_cr_name>" not found"Copy to Clipboard Copied! Toggle word wrap Toggle overflow マネージドクラスターで次のコマンドを実行すると、事前キャッシュジョブを見つけることができます。
oc get jobs -n openshift-talo-pre-cache
$ oc get jobs -n openshift-talo-pre-cacheCopy to Clipboard Copied! Toggle word wrap Toggle overflow 進行中の事前キャッシュジョブの例
NAME COMPLETIONS DURATION AGE pre-cache 0/1 1s 1s
NAME COMPLETIONS DURATION AGE pre-cache 0/1 1s 1sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、事前キャッシュジョブ用に作成された Pod のステータスを確認できます。
oc describe pod pre-cache -n openshift-talo-pre-cache
$ oc describe pod pre-cache -n openshift-talo-pre-cacheCopy to Clipboard Copied! Toggle word wrap Toggle overflow 進行中の事前キャッシュジョブの例
Type Reason Age From Message Normal SuccesfulCreate 19s job-controller Created pod: pre-cache-abcd1
Type Reason Age From Message Normal SuccesfulCreate 19s job-controller Created pod: pre-cache-abcd1