This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.9.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 イメージの代わりにカスタムフックコンテナーを使用できます。
9.3.1. 移行フックの Ansible Playbook の作成
Ansible Playbook を作成して移行フックとして使用することができます。フックは、MTC Web コンソールを使用するか、MigPlan
カスタムリソース (CR) マニフェストに spec.hooks
パラメーターの値を指定して移行計画に追加できます。
Ansible Playbook はフックコンテナーに設定マップとしてマウントされます。フックコンテナーは、MigPlan
で指定されるクラスター、サービスアカウントおよび namespace を使用してジョブとして実行されます。フックコンテナーは指定されたサービスアカウントトークンを使用して、タスクがクラスターで実行される前に認証を必要としないようにします。
9.3.1.1. Ansible モジュール
Ansible shell
モジュールを使用して oc
コマンドを実行できます。
shell
モジュールの例
- hosts: localhost gather_facts: false tasks: - name: get pod name shell: oc get po --all-namespaces
k8s_info
などの kubernetes.core
モジュールを使用して Kubernetes リソースと対話できます。
k8s_facts
モジュールの例
- hosts: localhost gather_facts: false tasks: - name: Get pod k8s_info: kind: pods api: v1 namespace: openshift-migration name: "{{ lookup( 'env', 'HOSTNAME') }}" register: pods - name: Print pod name debug: msg: "{{ pods.resources[0].metadata.name }}"
fail
モジュールを使用して、ゼロ以外の終了ステータスが正常に生成されない場合にゼロ以外の終了ステータスを生成し、フックの成功または失敗が検出されるようにします。フックはジョブとして実行され、フックの成功または失敗のステータスはジョブコンテナーの終了ステータスに基づいて表示されます。
fail
モジュールの例
- hosts: localhost gather_facts: false tasks: - name: Set a boolean set_fact: do_fail: true - name: "fail" fail: msg: "Cause a failure" when: do_fail
9.3.1.2. 環境変数
MigPlan
CR 名および移行 namespace は環境変数としてフックコンテナーに渡されます。これらの変数は lookup
プラグインを使用してアクセスされます。
環境変数の例
- hosts: localhost gather_facts: false tasks: - set_fact: namespaces: "{{ (lookup( 'env', 'MIGRATION_NAMESPACES')).split(',') }}" - debug: msg: "{{ item }}" with_items: "{{ namespaces }}" - debug: msg: "{{ lookup( 'env', 'MIGRATION_PLAN_NAME') }}"