11.2. 애플리케이션을 온-프레미스에서 클라우드 기반 클러스터로 마이그레이션

두 클러스터 간에 네트워크 터널을 설정하여 방화벽 뒤에 있는 소스 클러스터에서 클라우드 기반 대상 클러스터로 마이그레이션할 수 있습니다. crane tunnel-api 명령은 소스 클러스터에서 VPN 터널을 생성한 다음 대상 클러스터에서 실행 중인 VPN 서버에 연결하여 터널을 설정합니다. VPN 서버는 대상 클러스터에서 로드 밸런서 주소를 사용하여 클라이언트에 노출됩니다.

대상 클러스터에서 생성된 서비스는 대상 클러스터에서 실행 중인 MTC에 소스 클러스터의 API를 노출합니다.

사전 요구 사항

  • VPN 터널을 생성하는 시스템은 액세스 권한이 있어야 하며 두 클러스터에 모두 로그인해야 합니다.
  • 대상 클러스터에 로드 밸런서를 생성할 수 있어야 합니다. 클라우드 공급자를 참조하여 이러한 문제가 발생할 수 있는지 확인하십시오.
  • VPN 터널을 실행할 소스 클러스터와 대상 클러스터에서 네임스페이스에 할당할 이름이 있어야 합니다. 이러한 네임스페이스는 사전에 생성되지 않아야 합니다. 네임스페이스 규칙에 대한 자세한 내용은 https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-subdomain-names을 참조하십시오.
  • 클라우드 클러스터에 여러 방화벽 보호 소스 클러스터를 연결할 때 각 소스 클러스터에 고유한 네임스페이스가 필요합니다.
  • OpenVPN 서버가 대상 클러스터에 설치되어 있습니다.
  • OpenVPN 클라이언트가 소스 클러스터에 설치되어 있습니다.
  • MTC에서 소스 클러스터를 구성할 때 API URL은 https://proxied-cluster.<namespace>.svc.cluster.local:8443 의 형식을 취합니다.

    • API를 사용하는 경우 각 원격 클러스터에 대해 MigCluster CR 매니페스트 생성을 참조하십시오.
    • MTC 웹 콘솔을 사용하는 경우 MTC 웹 콘솔 을 사용하여 애플리케이션 마이그레이션을 참조하십시오.
  • MTC 웹 콘솔 및 마이그레이션 컨트롤러가 대상 클러스터에 설치되어 있어야 합니다.

절차

  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>

    네임스페이스를 지정하지 않으면 명령에서 기본값 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 웹 콘솔을 열고 소스 클러스터를 추가합니다.

    • 클러스터 이름: 소스 클러스터 이름입니다.
    • URL: proxied-cluster.<namespace>.svc.cluster.local:8443. <namespace>의 값을 정의하지 않은 경우 openvpn을 사용하십시오.
    • 서비스 계정 토큰: 마이그레이션 컨트롤러 서비스 계정의 토큰입니다.
    • 이미지 레지스트리에 노출된 경로 호스트:proxied-cluster.<namespace>.svc.cluster.local:5000. <namespace>의 값을 정의하지 않은 경우 openvpn을 사용하십시오.

MTC가 연결을 성공적으로 검증한 후 마이그레이션 계획을 생성하고 실행할 수 있습니다. 소스 클러스터의 네임스페이스가 네임스페이스 목록에 표시되어야 합니다.

추가 리소스