16.4. GitOps ZTP を使用したシングルノード OpenShift クラスターのイメージベースアップグレードの実行
ハブクラスター上の 1 つのリソース、ImageBasedGroupUpgrade カスタムリソース (CR) を使用して、すべてのステージを通じて、選択したマネージドクラスターのグループでイメージベースのアップグレードを管理できます。Topology Aware Lifecycle Manager (TALM) は、ImageBasedGroupUpgrade CR を調整し、手動制御のアップグレードフローまたは完全に自動のアップグレードフローにより、定められたステージ遷移を完了するための基盤リソースを作成します。
イメージベースのアップグレードの詳細は、「シングルノード OpenShift クラスターのイメージベースのアップグレードについて」を参照してください。
16.4.1. ハブ上の ImageBasedGroupUpgrade CR を使用してイメージベースのアップグレードを大規模に管理する リンクのコピーリンクがクリップボードにコピーされました!
ImageBasedGroupUpgrade CR は、ImageBasedUpgrade API と ClusterGroupUpgrade API を組み合わせたものです。たとえば、ImageBasedGroupUpgrade API でも、ClusterGroupUpgrade API と同じ方法で、クラスターの選択とロールアウトストラテジーを定義できます。ステージ遷移は ImageBasedUpgrade API とは異なります。ImageBasedGroupUpgrade API を使用すると、アクションとも呼ばれる複数のステージ遷移を、1 つのロールアウトストラテジーを共有する 1 つのステップに組み合わせることができます。
ImageBasedGroupUpgrade.yaml の例
apiVersion: lcm.openshift.io/v1alpha1
kind: ImageBasedGroupUpgrade
metadata:
name: <filename>
namespace: default
spec:
clusterLabelSelectors:
- matchExpressions:
- key: name
operator: In
values:
- spoke1
- spoke4
- spoke6
ibuSpec:
seedImageRef:
image: quay.io/seed/image:4.20.0-rc.1
version: 4.20.0-rc.1
pullSecretRef:
name: "<seed_pull_secret>"
extraManifests:
- name: example-extra-manifests
namespace: openshift-lifecycle-agent
oadpContent:
- name: oadp-cm
namespace: openshift-adp
plan:
- actions: ["Prep", "Upgrade", "FinalizeUpgrade"]
rolloutStrategy:
maxConcurrency: 200
timeout: 2400
- 1
- アップグレードするクラスター。
- 2
- ターゲットプラットフォームのバージョン、使用するシードイメージ、およびイメージにアクセスするために必要なシークレット。注記
ハブクラスターの
ImageBasedGroupUpgradeリソースと同じ namespace にシードイメージプルシークレットを追加すると、そのシークレットがPrepステージのマニフェストリストに追加されます。シークレットは、openshift-lifecycle-agentnamespace 内の各スポーククラスターで再作成されます。 - 3
- オプション: シードイメージに含まれていない追加のマニフェストをターゲットクラスターに適用します。カスタムカタログソースの
ConfigMapオブジェクトも適用します。 - 4
- OADP の
BackupおよびRestoreCR を含むConfigMapリソース。 - 5
- アップグレードプランの詳細。
- 6
- バッチで更新するクラスターの数。
- 7
- アクションを完了するまでのタイムアウト制限 (分単位)。
16.4.1.1. サポートされているアクションの組み合わせ リンクのコピーリンクがクリップボードにコピーされました!
アクションは、選択されたクラスターグループのアップグレードプランの各ステップで TALM が実行する一連のステージ遷移です。ImageBasedGroupUpgrade CR 内の action エントリーは、それぞれ個別のステップです。1 つのステップに、同じロールアウトストラテジーを共有する 1 つ以上のアクションを含めます。アクションをステップに分けることで、各アクションのロールアウトストラテジーをより細かく制御できます。
これらのアクションは、アップグレードプラン内でさまざまな方法で組み合わせることができます。後続のステップは、後で追加することができます。プランにステップを追加する前に、前のステップが完了するか失敗するまで待機します。前のステップで失敗したクラスターに対して追加するステップの最初のアクションは、Abort または Rollback のどちらかである必要があります。
進行中のプランからアクションまたはステップを削除することはできません。
次の表にプランの例を示します。それぞれの例で、ロールアウトストラテジーに対する制御レベルが異なります。
| プランの例 | 説明 |
|---|---|
| すべてのアクションが同じストラテジーを共有しています。 |
| いくつかのアクションが同じストラテジーを共有しています。 |
| すべてのアクションに異なるストラテジーがあります。 |
クラスターは、いずれかのアクションに失敗すると、同じステップの残りのアクションをスキップします。
ImageBasedGroupUpgrade API は次のアクションを受け入れます。
Prep-
Prepステージに進み、アップグレードリソースの準備を開始します。 Upgrade-
Upgradeステージに移行して、アップグレードを開始します。 FinalizeUpgrade-
Idleステージに移行して、Upgradeアクションを完了した特定のクラスターのアップグレードを確定します。 Rollback-
Rollbackステージに移行して、正常にアップグレードされたクラスターでのみロールバックを開始します。 FinalizeRollback-
Idleステージに移行して、ロールバックを完了します。 AbortOnFailure-
Idleステージに移行して、PrepまたはUpgradeアクションに失敗した特定のクラスターのアップグレードをキャンセルします。 Abort-
Idleステージに移行して、まだアップグレードされていないクラスターでのみ、進行中のアップグレードをキャンセルします。
次のアクションの組み合わせがサポートされています。角括弧のペアは、plan セクションの 1 つのステップを表します。
-
["Prep"]、["Abort"] -
["Prep", "Upgrade", "FinalizeUpgrade"] -
["Prep"]、["AbortOnFailure"]、["Upgrade"]、["AbortOnFailure"]、["FinalizeUpgrade"] -
["Rollback", "FinalizeRollback"]
完全に新しい ImageBasedGroupUpgrade CR から進行中のアップグレードを再開またはキャンセルする必要がある場合は、次のいずれかの組み合わせを使用します。
-
["Upgrade","FinalizeUpgrade"] -
["FinalizeUpgrade"] -
["FinalizeRollback"] -
["Abort"] -
["AbortOnFailure"]
16.4.1.2. クラスター選択のためのラベル付け リンクのコピーリンクがクリップボードにコピーされました!
最初のクラスターの選択には、spec.clusterLabelSelectors フィールドを使用します。さらに、TALM が、最後のステージ遷移の結果に応じて、マネージドクラスターにラベルを付けます。
ステージが完了または失敗すると、関連するクラスターに TALM が次のラベルを付けます。
-
lcm.openshift.io/ibgu-<stage>-completed -
lcm.openshift.io/ibgu-<stage>-failed
これらのクラスターラベルは、発生した問題をトラブルシューティングした後、クラスターのグループのアップグレードをキャンセルまたはロールバックするために使用します。
ImageBasedGroupUpgrade CR を使用してクラスターをアップグレードする場合は、マネージドクラスターでトラブルシューティングまたは復元手順を実行した後、lcm.openshift.io/ibgu-<stage>-completed または lcm.openshift.io/ibgu-<stage>-failed クラスターラベルが適切に更新されていることを確認してください。これにより、TALM がクラスターのイメージベースのアップグレードを引き続き管理できるようになります。
たとえば、アップグレードが正常に完了したクラスターを除くすべてのマネージドクラスターのアップグレードをキャンセルする場合は、プランに Abort アクションを追加できます。Abort アクションは、ImageBasedUpgrade CR を Idle ステージに戻し、まだアップグレードされていないクラスターのアップグレードをキャンセルします。個別の Abort アクションを追加すると、TALM が lcm.openshift.io/ibgu-upgrade-completed ラベルを持つクラスターに対して Abort アクションを実行しなくなります。
アップグレードが正常にキャンセルされるか完了すると、クラスターラベルが削除されます。
16.4.1.3. ステータスの監視 リンクのコピーリンクがクリップボードにコピーされました!
ImageBasedGroupUpgrade CR は、すべてのクラスターの包括的なステータスレポートを 1 カ所に集約し、より優れた監視エクスペリエンスを実現します。監視できるアクションは次のとおりです。
status.clusters.completedActions-
planセクションで定義されている完了したすべてのアクションを表示します。 status.clusters.currentAction- 現在進行中のすべてのアクションを表示します。
status.clusters.failedActions- 詳細なエラーメッセージとともに、失敗したすべてのアクションを表示します。