レプリケートされたTimesTenアップグレードのロールバック

Helmを使用して、レプリケートされたTimesTenClassicオブジェクトのアップグレードをロールバックできます。これにより、レプリケートされたTimesTenClassicオブジェクトとその関連TimesTenデータベースがダウングレードされたリリースに戻ります。

ノート:

必ず、適切なタイミングでダウングレードを実行してください。本番の1日のうち最もビジーな時間にはダウングレードを実行しないことをお薦めします。アプリケーションで停止が発生し、ダウングレード手順の結果としてパフォーマンスが低下する可能性があります。
  1. ロールバックの前に、次を実行します:
    1. レプリケートされたTimesTenClassicオブジェクトがネームスペースに存在することを確認します。
      kubectl get ttc 
      出力は、次のようになります。
      NAME              STATE              ACTIVE            AGE
      norepsamplehelm   AllReplicasReady   N/A               19h
      repsamplehelm     Normal             repsamplehelm-1   22h

      repsamplehelm TimesTenClassicオブジェクトが存在し、Normal状態です。

    2. イメージを確認します。
      kubectl describe ttc repsamplehelm | grep Image
      出力は、次のようになります。
      Image:       container-registry.oracle.com/timesten/timesten:22.1.1.31.0
      ...
  2. リビジョン履歴を確認します。
    helm history repsamplehelm
    出力は、次のようになります。
    REVISION        UPDATED                         STATUS          CHART                   APP VERSION     DESCRIPTION
    1               Thu Jan  16 14:58:40 2025        superseded      ttclassic-2211300.1.0   22.1.1.30.0     Install complete
    2               Fri Jan  17 02:25:13 2025        deployed        ttclassic-2211310.1.0   22.1.1.31.0     Upgrade complete

    repsamplehelmチャートのリビジョン2は、リリース22.1.1.31.0を実行しています。リビジョン1はリリース22.1.1.30.0を実行しています。

  3. リビジョン1にロールバックします。
    helm rollback repsamplehelm 1

    出力は次のようになります。

    Rollback was a success! Happy Helming!
  4. ダウングレードと、TimesTenClassicオブジェクトの様々な状態への遷移を確認します。
     kubectl get events -w

    出力は、次のようになります。

    17m         Normal    Upgrade                  timestenclassic/repsamplehelm   Image updated, automatic upgrade started
    17m         Normal    Upgrade                  timestenclassic/repsamplehelm   Deleted standby pod repsamplehelm-0 during upgrade
    17m         Warning   Failed                   timestenclassic/repsamplehelm   Pod repsamplehelm-0 was replaced
    17m         Normal    StateChange              timestenclassic/repsamplehelm   Pod repsamplehelm-0 is Not Ready
    17m         Warning   StateChange              timestenclassic/repsamplehelm   TimesTenClassic was Normal, now ActiveTakeover
    17m         Normal    StateChange              timestenclassic/repsamplehelm   TimesTenClassic was ActiveTakeover, now StandbyDown
    14m         Normal    Info                     timestenclassic/repsamplehelm   Pod repsamplehelm-0 Agent Up
    14m         Normal    Info                     timestenclassic/repsamplehelm   Pod repsamplehelm-0 Instance Exists
    14m         Normal    Info                     timestenclassic/repsamplehelm   Pod repsamplehelm-0 Daemon Down
    14m         Normal    Info                     timestenclassic/repsamplehelm   Pod repsamplehelm-0 Daemon Up
    14m         Normal    Info                     timestenclassic/repsamplehelm   Pod repsamplehelm-0 Database Unloaded
    14m         Normal    Info                     timestenclassic/repsamplehelm   Pod repsamplehelm-0 Database None
    14m         Normal    Info                     timestenclassic/repsamplehelm   pollAsyncStatus: Async polling for RepDuplicate, timeout in 597 secs
    14m         Normal    Info                     timestenclassic/repsamplehelm   pollAsyncStatus: Async polling for RepDuplicate, timeout in 594 secs
    14m         Normal    Info                     timestenclassic/repsamplehelm   pollAsyncStatus: Async polling for RepDuplicate, timeout in 591 secs
    14m         Normal    Info                     timestenclassic/repsamplehelm   pollAsyncStatus: Async polling for RepDuplicate, timeout in 588 secs
    14m         Normal    Info                     timestenclassic/repsamplehelm   RepDuplicate completed in 14 secs
    14m         Normal    Info                     timestenclassic/repsamplehelm   Pod repsamplehelm-0 Database Loaded
    14m         Normal    Info                     timestenclassic/repsamplehelm   Pod repsamplehelm-0 RepAgent Not Running
    14m         Normal    Info                     timestenclassic/repsamplehelm   Pod repsamplehelm-0 RepScheme Exists
    14m         Normal    StateChange              timestenclassic/repsamplehelm   Pod repsamplehelm-0 RepState IDLE
    14m         Normal    Info                     timestenclassic/repsamplehelm   Pod repsamplehelm-0 Database Loaded
    14m         Normal    Info                     timestenclassic/repsamplehelm   Pod repsamplehelm-0 RepAgent Running
    14m         Normal    Info                     timestenclassic/repsamplehelm   Pod repsamplehelm-0 RepScheme Exists
    14m         Normal    StateChange              timestenclassic/repsamplehelm   Pod repsamplehelm-0 RepState STANDBY
    14m         Normal    StateChange              timestenclassic/repsamplehelm   Pod repsamplehelm-0 is Ready
    14m         Normal    Upgrade                  timestenclassic/repsamplehelm   Upgrade of standby complete
    14m         Normal    StateChange              timestenclassic/repsamplehelm   TimesTenClassic was StandbyDown, now Normal
    14m         Normal    Upgrade                  timestenclassic/repsamplehelm   Deleted active pod repsamplehelm-1 during upgrade
    14m         Warning   Failed                   timestenclassic/repsamplehelm   Pod repsamplehelm-1 has failed
    14m         Normal    StateChange              timestenclassic/repsamplehelm   Pod repsamplehelm-1 is Not Ready
    14m         Normal    StateChange              timestenclassic/repsamplehelm   Pod repsamplehelm-1 is Not Active Ready
    14m         Warning   StateChange              timestenclassic/repsamplehelm   TimesTenClassic was Normal, now ActiveDown
    13m         Warning   Failed                   timestenclassic/repsamplehelm   Pod repsamplehelm-1 was replaced
    13m         Normal    Info                     timestenclassic/repsamplehelm   Pod repsamplehelm-0 Database Updatable
    13m         Normal    StateChange              timestenclassic/repsamplehelm   Pod repsamplehelm-0 RepState ACTIVE
    13m         Normal    StateChange              timestenclassic/repsamplehelm   Pod repsamplehelm-0 is Not Ready
    13m         Normal    StateChange              timestenclassic/repsamplehelm   TimesTenClassic was ActiveDown, now ActiveTakeover
    13m         Normal    StateChange              timestenclassic/repsamplehelm   Pod repsamplehelm-0 is Ready
    13m         Normal    StateChange              timestenclassic/repsamplehelm   Pod repsamplehelm-0 is Active Ready
    13m         Normal    StateChange              timestenclassic/repsamplehelm   TimesTenClassic was ActiveTakeover, now StandbyDown
    12m         Normal    Info                     timestenclassic/repsamplehelm   Pod repsamplehelm-1 Agent Up
    12m         Normal    Info                     timestenclassic/repsamplehelm   Pod repsamplehelm-1 Instance Exists
    12m         Normal    Info                     timestenclassic/repsamplehelm   Pod repsamplehelm-1 Daemon Down
    12m         Normal    Info                     timestenclassic/repsamplehelm   Pod repsamplehelm-1 Daemon Up
    12m         Normal    Info                     timestenclassic/repsamplehelm   Pod repsamplehelm-1 Database Unloaded
    12m         Normal    Info                     timestenclassic/repsamplehelm   Pod repsamplehelm-1 Database None
    12m         Normal    Info                     timestenclassic/repsamplehelm   pollAsyncStatus: Async polling for RepDuplicate, timeout in 597 secs
    12m         Normal    Info                     timestenclassic/repsamplehelm   pollAsyncStatus: Async polling for RepDuplicate, timeout in 594 secs
    11m         Normal    Info                     timestenclassic/repsamplehelm   pollAsyncStatus: Async polling for RepDuplicate, timeout in 591 secs
    11m         Normal    Info                     timestenclassic/repsamplehelm   pollAsyncStatus: Async polling for RepDuplicate, timeout in 588 secs
    11m         Normal    Info                     timestenclassic/repsamplehelm   RepDuplicate completed in 15 secs
    11m         Normal    Info                     timestenclassic/repsamplehelm   Pod repsamplehelm-1 Database Loaded
    11m         Normal    Info                     timestenclassic/repsamplehelm   Pod repsamplehelm-1 RepAgent Not Running
    11m         Normal    Info                     timestenclassic/repsamplehelm   Pod repsamplehelm-1 RepScheme Exists
    11m         Normal    StateChange              timestenclassic/repsamplehelm   Pod repsamplehelm-1 RepState IDLE
    11m         Normal    Info                     timestenclassic/repsamplehelm   Pod repsamplehelm-1 Database Loaded
    11m         Normal    Info                     timestenclassic/repsamplehelm   Pod repsamplehelm-1 RepAgent Running
    11m         Normal    Info                     timestenclassic/repsamplehelm   Pod repsamplehelm-1 RepScheme Exists
    11m         Normal    StateChange              timestenclassic/repsamplehelm   Pod repsamplehelm-1 RepState STANDBY
    11m         Normal    StateChange              timestenclassic/repsamplehelm   Pod repsamplehelm-1 is Ready
    11m         Normal    Upgrade                  timestenclassic/repsamplehelm   Upgrade completed in 326 secs
    11m         Normal    StateChange              timestenclassic/repsamplehelm   TimesTenClassic was StandbyDown, now Normal

    ダウングレード・プロセスが完了します。TimesTenClassicオブジェクトはNormal状態です。TimesTenデータベースは稼働中であり、正しく機能しています。アクティブ・スタンバイ・ペア・レプリケーションは、それらの間に構成されます。

  5. ダウングレード後、次の手順を実行します:
    1. レプリケートされたTimesTenClassicオブジェクトがNormal状態であり、アクティブがrepsamplehelm-0であることを確認します。
      kubectl get ttc 
      出力は、次のようになります。
      NAME            STATE    ACTIVE            AGE
      repsamplehelm   Normal   repsamplehelm-0   23h

      オブジェクトの状態はNormalです。アクティブはrepsamplehelm-0です。

    2. イメージを確認します。
      kubectl describe ttc repsamplehelm | grep Image
      出力は、次のようになります。
      Image:       container-registry.oracle.com/timesten/timesten:22.1.1.30.0
      ...
  6. 履歴を確認します。
    helm history repsamplehelm

    出力は、次のようになります。

    REVISION        UPDATED                         STATUS          CHART                   APP VERSION     DESCRIPTION
    1               Thu Jan  16 14:58:40 2025        superseded      ttclassic-2211300.1.0   22.1.1.30.0     Install complete
    2               Fri Jan  17 02:25:13 2025        superseded      ttclassic-2211310.1.0   22.1.1.31.0     Upgrade complete
    3               Fri Jan  17 13:54:33 2025        deployed        ttclassic-2211300.1.0   22.1.1.30.0     Rollback to 1

    リビジョン3がダウングレードされています。

  7. repsamplehelmリリースがダウングレードされていることを確認します。
    helm list
    出力は、次のようになります。
    NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                   APP VERSION
    repsamplehelm   default         3               2025-01-16 13:54:33.909336613 +0000 UTC deployed        ttclassic-2211300.1.0   22.1.1.30.0
    ...

    repsamplehelmチャート・リリースがダウングレードされています。

おめでとうございます。ロールバックは正常に完了しました。TimesTenClassicオブジェクトは目的のリリースにダウングレードされ、Normal状態です。TimesTenデータベースのレプリケートされたアクティブ・スタンバイ・ペアはダウングレードされたリリースを実行しており、完全に動作しています。