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 コンソールと移行コントローラーをターゲットクラスターにインストールする必要があります。
手順
crane
ユーティリティーをインストールします。$ podman cp $(podman create registry.redhat.io/rhmtc/openshift-migration-controller-rhel8:v1.8):/crane ./
- ソースクラスターのノードと宛先クラスターのノードにリモートでログインします。
ログイン後、両方のクラスターのクラスターコンテキストを取得します。
$ oc config view
コマンドシステムで次のコマンドを実行して、トンネルを確立します。
$ 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
というメッセージが表示されます。宛先制御ノード上にある OpenVPN サーバーで、
openvpn
サービスとproxied-cluster
サービスが実行されていることを確認します。$ oc get service -n <namespace>
ソースノードで、移行コントローラーのサービスアカウント (SA) トークンを取得します。
# oc sa get-token -n openshift-migration migration-controller
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 のリストに表示されます。
関連情報
- リモートクラスターごとに MigCluster CR マニフェストを作成する方法については、Migrating an application by using the MTC API を参照してください。
- Web コンソールを使用してクラスターを追加する方法については、Migrating your applications by using the MTC web console を参照してください。