10.3. 移行フック
単一の移行計画に最大 4 つの移行フックを追加し、各フックを移行の異なるフェーズで実行できます。移行フックは、アプリケーションの休止状態のカスタマイズ、サポート外のデータタイプの手動の移行、および移行後のアプリケーションの更新などのタスクを実行します。
移行フックは、以下の移行手順のいずれかでソースまたはターゲットクラスターで実行されます。
-
PreBackup: リソースがソースクラスターでバックアップされる前 -
PostBackup: リソースがソースクラスターでバックアップされた後 -
PreRestore: リソースがターゲットクラスターで復元される前 -
PostRestore: リソースがターゲットクラスターで復元された後
フックを作成するには、デフォルトの Ansible イメージまたはカスタムフックコンテナーで実行される Ansible Playbook を作成します。
Ansible Playbook
Ansible Playbook はフックコンテナーに設定マップとしてマウントされます。フックコンテナーは、MigPlan カスタムリソースに指定されるクラスター、サービスアカウント、および namespace を使用してジョブとして実行されます。ジョブは、デフォルトの再試行数 6 に達するか、正常に完了するまで実行を継続します。これは、最初の Pod がエビクトされるか、または強制終了される場合でも継続されます。
デフォルトの Ansible ランタイムイメージは registry.redhat.io/rhmtc/openshift-migration-hook-runner-rhel7:1.7 です。このイメージは Ansible Runner イメージをベースとしており、Ansible Kubernetes リソースの python-openshift および更新された oc バイナリーが含まれます。
カスタムフックコンテナー
デフォルトの Ansible イメージの代わりにカスタムフックコンテナーを使用できます。
10.3.1. 移行フックの Ansible Playbook の作成 リンクのコピーリンクがクリップボードにコピーされました!
Ansible Playbook を作成して移行フックとして使用することができます。フックは、MTC Web コンソールを使用するか、MigPlan カスタムリソース (CR) マニフェストに spec.hooks パラメーターの値を指定して移行計画に追加できます。
Ansible Playbook はフックコンテナーに設定マップとしてマウントされます。フックコンテナーは、MigPlan で指定されるクラスター、サービスアカウントおよび namespace を使用してジョブとして実行されます。フックコンテナーは指定されたサービスアカウントトークンを使用して、タスクがクラスターで実行される前に認証を必要としないようにします。
10.3.1.1. Ansible モジュール リンクのコピーリンクがクリップボードにコピーされました!
Ansible shell モジュールを使用して oc コマンドを実行できます。
shell モジュールの例
- hosts: localhost
gather_facts: false
tasks:
- name: get pod name
shell: oc get po --all-namespaces
- hosts: localhost
gather_facts: false
tasks:
- name: get pod name
shell: oc get po --all-namespaces
k8s_info などの kubernetes.core モジュールを使用して Kubernetes リソースと対話できます。
k8s_facts モジュールの例
fail モジュールを使用して、ゼロ以外の終了ステータスが正常に生成されない場合にゼロ以外の終了ステータスを生成し、フックの成功または失敗が検出されるようにします。フックはジョブとして実行され、フックの成功または失敗のステータスはジョブコンテナーの終了ステータスに基づいて表示されます。
fail モジュールの例
10.3.1.2. 環境変数 リンクのコピーリンクがクリップボードにコピーされました!
MigPlan CR 名および移行 namespace は環境変数としてフックコンテナーに渡されます。これらの変数は lookup プラグインを使用してアクセスされます。
環境変数の例