16.4.2. 複数のステップでマネージドクラスターのイメージベースのアップグレードを大規模に実行する
アップグレードによってサービスが中断されるタイミングを適切に制御する必要があるユースケースの場合は、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:1 - matchExpressions: - key: name operator: In values: - spoke1 - spoke4 - spoke6 ibuSpec: seedImageRef:2 image: quay.io/seed/image:4.16.0-rc.1 version: 4.16.0-rc.1 pullSecretRef: name: "<seed_pull_secret>" extraManifests:3 - name: example-extra-manifests namespace: openshift-lifecycle-agent oadpContent:4 - name: oadp-cm namespace: openshift-adp plan:5 - actions: ["Prep"] rolloutStrategy: maxConcurrency: 2 timeout: 2400- 1
- アップグレードするクラスター。
- 2
- ターゲットプラットフォームのバージョン、使用するシードイメージ、およびイメージにアクセスするために必要なシークレット。注記
ハブクラスターの
ImageBasedGroupUpgradeリソースと同じ namespace にシードイメージプルシークレットを追加すると、そのシークレットがPrepステージのマニフェストリストに追加されます。シークレットは、openshift-lifecycle-agentnamespace 内の各スポーククラスターで再作成されます。 - 3
- オプション: シードイメージに含まれていない追加のマニフェストをターゲットクラスターに適用します。カスタムカタログソースの
ConfigMapオブジェクトも適用します。 - 4
- OADP の
BackupおよびRestoreCR を含むConfigMapリソースのリスト。 - 5
- アップグレードプランの詳細。
ハブクラスターで次のコマンドを実行して、作成したファイルを適用します。
$ 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 により、アップグレードが成功したか失敗したかを示すラベルがクラスターに追加されます。たとえば、Prepステージに失敗したクラスターには、lcm.openshift.io/ibgu-prep-failedが適用されます。失敗を調査した後、アップグレードプランに
AbortOnFailureステップを追加できます。このステップにより、lcm.openshift.io/ibgu-<action>-failedというラベルの付いたクラスターがIdleステージに戻されます。選択されたクラスターのアップグレードに関連するリソースがすべて削除されます。オプション: 次のコマンドを実行して、既存の
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 # ...