이 가이드에서는 다음 플랫폼에 대해 멀티 클러스터 메시를 설정하는 방법을 설명합니다.
- VMware용 GKE
- 베어메탈용 Google Distributed Cloud Virtual
- GKE on AWS
- Amazon EKS
이 가이드에서는 2개의 클러스터를 설정하는 방법을 보여주지만 이 프로세스를 확장하여 원하는 수의 클러스터를 메시에 통합할 수 있습니다.
시작하기 전에
이 가이드에서는 asmcli install
을 사용하여 Anthos Service Mesh를 설치했다고 가정합니다. asmcli install
을 실행할 때 asmcli
가 --output_dir
에 지정된 디렉터리에 다운로드하는 구성 패키지 및 asmcli
가 필요합니다.
설정하려면 시작하기의 단계에 따라 다음을 수행합니다.
메시에 설정하려는 모든 클러스터에 대해 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}"
asmcli
에 필요한 형식으로 클러스터 이름에 대한 환경 변수를 만듭니다.export CLUSTER_1="cn-FLEET_PROJECT_ID-global-CLUSTER_NAME_1" export CLUSTER_2="cn-FLEET_PROJECT_ID-global-CLUSTER_NAME_2"
east-west 게이트웨이 설치
다음 명령어를 실행합니다.
CLUSTER_NAME_1
및CLUSTER_NAME_2
를 클러스터 이름으로 바꿉니다.PATH_TO_KUBECONFIG_1
및PATH_TO_KUBECONFIG_2
를 해당 클러스터의 kubeconfig 파일로 바꿉니다.
Mesh CA
$CLUSTER_2
의 east-west 트래픽 전용 cluster1에 게이트웨이를 설치합니다. 기본적으로 이 게이트웨이는 인터넷에 공개됩니다. 프로덕션 시스템에서는 외부 공격을 차단하기 위해 방화벽 규칙과 같은 추가 액세스 제한이 필요할 수 있습니다.asm/istio/expansion/gen-eastwest-gateway.sh \ --mesh ${MESH_ID} \ --cluster ${CLUSTER_1} \ --network default \ --revision asm-1118-4 | \ istioctl --kubeconfig=PATH_TO_KUBECONFIG_1 install -y --set spec.values.global.pilotCertProvider=kubernetes -f -
$CLUSTER_2
에$CLUSTER_1
의 East-West 트래픽 전용 게이트웨이를 설치합니다.asm/istio/expansion/gen-eastwest-gateway.sh \ --mesh ${MESH_ID} \ --cluster ${CLUSTER_2} \ --network default \ --revision asm-1118-4 | \ istioctl install --kubeconfig=PATH_TO_KUBECONFIG_2 -y --set spec.values.global.pilotCertProvider=kubernetes -f -
Istio CA
$CLUSTER_2
의 East-West 트래픽 전용 cluster1에 게이트웨이를 설치합니다. 기본적으로 이 게이트웨이는 인터넷에 공개됩니다. 프로덕션 시스템에서는 외부 공격을 차단하기 위해 방화벽 규칙과 같은 추가 액세스 제한이 필요할 수 있습니다.asm/istio/expansion/gen-eastwest-gateway.sh \ --mesh ${MESH_ID} \ --cluster ${CLUSTER_1} \ --network default \ --revision asm-1118-4 | \ 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} \ --cluster ${CLUSTER_2} \ --network default \ --revision asm-1118-4 | \ istioctl --kubeconfig=PATH_TO_KUBECONFIG_2 install -y -f -
노출 중인 서비스
클러스터가 별도의 네트워크에 있으므로 두 클러스터의 east-west 게이트웨이에 모든 서비스(*.local
)를 노출해야 합니다. 이 게이트웨이는 인터넷에서는 공개 상태지만, 마치 동일한 네트워크에 있는 것처럼 신뢰할 수 있는 mTLS 인증서와 워크로드 ID를 사용하는 서비스만 이러한 서비스에 액세스할 수 있습니다.
CLUSTER_NAME_1
의 east-west 게이트웨이를 통해 서비스를 노출합니다.kubectl --kubeconfig=PATH_TO_KUBECONFIG_1 apply -n istio-system -f \ asm/istio/expansion/expose-services.yaml
CLUSTER_NAME_2
의 east-west 게이트웨이를 통해 서비스를 노출합니다.kubectl --kubeconfig=PATH_TO_KUBECONFIG_2 apply -n istio-system -f \ asm/istio/expansion/expose-services.yaml
엔드포인트 검색 사용 설정
asmcli create-mesh
명령어를 실행하여 엔드포인트 검색을 사용 설정합니다. 이 예시에서는 클러스터 2개만 표시하지만 명령어를 실행하면 Fleet에 추가할 수 있는 최대 허용 클러스터 수에 따라 추가 클러스터에 엔드포인트 검색을 사용 설정할 수 있습니다.
./asmcli create-mesh \
FLEET_PROJECT_ID \
PATH_TO_KUBECONFIG_1 \
PATH_TO_KUBECONFIG_2