기존 GKE 클러스터에서 Cloud Run 사용 설정

이 가이드에서는 기존 GKE 클러스터에서 Cloud Run을 사용 설정하는 방법을 보여줍니다.

Cloud Run for Anthos on Google Cloud를 사용 설정하면 스테이트리스(Stateless) 워크로드를 관리하기 위해 Knative Serving이 클러스터에 설치됩니다. 자세한 내용은 Cloud Run for Anthos on Google Cloud 아키텍처 개요를 참조하세요.

기본 요건

이 페이지에서는 환경 설정이 완료되었고 다음 최소 구성으로 클러스터가 설정되었다고 가정합니다.

  • 2개의 vCPU가 있는 노드
  • 범위: https://www.googleapis.com/auth/logging.write, https://www.googleapis.com/auth/monitoring.write

Cloud Run에 기존 클러스터 사용 설정

gcloud 명령줄 또는 Console을 사용하여 클러스터에 Cloud Run을 사용 설정할 수 있습니다.

Console

Cloud Run에 기존 클러스터를 사용 설정하려면 다음 안내를 따르세요.

  1. Cloud Console에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. Cloud Run을 사용 설정할 클러스터를 클릭합니다.

  3. 수정을 클릭합니다.

  4. Cloud Run for Anthos on Google Cloud 사용 설정을 선택합니다.

  5. 저장을 클릭합니다. 업데이트가 완료되면 클러스터에서 Cloud Run이 지원됩니다.

명령줄

Cloud Run에 기존 클러스터를 사용 설정하려면 다음 안내를 따르세요.

  1. 다음 명령어를 사용하여 클러스터를 사용 설정합니다.

    gcloud container clusters update \
    CLUSTER_NAME \
    --update-addons=CloudRun=ENABLED,HttpLoadBalancing=ENABLED \
    --zone=ZONE

    다음과 같이 바꿉니다.

    • CLUSTER_NAME을 클러스터에 사용할 이름으로 바꿉니다.
    • ZONE을 클러스터에 사용 중인 영역으로 바꿉니다(예: us-central1-a).
  2. 사용 설정이 완료될 때까지 기다립니다. 성공하면 Updating your-cluster-name...done.과 비슷한 메시지가 표시됩니다.

비공개 클러스터에서 배포 사용 설정

GKE 클러스터에서 다음 버전의 Cloud Run for Anthos를 사용하는 경우 다음 안내를 건너뛰어도 됩니다.

  • 1.16.8-gke.7+
  • 1.15.11-gke.9+

비공개 GKE 클러스터에서 Cloud Run for Anthos에 서비스를 배포하려면 제어 영역(마스터) 서버에서 포트 8443 노드로 TCP 연결을 허용하고 프로젝트에서 방화벽 규칙을 수정하여 허용된 TCP 연결 목록에서 포트 8443을 수동으로 지정해야 합니다.

  1. 제어 영역의 클러스터 CIDR 블록을 보고 masterIpv4CidrBlock 필드에 값을 기록합니다.

    gcloud container clusters describe CLUSTER_NAME
  2. TARGET_TAGS 필드의 값을 보고 기록합니다.

    gcloud compute firewall-rules list \
              --filter 'name~^gke-CLUSTER_NAME' \
               --format 'table(
                       name,
                       network,
                       direction,
                       sourceRanges.list():label=SRC_RANGES,
                       allowed[].map().firewall_rule().list():label=ALLOW,
                       targetTags.list():label=TARGET_TAGS
               )'
  3. 위에서 기록한 값을 사용하여 방화벽 규칙을 추가합니다.

    gcloud compute firewall-rules create FIREWALL_RULE_NAME \
         --action ALLOW \
         --direction INGRESS \
         --source-ranges masterIpv4CidrBlock \
         --rules tcp:8443 \
         --target-tags TARGET_TAGS

    자세한 내용은 방화벽 규칙 만들기를 참조하세요.

비공개 내부 네트워크에 배포 사용 설정

내부 네트워크에 서비스 배포는 내부 앱을 직원에게 제공하는 기업과 Cloud Run for Anthos on Google Cloud 클러스터 외부에서 실행되는 클라이언트가 사용하는 서비스에 유용합니다. 이 구성을 사용하면 네트워크의 다른 리소스가 공개적으로 액세스할 수 없는 비공개 내부(RFC 1918) IP 주소를 사용하여 서비스와 통신할 수 있습니다.

내부 네트워크를 만들려면 공개 외부 네트워크 부하 분산기 대신 내부 TCP/UDP 부하 분산을 사용하도록 Istio의 인그레스 게이트웨이를 구성합니다. 그런 다음 VPC 네트워크 내의 내부 IP 주소에 Cloud Run for Anthos on Google Cloud 서비스를 배포할 수 있습니다.

시작하기 전에

  • 클러스터에 대한 admin 권한이 있어야 합니다.
  • Cloud SDK 버전 310.0 이상만 지원됩니다. 자세한 내용은 gcloud 설정을 참조하세요.

내부 부하 분산기를 설정하려면 다음 안내를 따르세요.

  1. 새 클러스터를 만들거나 기존 클러스터를 업데이트하여 내부 TCP/UDP 부하 분산을 사용하도록 Istio 인그레스 게이트웨이를 업데이트합니다.

    • 내부 부하 분산기로 새 클러스터를 만듭니다.

      gcloud container clusters create CLUSTER_NAME \
      --addons=HttpLoadBalancing,CloudRun \
      --machine-type=n1-standard-2  \
      --num-nodes=3  \
      --enable-stackdriver-kubernetes \
      --cloud-run-config=load-balancer-type=INTERNAL
    • 내부 부하 분산기를 사용하도록 기존 클러스터를 업데이트합니다.

      gcloud container clusters update CLUSTER_NAME
      --update-addons=CloudRun=ENABLED \
      --cloud-run-config=load-balancer-type=INTERNAL

    변경사항이 적용되는 데 몇 분 정도 걸릴 수 있습니다.

  2. 다음 명령어를 실행하여 GKE 클러스터의 업데이트를 확인합니다.

    kubectl -n gke-system get svc istio-ingress --watch
    
    1. 주석 `cloud.google.com/load-balancer-type: Internal'을 확인합니다.
    2. 인그레스 부하 분산기에서 IP 값을 찾아 비공개 IP 주소로 변경합니다.
    3. IP 필드에 비공개 IP 주소가 표시되면 Ctrl+C를 눌러 업데이트를 중지합니다.

변경 후 내부 연결을 확인하려면 다음 안내를 따르세요.

  1. default 네임스페이스에서 sample이라는 서비스를 Cloud Run for Anthos on Google Cloud에 배포합니다.

    gcloud run deploy sample \
    --image gcr.io/knative-samples/simple-api \
    --namespace default \
    --platform gke
    
  2. GKE 클러스터와 동일한 영역에서 Compute Engine 가상 머신(VM)을 만듭니다.

    VM=cloudrun-gke-ilb-tutorial-vm
    
    gcloud compute instances create $VM
    
  3. 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)
    
  4. IP 주소가 포함된 파일을 VM에 복사합니다.

    gcloud compute scp external-ip.txt $VM:~
    
  5. SSH를 사용하여 VM에 연결합니다.

    gcloud compute ssh $VM
    
  6. SSH 세션에서 샘플 서비스를 테스트합니다.

    curl -s -w'\n' -H Host:sample.default.example.com $(cat external-ip.txt)
    

    출력은 다음과 같습니다.

    OK
    
  7. SSH 세션을 종료합니다.

    exit
    

워크로드 아이덴티티로 클러스터의 측정항목 사용 설정

워크로드 아이덴티티를 사용 설정할 때 Cloud Run for Anthos는 버전 요청 수 또는 요청 지연 시간과 같은 특정 측정항목을 Google Cloud 운영 제품군에 보고하지 않지만 CPU 및 메모리에 대한 측정항목은 계속 보고합니다.

모든 측정항목을 사용 설정하려면 Cloud Run for Anthos 서비스와 연결된 Google 서비스 계정(GSA)에 모니터링 측정항목 작성자 역할을 부여하여 Cloud Monitoring에 측정항목을 기록할 권한을 수동으로 설정해야 합니다.

서비스의 GSA에 모니터링 측정항목 작성자 역할 권한을 부여합니다.

gcloud projects add-iam-policy-binding PROJECT_ID 
--member=serviceAccount:GSA_NAME@GSA_PROJECT.iam.gserviceaccount.com
--role=roles/monitoring.metricWriter

다음과 같이 바꿉니다.

  • PROJECT_ID를 KSA를 호스팅하는 클러스터 프로젝트의 프로젝트 ID로 바꿉니다.
  • GSA_PROJECT를 클러스터에 없는 GSA의 프로젝트 ID로 바꿉니다. 조직의 모든 GSA를 사용할 수 있습니다.

자세한 내용은 리소스에 대한 액세스 권한 부여, 변경, 취소를 참조하세요.

자동 Istio 사이드카 주입 사용 설정

배포된 서비스의 네임스페이스에서 자동 Istio 사이드카 주입을 사용 설정하려면 개별 Istio 설치를 사용해야 합니다.

멀티 테넌트 설정에서 개발

멀티 테넌트 사용 사례에서는 현재 프로젝트 외부의 Google Kubernetes Engine 클러스터에 Cloud Run for Anthos 서비스를 배포하고 관리해야 합니다. 이 섹션에서는 멀티 테넌트 클러스터를 설정할 때 Cloud Run for Anthos on Google Cloud 서비스를 개발하는 방법을 안내합니다.

현재 프로젝트 외부의 Google Kubernetes Engine 클러스터에 Cloud Run for Anthos 서비스를 배포하려면 다음 안내를 따르세요.

  1. 배포할 클러스터의 Google Cloud 프로젝트 ID에 대한 읽기 액세스 권한이 있는지 확인합니다.

  2. 대상 GKE 클러스터의 사용자 인증 정보로 로컬 kubeconfig 파일을 업데이트합니다.

    gcloud container clusters get-credentials NAME \
    --region=REGION \
    --project=PROJECT-ID
    • REGION은 대상 클러스터의 Compute Engine 리전입니다.
    • PROJECT-ID는 읽기 액세스 권한이 있는 프로젝트입니다.

    자세한 내용은 gcloud container clusters get-credentials 명령어 참조 문서를 참조하세요.

  3. gcloud 명령줄에서 기본 플랫폼을 kubernetes으로 설정하여 GKE 클러스터와 통신합니다.

    gcloud config set run/platform kubernetes
    

kubeconfig 파일에 지정된 대상 GKE 클러스터에서 명령어를 실행할 수 있습니다.

예를 들어 다음 명령어는 지정된 컨테이너 이미지를 사용하여 사용자 인증 정보가 kubeconfig 파일에 저장된 GKE 클러스터에 Cloud Run for Anthos 서비스를 배포합니다.

gcloud run deploy SERVICE-NAME --image IMAGE-NAME

클러스터에 Cloud Run 사용 중지

Console 또는 명령줄을 사용하여 언제든지 클러스터에 Cloud Run을 사용 중지할 수 있습니다.

Console

클러스터에 Cloud Run을 사용 중지하려면 다음 안내를 따르세요.

  1. Cloud Console에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. Cloud Run을 사용 중지하려는 클러스터를 클릭합니다.

  3. Cloud Run for Anthos on Google Cloud 사용 중지를 선택합니다.

  4. 선택적으로 클러스터에서 Cloud Run 없이 사용하지 않을 모든 부가기능을 사용 중지합니다. 여기에 Istio가 포함될 수 있습니다.

  5. 저장을 클릭합니다.

명령줄

클러스터를 삭제하려면 다음 안내를 따르세요.

  1. 다음 명령어를 호출합니다.

    gcloud container clusters update \
    CLUSTER_NAME \
    --update-addons=CloudRun=DISABLED \
    --zone=ZONE

    다음과 같이 바꿉니다.

    • CLUSTER_NAME을 클러스터에 사용할 이름으로 바꿉니다.
    • ZONE을 클러스터에 사용 중인 영역으로 바꿉니다(예: us-central1-a).
  2. 사용 설정이 완료될 때까지 기다립니다. 성공하면 Updating your-cluster-name...done.과 비슷한 메시지가 표시됩니다.