하이브리드 메시 설정
이 페이지에서는 다음 플랫폼에 대해 하이브리드 메시를 설정하는 방법을 설명합니다.
- 하이브리드: Google Cloud 기반 GKE 및 Google Distributed Cloud(프리뷰)
- 하이브리드: Google Cloud 기반 GKE 및 Google Distributed Cloud(프리뷰)
이 페이지에서는 안내에 따라 두 개의 클러스터를 설정하지만 이 프로세스를 확장하여 여러 개의 클러스터를 메시에 통합할 수 있습니다.
기본 요건
- 모든 클러스터는 동일한 Fleet 호스트 프로젝트에 등록해야 합니다.
- 모든 GKE 클러스터는 동일한 네트워크의 공유 VPC 구성 안에 위치해야 합니다.
- 클러스터의 Kubernetes 컨트롤 플레인 주소와 게이트웨이 주소는 메시의 모든 클러스터에서 연결할 수 있어야 합니다. GKE 클러스터가 있는 Google Cloud 프로젝트에서 외부 부하 분산 유형을 만들 수 있도록 허용되어야 합니다. 승인된 네트워크 및 VPC 방화벽 규칙을 사용해서 액세스를 제한하는 것이 좋습니다.
- GKE 비공개 클러스터를 포함한 비공개 클러스터는 지원되지 않습니다. Google Distributed Cloud 및 Google Distributed Cloud를 포함한 온프레미스 클러스터를 사용하는 경우 GKE 클러스터의 포드에서 Kubernetes 컨트롤 플레인 주소 및 게이트웨이 주소에 연결할 수 있어야 합니다. CloudVPN을 사용하여 GKE 클러스터의 서브넷을 온프레미스 클러스터 네트워크에 연결하는 것이 좋습니다.
- Istio CA를 사용하는 경우 모든 클러스터에 동일한 커스텀 루트 인증서를 사용합니다.
시작하기 전에
메시에 설정하려는 모든 클러스터에 대해 kubeconfig 파일 액세스 권한이 필요합니다. GKE 클러스터의 경우 클러스터의 새 kubeconfig 파일을 만들려면 터미널의 값으로 파일 전체 경로가 있는 KUBECONFIG
환경을 내보내고 kubeconfig 항목을 생성할 수 있습니다.
환경 변수 및 자리표시자 설정
east-west 게이트웨이를 설치할 때는 다음 환경 변수가 필요합니다.
프로젝트 번호의 환경 변수를 만듭니다. 다음 명령어에서 FLEET_PROJECT_ID를 Fleet 호스트 프로젝트의 프로젝트 ID로 바꿉니다.
export PROJECT_NUMBER=$(gcloud projects describe FLEET_PROJECT_ID --format="value(projectNumber)")
메시 식별자의 환경 변수를 만듭니다.
export MESH_ID="proj-${PROJECT_NUMBER}"
네트워크 이름용 환경 변수를 만듭니다.
GKE 클러스터는 기본적으로 클러스터 네트워크 이름으로 지정됩니다.
export NETWORK_1="PROJECT_ID-CLUSTER_NETWORK"
다른 클러스터는
default
를 사용합니다.export NETWORK_2="default"
--network_id
에 다른 값을 사용해서 다른 클러스터에 Cloud Service Mesh를 설치한 경우 동일한 값을 NETWORK_2에 값으로 전달해야 합니다.
east-west 게이트웨이 설치
CLUSTER_2(온프레미스 클러스터)에 대한 east-west 트래픽 전용 클러스터인 CLUSTER_1(GKE 클러스터)에 게이트웨이를 설치합니다.
asm/istio/expansion/gen-eastwest-gateway.sh \ --mesh ${MESH_ID} \ --network ${NETWORK_1} \ --revision asm-1232-2 | \ ./istioctl --kubeconfig=PATH_TO_KUBECONFIG_1 install -y -f -
이 게이트웨이는 기본적으로 인터넷에 공개되어 있습니다. 프로덕션 시스템에서는 외부 공격을 차단하기 위해 방화벽 규칙과 같은 추가 액세스 제한이 필요할 수 있습니다.
CLUSTER_2에 CLUSTER_1의 east-west 트래픽 전용 게이트웨이를 설치합니다.
asm/istio/expansion/gen-eastwest-gateway.sh \ --mesh ${MESH_ID} \ --network ${NETWORK_2} \ --revision asm-1232-2 | \ ./istioctl --kubeconfig=PATH_TO_KUBECONFIG_2 install -y -f -
서비스 노출
클러스터가 별도의 네트워크에 있으므로 두 클러스터의 east-west 게이트웨이에 모든 서비스(\*.local
)를 노출해야 합니다. 이 게이트웨이는 인터넷에서는 공개 상태지만, 마치 동일한 네트워크에 있는 것처럼 신뢰할 수 있는 mTLS 인증서와 워크로드 ID를 사용하는 서비스만 이러한 서비스에 액세스할 수 있습니다.
모든 클러스터의 east-west 게이트웨이를 통해 서비스 노출
kubectl --kubeconfig=PATH_TO_KUBECONFIG_1 apply -n istio-system -f \
asm/istio/expansion/expose-services.yaml
kubectl --kubeconfig=PATH_TO_KUBECONFIG_2 apply -n istio-system -f \
asm/istio/expansion/expose-services.yaml
엔드포인트 검색 사용 설정
asmcli create-mesh
명령어를 실행하여 엔드포인트 검색을 사용 설정합니다. 이 예시에서는 클러스터 2개만 표시하지만 명령어를 실행하면 GKE 허브 서비스 한도에 따른 추가 클러스터에 엔드포인트 검색을 사용 설정할 수 있습니다.
./asmcli create-mesh \
FLEET_PROJECT_ID \
PATH_TO_KUBECONFIG_1 \
PATH_TO_KUBECONFIG_2
멀티 클러스터 연결 확인
사이드카 프록시 삽입을 참조하세요.