16.3. Lifecycle Agent を使用したシングルノード OpenShift クラスターのイメージベースアップグレードの実行
Lifecycle Agent を使用して、シングルノード OpenShift クラスターのイメージベースアップグレードを手動で実行できます。
クラスターに Lifecycle Agent をデプロイすると、ImageBasedUpgrade CR が自動的に作成されます。この CR を更新して、シードイメージのイメージリポジトリーを指定し、さまざまなステージを移動します。
16.3.1. Lifecycle Agent を使用したイメージベースアップグレードの Prep ステージへの移行 リンクのコピーリンクがクリップボードにコピーされました!
Lifecycle Agent をクラスターにデプロイすると、Lifecycle Agent は自動的に ImageBasedUpgrade カスタムリソース (CR) を作成します。
アップグレードに必要なすべてのリソースを作成したら、準備 段階に進むことができます。詳細は、「Lifecycle Agent を使用したイメージベースアップグレード用の ConfigMap オブジェクトの作成」セクションを参照してください。
非接続環境で、シードクラスターのリリースイメージレジストリーがターゲットクラスターのリリースイメージレジストリーと異なる場合は、ImageDigestMirrorSet (IDMS) リソースを作成して、別のミラーリングされるリポジトリーの場所を設定する必要があります。詳細は、「イメージレジストリーのリポジトリーミラーリングの設定」を参照してください。
次のコマンドを実行すると、シードイメージで使用されているリリースレジストリーを取得できます。
$ skopeo inspect docker://<imagename> | jq -r '.Labels."com.openshift.lifecycle-agent.seed_cluster_info" | fromjson | .release_registry'
前提条件
- クラスターをバックアップおよび復元するためのリソースを作成している。
手順
ImageBasedUpgradeCR にパッチが適用されていることを確認します。apiVersion: lca.openshift.io/v1 kind: ImageBasedUpgrade metadata: name: upgrade spec: stage: Idle seedImageRef: version: <target_version> image: <seed_container_image> pullSecretRef: <seed_pull_secret> autoRollbackOnFailure: {} initMonitorTimeoutSeconds: <initMonitorTimeoutSeconds> extraManifests: - name: example-extra-manifests-cm namespace: openshift-lifecycle-agent - name: example-catalogsources-cm namespace: openshift-lifecycle-agent oadpContent: - name: oadp-cm-example namespace: openshift-adpここでは、以下のようになります。
< ターゲットバージョン >- ターゲットプラットフォームのバージョン。値はシードイメージのバージョンと一致する必要があります。
< シードコンテナーイメージ >- ターゲットクラスターがシードイメージをプルできるリポジトリー。
<seed_pull_secret>- イメージがプライベートレジストリー内にある場合にコンテナーイメージをプルするための認証情報を含むシークレットへの参照。
<initMonitorTimeoutSeconds>-
オプション: ロールバックする時間枠 (秒単位)。最初の再起動後、この時間枠内にアップグレードが完了しないと、ロールバックが実行されます。定義されていない場合、または
0に設定されている場合、Lifecycle Agent はデフォルト値の1800秒 (30 分) を使用します。 extraManifests-
オプション:
ConfigMapリソースのリスト。これらのリソースには、アップグレード後も保持する必要のあるカスタムカタログソースと、シードイメージに含まれていない追加のマニフェストが含まれています。 oadpContent-
OADP の
BackupおよびRestoreCR を含むConfigMapリソースのリスト。
Prepステージを開始するには、次のコマンドを実行して、ImageBasedUpgradeCR のstageフィールドの値をPrepに変更します。$ oc patch imagebasedupgrades.lca.openshift.io upgrade -p='{"spec": {"stage": "Prep"}}' --type=merge -n openshift-lifecycle-agentOADP リソースと追加マニフェスト用の
ConfigMapオブジェクトを含める場合、Lifecycle Agent は準備段階で指定されたConfigMapオブジェクトを検証します。以下のような問題が発生する可能性があります。
-
Lifecycle Agent が
extraManifestsパラメーターに問題を検出した場合の検証警告またはエラー。 -
Lifecycle Agent が
oadpContentパラメーターに問題を検出した場合の検証エラー。
検証警告は
Upgradeステージをブロックしませんが、アップグレードを続行しても安全かどうかを判断する必要があります。これらの警告 (たとえば、カスタムリソース定義 (CRD) や名前空間の欠落、ドライランの失敗など) は、Prepステージのstatus.conditionsとImageBasedUpgradeCR のannotationフィールドを警告の詳細で更新します。以下の例は、これらの詳細を示しています。# ... metadata: annotations: extra-manifest.lca.openshift.io/validation-warning: '...' # ...ただし、
MachineConfigまたは Operator マニフェストを追加マニフェストに追加するなどの検証エラーが発生すると、Prepステージが失敗し、Upgradeステージがブロックされます。検証に合格すると、クラスターは新しい
ostreestateroot を作成します。これには、シードイメージのプルと展開、およびホストレベルのコマンドの実行が含まれます。最後に、Lifecycle Agent は、ターゲットクラスター上で必要なすべてのイメージをプリキャッシュします。-
Lifecycle Agent が
検証
次のコマンドを実行して、
ImageBasedUpgradeCR のステータスを確認します。$ oc get ibu -o yaml以下の例は、
準備段階が正常に完了したことを示しています。conditions: - lastTransitionTime: "2024-01-01T09:00:00Z" message: In progress observedGeneration: 13 reason: InProgress status: "False" type: Idle - lastTransitionTime: "2024-01-01T09:00:00Z" message: Prep completed observedGeneration: 13 reason: Completed status: "False" type: PrepInProgress - lastTransitionTime: "2024-01-01T09:00:00Z" message: Prep stage completed successfully observedGeneration: 13 reason: Completed status: "True" type: PrepCompleted observedGeneration: 13 validNextStages: - Idle - Upgrade