16.4.2. 複数のステップでマネージドクラスターのイメージベースのアップグレードを大規模に実行する
アップグレードによってサービスが中断されるタイミングを適切に制御する必要があるユースケースの場合は、ImageBasedGroupUpgrade CR を使用ししてマネージドクラスターのセットをアップグレードできます。ImageBasedGroupUpgrade CR を使用すると、前のステップが完了した後にアクションを追加できます。前のステップの結果を評価した後、次のアップグレードステージに進むことも、手順全体の失敗したステップをトラブルシューティングすることもできます。
特定のアクションの組み合わせのみがサポートされています。これは サポートされているアクションの組み合わせ に記載されています。
前提条件
-
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。 -
イメージベースのアップグレードで使用するリソースのポリシーと
ConfigMapオブジェクトを作成した。 - ハブクラスターを介して、すべてのマネージドクラスターに Lifecycle Agent と OADP Operator をインストールした。
手順
ハブクラスターで、
ImageBasedGroupUpgradeCR が含まれる 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.16.0-rc.1 version: 4.16.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"] rolloutStrategy: maxConcurrency: 2 timeout: 2400詳細は、以下のようになります。
-
clusterLabelSelectors: アップグレードするクラスター。 -
seedImageRef: ターゲットプラットフォームのバージョン、シードイメージ、およびイメージにアクセスするために必要なシークレット。
注記ハブクラスター上の、
ImageBasedGroupUpgradeリソースと同じ namespace にシードイメージプルシークレットを追加すると、{lco} はPrepステージのマニフェストリストにそのシークレットを追加されます。{lco} は、openshift-lifecycle-agentnamespace 内の各スポーククラスターでシークレットを再作成します。-
extraManifests: オプション: シードイメージに含まれていない追加のマニフェストをターゲットクラスターに適用します。カスタムカタログソースのConfigMapオブジェクトも適用します。 -
oadpContent: OADPBackupおよびRestoreCR が含まれるConfigMapリソースのリスト。 -
plan: アップグレードプランの詳細。
-
ハブクラスターで次のコマンドを実行して、作成したファイルを適用します。
$ oc apply -f <filename>.yamlハブクラスターで次のコマンドを実行して、ステータスの更新を監視します。
$ oc get ibgu -o yaml出力例
# ... status: clusters: - completedActions: - action: Prep name: spoke1 - completedActions: - action: Prep name: spoke4 - failedActions: - action: Prep name: spoke6 # ...前に示したサンプルプランの出力は
Prepステージのみから始まっており、前のステップの結果に基づき、このプランにアクションを追加していきます。TALM により、アップグレードが成功したか失敗したかを示すラベルがクラスターに追加されます。たとえば、TALM はPrepステージで失敗したクラスターにlcm.openshift.io/ibgu-prep-failedラベルを適用します。失敗を調査した後、アップグレードプランに
AbortOnFailureステップを追加できます。このステップにより、lcm.openshift.io/ibgu-<action>-failedというラベルの付いたクラスターがIdleステージに戻されます。TALM は、選択されたクラスターのアップグレードに関連するリソースを削除します。オプション: 次のコマンドを実行して、既存の
ImageBasedGroupUpgradeCR にAbortOnFailureアクションを追加します。$ oc patch ibgu <filename> --type=json -p \ '[{"op": "add", "path": "/spec/plan/-", "value": {"actions": ["AbortOnFailure"], "rolloutStrategy": {"maxConcurrency": 5, "timeout": 10}}}]'次のコマンドを実行して、ステータスの更新の監視を継続します。
$ oc get ibgu -o yaml
次のコマンドを実行して、既存の
ImageBasedGroupUpgradeCR にアクションを追加します。$ oc patch ibgu <filename> --type=json -p \ '[{"op": "add", "path": "/spec/plan/-", "value": {"actions": ["Upgrade"], "rolloutStrategy": {"maxConcurrency": 2, "timeout": 30}}}]'オプション: 次のコマンドを実行して、既存の
ImageBasedGroupUpgradeCR にAbortOnFailureアクションを追加します。$ oc patch ibgu <filename> --type=json -p \ '[{"op": "add", "path": "/spec/plan/-", "value": {"actions": ["AbortOnFailure"], "rolloutStrategy": {"maxConcurrency": 5, "timeout": 10}}}]'次のコマンドを実行して、ステータスの更新の監視を継続します。
$ oc get ibgu -o yaml
次のコマンドを実行して、既存の
ImageBasedGroupUpgradeCR にアクションを追加します。$ oc patch ibgu <filename> --type=json -p \ '[{"op": "add", "path": "/spec/plan/-", "value": {"actions": ["FinalizeUpgrade"], "rolloutStrategy": {"maxConcurrency": 10, "timeout": 3}}}]'
検証
次のコマンドを実行してステータスの更新を監視します。
$ oc get ibgu -o yaml出力例
# ... status: clusters: - completedActions: - action: Prep - action: AbortOnFailure failedActions: - action: Upgrade name: spoke1 - completedActions: - action: Prep - action: Upgrade - action: FinalizeUpgrade name: spoke4 - completedActions: - action: AbortOnFailure failedActions: - action: Prep name: spoke6 # ...