이 페이지에서는 Apigee Hybrid 조직을 한 Kubernetes 클러스터에서 다른 Kubernetes 클러스터로 마이그레이션하는 방법을 설명합니다. 조직을 다른 클러스터로 마이그레이션해야 하는 경우는 다음과 같습니다.
- 기존 클러스터를 호스팅하는 데이터 센터의 용량이 가득 찼거나 사용이 중단됩니다.
- 클러스터에서 이전 인프라 또는 이전 버전의 Kubernetes를 실행 중이며 최신 인프라가 있는 클러스터로 마이그레이션하려고 합니다.
- 다중 조직 클러스터에서 개별 클러스터로 조직을 이동하려고 합니다.
조직을 다른 하이브리드 클러스터로 마이그레이션할 때는 위험과 제한 사항이 있습니다. 마이그레이션을 수행하기 전에 제한사항 섹션의 세부정보를 읽어보세요.
제한사항
하이브리드 조직을 다른 Kubernetes 클러스터로 마이그레이션할 때는 다음 제한사항이 적용됩니다.
- 조직 데이터를 새 Kubernetes 클러스터로 이동하면 데이터 손실 위험이 있습니다. 조직을 마이그레이션하기 전에 하이브리드 백업 안내에 따라 Kubernetes 클러스터 내 모든 조직의 데이터를 백업하세요.
- 조직의 모든 키스페이스에서 조직 마이그레이션에 지원되는 최대 데이터 크기는 캐시 및 할당량을 제외하면 5GB입니다.
- 캐시 데이터는 마이그레이션되지 않습니다. 하이브리드는 캐시 데이터를 다시 빌드합니다.
- 할당량 데이터는 마이그레이션되지 않습니다. 하이브리드는 할당량 데이터를 재설정합니다.
- 기존에 하이브리드 배포가 포함되지 않은 Kubernetes 클러스터로만 조직을 마이그레이션할 수 있습니다. 기존 하이브리드 배포가 존재하는 클러스터로는 마이그레이션할 수 없습니다.
- 마이그레이션 대상 조직은 단일 리전 배포가 있는 새 클러스터로만 이동할 수 있습니다. 단일 리전 배포를 실행한 후에는 멀티 리전 배포에 설명된 리전 확장 프로세스를 따라 다른 리전으로 확장할 수 있습니다.
- Cassandra 클러스터는 모든 리전에서 정상 작동합니다.
조직 마이그레이션
아래 안내에 따라 하나의 Kubernetes 클러스터에서 다른 Kubernetes 클러스터로 하이브리드 조직을 마이그레이션합니다.
- 아직 사용 설정하지 않은 경우 마이그레이션할 하이브리드 조직을 포함하는 Kubernetes 클러스터에서 백업을 사용 설정합니다. 하이브리드 백업에 대한 자세한 내용은 Cassandra 백업 개요를 참조하세요.
- 다음 명령어를 사용하여 하이브리드 백업 작업을 시작합니다.
kubectl create job -n APIGEE_NAMESPACE --from=cronjob/apigee-cassandra-backup <backup job name>
<backup job name>
은 유효한 컨테이너 이름일 수 있습니다. - 백업 작업이 완료되면 백업 모니터링의 다음 섹션에 있는 안내를 따라 백업이 성공적으로 완료되었는지 확인합니다.
- '백업 작업 상태 확인'
- '백업 로그 확인'
- 백업이 성공했는지 확인한 후 백업 로그 끝에 있는 ID 번호를 기록해 둡니다.
예를 들어 성공적인 백업 로그에는 다음과 같은 줄이 포함됩니다.
줄 끝에 있는 여러 자리의 숫자를 기록해 둡니다. 이 번호는 나중에 필요합니다.INFO: completed upload for 20230207004250
- Kubernetes 컨텍스트를 대상 Kubernetes 클러스터로 전환합니다.
kubectl config use-context <destination cluster name> # <destination cluster name>
여기서
<destination cluster name>
은 대상 Kubernetes 클러스터의 이름입니다. - 단일 리전에서 복원의 안내에 따라 대상 Kubernetes 클러스터로 백업 데이터를 복원합니다.
- 대상 하이브리드 배포로 마이그레이션되는 조직의 overrides.yaml 파일을 사용합니다.
restore:snapshotTimestamp
값을 4단계의 백업 로그에 표시된 여러 자리 숫자로 설정해야 합니다. 단일 리전에서 복원을 참조하세요.
- 복원이 완료되면 대상 Kubernetes 클러스터에서 마이그레이션 중인 조직의 데이터를 제외한 모든 조직 데이터를 삭제합니다. 하이브리드 백업 파일에는 마이그레이션하지 않으려는 조직을 포함한 모든 조직에 대한 데이터가 포함됩니다. 대상 하이브리드 배포가 복원된 후에는 다음 단계를 수행하여 배포에 복사된 추가 조직 데이터를 삭제해야 합니다.
- 현재 컨텍스트가 대상 Kubernetes 클러스터에 대해 컨텍스트인지 확인합니다.
kubectl config current-context
apigee-cassandra-default-0
포드에 실행합니다.kubectl exec -it -n APIGEE_NAMESPACE apigee-cassandra-default-0 -- /bin/bash
- 다음 명령어를 실행합니다.
find /opt/apigee/data/apigee-cassandra/ -iname '*_hybrid' -not -iname '*<migrated org name>*' -type d -maxdepth 2 -printf "%f\n"
<migrated org name>
찾기에 대한 안내는 마이그레이션된 조직 이름 가져오기를 참조하세요.출력에 표시되는 모든 이름의 목록을 복사합니다. 이 목록은 7. f단계에서 필요합니다.
apigee-cassandra-default-0
포드를 종료합니다.- 디버깅용 클라이언트 컨테이너 만들기의 안내에 따라 Cassandra 디버그 클라이언트 포드를 만듭니다.
cqlsh
프롬프트가 표시되면 다음 단계로 이동합니다. cqlsh
프롬프트에서 다음 명령어를 실행합니다.-
desc keyspaces;
이 명령어가 오류를 반환하지 않는지 확인합니다.
- 7. c단계에서 만든 목록의 각 이름에 대해 다음 명령어를 실행합니다.
drop keyspace <name>
-
- Cassandra 디버그 클라이언트 포드를 종료합니다.
cqlsh
명령어를 실행한 후 대상 Kubernetes 클러스터의 모든 Cassandra 포드에서 다음 명령어를 실행합니다.kubectl exec -it -n APIGEE_NAMESPACE
-- /bin/bash find /opt/apigee/data/apigee-cassandra/ -iname '*_hybrid' -not -iname '*<migrated org name>*' -type d -maxdepth 2
<migrated org name>
찾기에 대한 안내는 마이그레이션된 조직 이름 가져오기를 참조하세요.find /opt/apigee/data/apigee-cassandra/ -iname '*_hybrid' -not -iname '*
*' -type d -maxdepth 2 -exec rm -rf {} +
- Cassandra 포드를 종료합니다.
- 현재 컨텍스트가 대상 Kubernetes 클러스터에 대해 컨텍스트인지 확인합니다.
- Kubernetes 컨텍스트를 소스 Kubernetes 클러스터로 전환합니다.
kubectl config use-context <source cluster name>
여기서
<source cluster name>
은 소스 Kubernetes 클러스터의 이름입니다. - 소스 Kubernetes 클러스터에서 마이그레이션된 조직을 삭제합니다. 삭제 명령어에 조직의
overrides.yaml
파일을 사용해야 합니다.- 현재 컨텍스트가 소스 Kubernetes 클러스터에 올바른 컨텍스트인지 확인합니다.
kubectl config current-context
필요한 경우 Kubernetes 컨텍스트를 클러스터로 설정하고 조직을 사용 중단해야 합니다.
현재 컨텍스트를 나열하여 각 클러스터의 컨텍스트 이름을 확인합니다.
kubectl config get-contexts
컨텍스트를 사용 중단하려는 클러스터와 리전으로 설정합니다.
kubectl config use-context CONTEXT_NAME
여기서 CONTEXT_NAME은 클러스터 및 리전의 컨텍스트 이름입니다.
예를 들면 다음과 같습니다.
kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE gke_example-org-1_us-central1_example-cluster-1 gke_example-org-1_us-central1_example-cluster-1 gke_example-org-1_us-central1_example-cluster-1 apigee * gke_example-org-1_us-central1_example-cluster-2 gke_example-org-1_us-central1_example-cluster-2 gke_example-org-1_us-central1_example-cluster-2 apigee gke_example-org-1_us-west1_example-cluster-2 gke_example-org-1_us-west1_example-cluster-2 gke_example-org-1_us-west1_example-cluster-2 apigeekubectl config use-context gke_example-org-1_us-west1_example-cluster-2
- virtualhost를 삭제합니다. 각 환경 그룹에 대해 이를 반복합니다.
helm -n APIGEE_NAMESPACE delete ENV_GROUP_NAME
- 환경을 삭제합니다. 각 환경에 대해 이를 반복합니다.
helm -n APIGEE_NAMESPACE delete ENV_NAME
- Apigee 조직을 삭제합니다.
helm -n APIGEE_NAMESPACE delete ORG_NAME
- apigee-cassandra-default-0 포드에 다음을 실행합니다.
kubectl exec -it -n APIGEE_NAMESPACE apigee-cassandra-default-0 -- /bin/bash
- 다음 명령어를 실행합니다.
find /opt/apigee/data/apigee-cassandra/ -iname '*<migrated org name>_hybrid' -type d -maxdepth 2 -printf "%f\n"
<migrated org name>
찾기에 대한 안내는 마이그레이션된 조직 이름 가져오기를 참조하세요.출력에 표시된 모든 이름의 목록을 복사합니다. 이 목록은 9. j단계에서 필요합니다.
apigee-cassandra-default-0
포드를 종료합니다.- 디버깅용 클라이언트 컨테이너 만들기의 안내에 따라 Cassandra 디버그 클라이언트 포드를 만듭니다.
cqlsh
프롬프트가 표시되면 다음 단계로 이동합니다. cqlsh
프롬프트에서 다음 명령어를 실행합니다.desc keyspaces;
이 명령어가 오류를 반환하지 않는지 확인합니다.
- 10단계에서 생성된 목록의 각 이름에 대해. f.,
다음 명령어를 실행합니다.
drop keyspace <name>;
- Cassandra 디버그 클라이언트 포드를 종료합니다.
-
kubectl exec -it -n APIGEE_NAMESPACE CASSANDRA_POD_NAME -- /bin/bash
-
find /opt/apigee/data/apigee-cassandra/ -iname '*<migrated org name>_hybrid' -type d -maxdepth 2
<migrated org name>
찾기에 대한 안내는 마이그레이션된 조직 이름 가져오기를 참조하세요. -
find /opt/apigee/data/apigee-cassandra/ -iname '*<migrated org name>_hybrid' -type d -maxdepth 2 -exec rm -rf {} +
- Cassandra 포드를 종료합니다.
cqlsh
명령어를 실행한 후 소스 Kubernetes 클러스터의 모든 Cassandra 포드에서 다음 명령어를 실행합니다. - 현재 컨텍스트가 소스 Kubernetes 클러스터에 올바른 컨텍스트인지 확인합니다.
마이그레이션된 조직 이름 가져오기
이전 섹션에서 설명된 절차의 여러 단계에서는 마이그레이션된 조직 이름이 필요합니다. 마이그레이션된 조직 이름을 가져오려면 다음을 수행합니다.
- 조직의 overrides.yaml 파일에서 조직 이름을 가져옵니다. 마이그레이션 중인 조직의 overrides.yaml 파일을 확인합니다.
- 조직 이름에 대시 '-'가 포함된 경우 모든 대시 '-'를 밑줄 '_'로 바꿉니다.