이 가이드에서는 내부 네트워크에서 Cloud Run for Anthos 에 배포된 서비스를 노출하는 방법을 설명합니다. 이 구성 유형을 사용하면 네트워크의 다른 리소스가 비공개 내부(RFC 1918) IP 주소를 사용하여 서비스와 통신할 수 있습니다. 내부 네트워크에 서비스를 노출하는 것은 내부 앱을 직원에게 제공하는 기업과 Cloud Run for Anthos 클러스터 외부에서 실행되는 클라이언트가 사용하는 서비스에 유용합니다.
Cloud Run for Anthos는 GKE에서 실행되는 앱 및 기능을 배포하고 제공하는 개발자 중심 환경을 제공합니다. 기본적으로 Cloud Run for Anthos는 Istio의 인그레스 게이트웨이를 사용하여 클러스터 외부에 서비스를 노출합니다.
이 게이트웨이는 LoadBalancer
유형의 Kubernetes 서비스이며 기본적으로 네트워크 부하 분산을 사용하여 공개 IP 주소에 노출됩니다.
이 가이드에서는 Istio의 인그레스 게이트웨이를 변경하여 VPC 네트워크의 내부 IP 주소에 Cloud Run for Anthos 서비스를 노출하여 네트워크 부하 분산 대신 내부 TCP/UDP 부하 분산을 사용하는 방법을 보여줍니다.
목표
- Cloud Run이 사용 설정된 GKE 클러스터를 만듭니다.
- 내부 TCP/UDP 부하 분산을 사용하도록 Istio 인그레스 게이트웨이를 업데이트합니다.
- Cloud Run for Anthos에 샘플 서비스를 배포하여 앱을 테스트합니다.
비용
이 가이드에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.
프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요. Google Cloud를 처음 사용하는 사용자는 무료 체험판을 사용할 수 있습니다.
이 가이드를 마치면 만든 리소스를 삭제하여 비용이 계속 청구되지 않게 할 수 있습니다. 자세한 내용은 삭제를 참조하세요.
시작하기 전에
-
Google 계정으로
로그인합니다.
아직 계정이 없으면 새 계정을 등록하세요.
-
Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.
-
Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.
-
Cloud Console에서 Cloud Shell을 활성화합니다.
Cloud Console 하단에 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은
gcloud
명령줄 도구가 포함되고 Cloud SDK가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.
Cloud Shell에서 이 가이드의 모든 명령어를 실행합니다. - Cloud Shell에서 Cloud Run API, GKE API, Cloud API를 사용 설정합니다.
gcloud services enable \ cloudapis.googleapis.com \ container.googleapis.com \ run.googleapis.com
환경 설정
Cloud Shell에서 이 가이드에 사용할 Compute Engine 영역의 환경 변수와
gcloud
도구 기본값, GKE 클러스터 이름을 정의합니다.ZONE=us-central1-f CLUSTER=cloudrun-gke-ilb-tutorial gcloud config set compute/zone $ZONE gcloud config set run/cluster $CLUSTER gcloud config set run/cluster_location $ZONE
이 가이드의 예시에서는
us-central1-f
를 영역으로 사용하고cloudrun-gke-ilb-tutorial
을 클러스터 이름으로 사용합니다. 다른 값을 사용할 수 있습니다. 자세한 내용은 위치 및 리전을 참조하세요.
Cloud Run이 사용 설정된 GKE 클러스터 만들기
Cloud Shell에서 Cloud Run 부가기능을 사용하여 GKE 클러스터를 만듭니다.
gcloud beta container clusters create $CLUSTER \ --addons HorizontalPodAutoscaling,HttpLoadBalancing,CloudRun \ --enable-ip-alias \ --enable-stackdriver-kubernetes \ --machine-type n1-standard-2
내부 TCP/UDP 부하 분산 구성
Cloud Shell에서 Istio 인그레스 게이트웨이를 패치하여 내부 TCP/UDP 부하 분산을 사용합니다.
kubectl -n gke-system patch svc istio-ingress -p \ '{"metadata":{"annotations":{"cloud.google.com/load-balancer-type":"Internal"}}}'
변경사항이 적용되는 데 몇 분 정도 걸릴 수 있습니다. 다음 명령어를 실행하여 GKE 클러스터 변경사항을 폴링합니다. 비공개 IP 주소로 변경할
EXTERNAL-IP
값을 찾습니다.kubectl -n gke-system get svc istio-ingress --watch
EXTERNAL-IP
필드에 비공개 IP 주소가 표시될 때 폴링을 중지하려면Ctrl+C
를 누릅니다.
샘플 서비스 배포
Cloud Shell에서
sample
라는 서비스를default
네임스페이스의 Cloud Run for Anthos에 배포합니다.gcloud run deploy sample \ --image gcr.io/knative-samples/simple-api \ --namespace default \ --platform gke
내부 연결 확인
Cloud Shell에서 GKE 클러스터와 동일한 영역에 Compute Engine 가상 머신(VM)을 만듭니다.
VM=cloudrun-gke-ilb-tutorial-vm gcloud compute instances create $VM
Istio 인그레스 게이트웨이의 비공개 IP 주소를
EXTERNAL_IP
라는 환경 변수와external-ip.txt
라는 파일에 저장합니다.export EXTERNAL_IP=$(kubectl -n gke-system get svc istio-ingress \ -o jsonpath='{.status.loadBalancer.ingress[0].ip}' | tee external-ip.txt)
IP 주소가 포함된 파일을 VM에 복사합니다.
gcloud compute scp external-ip.txt $VM:~
SSH를 사용하여 VM에 연결합니다.
gcloud compute ssh $VM
SSH 세션에서 샘플 서비스를 테스트합니다.
curl -s -w'\n' -H Host:sample.default.example.com $(cat external-ip.txt)
출력은 다음과 같습니다.
OK
SSH 세션을 종료합니다.
exit
문제해결
이 가이드에서 문제가 발생하면 다음 문서를 검토하세요.
삭제
이 가이드에서 사용한 리소스 비용이 Google Cloud Platform 계정에 청구되지 않도록 하려면 다음 안내를 따르세요.
프로젝트 삭제
- Cloud Console에서 리소스 관리 페이지로 이동합니다.
- 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
- 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.
개별 리소스 삭제
이 가이드에서 사용된 Google Cloud 프로젝트를 유지하려면 개별 리소스를 삭제합니다.
GKE 클러스터를 삭제합니다.
gcloud container clusters delete $CLUSTER --quiet --async
Compute Engine 인스턴스를 삭제합니다.
gcloud compute instances delete $VM --quiet
다음 단계
- Istio 및 Cloud ID Platform을 사용한 Cloud Run for Anthos의 최종 사용자 인증 방법을 알아봅니다.
- Istio를 사용하여 Cloud Run for Anthos에 대한 액세스를 승인하는 방법 알아보기
- 연결된 네트워크에서 내부 TCP/UDP 부하 분산 IP 주소에 액세스하는 방법 알아보기
- Cloud Run for Anthos 안내 가이드 읽어보기
- Cloud Run 기반이 되는 오픈소스 프로젝트인 Knative 살펴보기
- 다른 Google Cloud 기능을 직접 사용해보세요. 가이드 살펴보기.