11.2. オンプレミスからクラウドベースのクラスターへのアプリケーション移行

2 つのクラスター間にネットワークトンネルを確立することにより、ファイアウォールの背後にあるソースクラスターからクラウドベースの宛先クラスターに移行できます。crane tunnel-api コマンドは、ソースクラスター上に VPN トンネルを作成し、宛先クラスター上で実行されている VPN サーバーに接続することにより、このようなトンネルを確立します。VPN サーバーは、宛先クラスターのロードバランサーアドレスを使用してクライアントに公開されます。

宛先クラスターで作成されたサービスは、ソースクラスターの API を宛先クラスターで実行されている MTC に公開します。

前提条件

  • VPN トンネルを作成するシステムは、両方のクラスターにアクセスしてログインしている必要があります。
  • 宛先クラスターにロードバランサーを作成できる必要があります。これが可能であることを確認するには、クラウドプロバイダーに問い合わせてください。
  • VPN トンネルを実行するソースクラスターと宛先クラスターの両方で、namespace に割り当てる名前を用意します。これらの namespace は事前に作成しないでください。namespace ルールの詳細については、https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-subdomain-names を参照してください。
  • ファイアウォールで保護された複数のソースクラスターをクラウドクラスターに接続する場合、各ソースクラスターには独自の namesapce が必要です。
  • OpenVPN サーバーが宛先クラスターにインストールされていること。
  • OpenVPN クライアントがソースクラスターにインストールされていること。
  • MTC でソースクラスターを設定する場合、API URL は https://proxied-cluster.<namespace>.svc.cluster.local:8443 の形式であること。

    • API を使用する場合は、リモートクラスターごとに MigCluster CR マニフェストを作成 を参照してください。
    • MTC Web コンソールを使用する場合は、MTC Web コンソールを使用したアプリケーションの移行 を参照してください。
  • MTC Web コンソールと移行コントローラーをターゲットクラスターにインストールする必要があります。

手順

  1. crane ユーティリティーをインストールします。

    $ podman cp $(podman create registry.redhat.io/rhmtc/openshift-migration-controller-rhel8:v1.8):/crane ./
  2. ソースクラスターのノードと宛先クラスターのノードにリモートでログインします。
  3. ログイン後、両方のクラスターのクラスターコンテキストを取得します。

    $ oc config view
  4. コマンドシステムで次のコマンドを実行して、トンネルを確立します。

    $ crane tunnel-api [--namespace <namespace>] \
          --destination-context <destination-cluster> \
          --source-context <source-cluster>

    namespace を指定しない場合、コマンドはデフォルト値の openvpn を使用します。

    以下に例を示します。

    $ crane tunnel-api --namespace my_tunnel \
          --destination-context openshift-migration/c131-e-us-east-containers-cloud-ibm-com/admin \
          --source-context default/192-168-122-171-nip-io:8443/admin
    ヒント

    crane tunnel-api --help と入力し、crane tunnel-api コマンドで使用可能なすべてのパラメーターを確認します。

    このコマンドは、TSL/SSL 証明書を生成します。このプロセスには数分の時間がかかる可能性があります。プロセスが完了すると、メッセージが表示されます。

    OpenVPN サーバーは宛先クラスターで起動し、OpenVPN クライアントはソースクラスターで起動します。

    数分後、ロードバランサーはソースノードで解決します。

    ヒント

    root 権限で次のコマンドを実行すると、OpenVPN Pod のログを表示してこのプロセスのステータスを確認できます。

    # oc get po -n <namespace>

    出力例

    NAME            READY     STATUS      RESTARTS    AGE
    <pod_name>    2/2       Running     0           44s

    # oc logs -f -n <namespace> <pod_name> -c openvpn

    ロードバランサーのアドレスが解決されると、ログの最後に Initialization Sequence Completed というメッセージが表示されます。

  5. 宛先制御ノード上にある OpenVPN サーバーで、openvpn サービスとproxied-cluster サービスが実行されていることを確認します。

    $ oc get service -n <namespace>
  6. ソースノードで、移行コントローラーのサービスアカウント (SA) トークンを取得します。

    # oc sa get-token -n openshift-migration migration-controller
  7. MTC Web コンソールを開き、次の値を使用してソースクラスターを追加します。

    • Cluster name: ソースクラスター名。
    • URL: proxied-cluster.<namespace>.svc.cluster.local:8443<namespace> の値を定義しなかった場合は、openvpn を使用してください。
    • Service account token: 移行コントローラーのサービスアカウントのトークン。
    • Exposed route host to image registry: proxied-cluster.<namespace>.svc.cluster.local:5000<namespace> の値を定義しなかった場合は、openvpn を使用してください。

MTC が接続を正常に検証した後、移行計画の作成と実行に進むことができます。ソースクラスターの namespace は、namespace のリストに表示されます。

関連情報