Cloud Run for Anthos 설정

이 가이드에서는 Google Kubernetes Engine(GKE) 클러스터를 설정하고 Cloud Run for Anthos를 사용 설정하는 방법을 보여줍니다. Google Cloud 콘솔 또는 Google Cloud CLI를 사용하여 표준 및 비공개 GKE 클러스터에서 Cloud Run for Anthos를 사용 설정할 수 있습니다.

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

시작하기 전에

  1. Cloud Run for Anthos는 Google Kubernetes Engine의 부가기능입니다. 무료 체험판은 2021년 9월 30일까지 제공됩니다.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

명령줄 환경 설정

Google Cloud 콘솔 또는 gcloud CLI 중 하나를 사용하여 Cloud Run for Anthos를 관리할 수 있지만 gcloud CLI가 필요한 몇 가지 작업이 있습니다.

Cloud Run for Anthos용 gcloudkubectl 명령줄 도구를 설정하려면 다음 안내를 따르세요.

  1. Google Cloud CLI를 설치하고 초기화합니다.

  2. gcloud CLI의 기본 프로젝트 설정을 방금 만든 프로젝트 또는 사용할 기존 프로젝트로 설정합니다.

    gcloud config set project PROJECT-ID

    PROJECT-ID를 생성된 프로젝트의 프로젝트 ID로 바꿉니다.

  3. zone을 클러스터의 원하는 영역으로 설정합니다. GKE가 지원되는 모든 영역을 사용할 수 있습니다. 예를 들면 다음과 같습니다.

    gcloud config set compute/zone ZONE

    ZONE을 현재 영역으로 바꿉니다.

  4. 클러스터를 만들고 컨테이너를 빌드하고 Google Kubernetes Engine 레지스트리에 컨테이너를 게시하는 데 필요한 프로젝트에 다음 API를 사용 설정합니다.

    gcloud services enable container.googleapis.com containerregistry.googleapis.com cloudbuild.googleapis.com
  5. kubectl 명령줄 도구를 설치합니다.

    gcloud components install kubectl
  6. 설치된 gcloud CLI 구성요소를 업데이트합니다.

    gcloud components update

Cloud Run for Anthos 사용 설정

Cloud Run for Anthos는 GKE 클러스터에서 실행됩니다. 기존 클러스터에서 Cloud Run for Anthos를 사용 설정하거나, Cloud Run for Anthos가 사용 설정된 새 클러스터를 만들 수 있습니다.

Cloud Run for Anthos 설정 방법을 선택합니다.

비공개 GKE 클러스터에서도 Cloud Run for Anthos를 사용 설정할 수 있습니다. 비공개 GKE 클러스터를 만드는 방법에 대한 자세한 내용은 GKE 문서의 비공개 클러스터 만들기를 참조하세요.

Cloud Run for Anthos가 사용 설정된 새로운 GKE 클러스터 만들기

이 안내에서는 다음 구성을 사용하여 클러스터를 만듭니다.

  • Cloud Run for Anthos 사용 설정됨
  • Kubernetes 버전: 사용 가능한 GKE 버전
  • 4개의 vCPU가 있는 노드 4개
  • 기본 네임스페이스: default

다음은 Cloud Run for Anthos 테스트에 권장되는 클러스터 구성입니다. 프로덕션 워크로드의 경우 GKE 클러스터가 특정 요구사항을 충족하도록 구성해야 합니다. 다양한 종류의 GKE 클러스터 및 구성 옵션에 대한 자세한 내용은 GKE 문서의 클러스터 유형을 참조하세요.

클러스터를 만들고 Cloud Run for Anthos를 사용 설정하려면 다음 안내를 따르세요.

  1. 클러스터 만들기:

    gcloud container clusters create CLUSTER-NAME \
    --zone=ZONE \
    --addons=HttpLoadBalancing,CloudRun \
    --machine-type=e2-standard-4 \
    --num-nodes=4 \
    --cluster-version=GKE-VERSION \
    --enable-stackdriver-kubernetes

    클러스터 자동 확장은 기본적으로 사용 설정되지 않지만 Cloud Run for Anthos는 사용 가능한 용량을 기준으로 클러스터 내에서 인스턴스 수를 자동으로 확장합니다.

  2. 클러스터 만들기가 완료될 때까지 기다립니다.

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

GKE 클러스터에는 다음과 같은 최소 구성이 있어야 합니다.

gcloud CLI 또는 Google Cloud 콘솔을 사용하여 클러스터에서 Cloud Run for Anthos를 사용 설정할 수 있습니다.

콘솔

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

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

    Google Kubernetes Engine으로 이동

  2. Cloud Run for Anthos를 사용 설정할 클러스터의 이름을 클릭합니다.

  3. 수정을 클릭합니다.

  4. Cloud Run for Anthos 사용 설정을 클릭합니다.

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

명령줄

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

  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.

gcloud CLI의 기본 설정 구성

클러스터를 만든 후 사용할 Google Cloud CLI의 기본값을 설정할 수 있습니다. 명령줄을 사용하면 클러스터 이름 또는 위치와 같이 사용자가 설정한 모든 기본값에 대한 이후의 프롬프트가 삭제됩니다.

다음 항목에 대한 기본 설정을 구성할 수 있습니다.

  • 클러스터 이름
  • 클러스터 위치
  • 사용자 인증 정보
  • 네임스페이스
  • 플랫폼

기본값을 설정하려면 다음 안내를 따르세요.

  1. 다음 명령어를 실행하여 기본 클러스터 및 클러스터 위치를 설정한 후 사용자 인증 정보를 가져옵니다.

    gcloud config set run/platform gke
    gcloud config set run/cluster CLUSTER
    gcloud config set run/cluster_location ZONE
    gcloud container clusters get-credentials CLUSTER

    다음과 같이 바꿉니다.

    • CLUSTER를 클러스터 이름으로 바꿉니다.
    • ZONE을 클러스터 위치로 바꿉니다.
  2. 기본적으로 클러스터는 default라는 네임스페이스로 생성됩니다. 네임스페이스 및 default 이외의 네임스페이스를 만들고 사용할 수 있는 이유는 네임스페이스를 참조하세요.

    새 네임스페이스를 만들려면 다음을 실행하세요.

    kubectl create namespace NAMESPACE

    NAMESPACE를 만들려는 네임스페이스의 이름으로 바꿉니다.

  3. 이전 단계에서 새 네임스페이스를 만든 경우 네임스페이스를 Google Cloud CLI를 호출할 때마다 사용되는 기본 네임스페이스로 설정할 수 있습니다. 그렇지 않으면 default 네임스페이스가 사용됩니다. 새 네임스페이스를 설정하려면 다음 명령어를 실행합니다.

    gcloud config set run/namespace NAMESPACE

    NAMESPACE를 gcloud CLI에서 기본적으로 사용할 네임스페이스의 이름으로 바꿉니다.

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

워크로드 아이덴티티를 사용 설정할 때 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를 사용할 수 있습니다.

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

GKE 클러스터 내에서 Compute API, 스토리지 및 데이터베이스 API 또는 Machine Learning API와 같은 Google Cloud APIs에서 제공하는 서비스를 설정하려면 워크로드 아이덴티티 사용을 참조하세요.

멀티 테넌트 설정에서 개발

멀티 테넌트 사용 사례에서는 현재 프로젝트 외부의 Google Kubernetes Engine 클러스터에 Cloud Run for Anthos 서비스를 배포하고 관리해야 합니다. GKE 멀티테넌시에 대한 자세한 내용은 클러스터 멀티테넌시를 참조하세요.

Cloud Run for Anthos에 멀티테넌시를 구성하는 방법은 교차 프로젝트 멀티테넌시를 참조하세요.

비공개 내부 네트워크 설정

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

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

시작하기 전에

  • 클러스터에 대한 admin 권한이 있어야 합니다.
  • Google Cloud CLI 버전 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. sample이라는 서비스를 default 네임스페이스의 Cloud Run for Anthos에 배포합니다.

    gcloud run deploy sample \
    --image gcr.io/knative-samples/helloworld \
    --namespace default
    
  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)
    

    출력은 다음과 같습니다.

    Hello World!
    
  7. SSH 세션을 종료합니다.

    exit
    

별도의 Istio 설치 사용

다음 안내에서는 Cloud Run for Anthos에 기본적으로 설치되어 있는 Istio 구성요소 외에 Anthos Service Mesh, Istio on GKE 부가기능 또는 커스텀 Istio 설치를 Cloud Run for Anthos와 연결하는 방법을 알려줍니다.

현재 기본 Cloud Run for Anthos 설치에 포함된 Istio 구성요소는 자동 사이드카 삽입을 지원하지 않습니다. 하지만 추가 Istio 설치를 사용하면 서비스가 실행되는 네임스페이스에 Istio 사이드카 삽입을 사용 설정할 수 있습니다.

추가 Istio 설치를 사용하려면 istio-system 네임스페이스에서 Istio 인그레스 게이트웨이의 이름이 istio-ingressgateway로 지정되었는지 확인해야 합니다. Cloud Run for Anthos는 다음 위치에 설치된 Istio 인그레스 게이트웨이의 외부 트래픽을 지원하고 처리할 수 있습니다.

  • 추가 Istio 설치를 사용할 때 기본적으로 설정되는 클러스터 로컬 도메인인 istio-ingressgateway.istio-system.svc.cluster.local이 있는 istio-system 네임스페이스
  • 기본 Cloud Run for Anthos 설치로 설정된 클러스터 로컬 도메인 istio-ingress.gke-system.svc.cluster.local이 있는 gke-system 네임스페이스

중요: Istio의 AuthorizationPolicy를 구성하고 사용하는 경우 액세스 제어의 경로 유형 일치를 사용하여 알려진 취약점을 해결해야 합니다. 취약점에 노출되지 않도록 하는 방법에 대한 자세한 내용은 보안 권장사항을 참조하세요.

Cloud Run for Anthos에서 사용하는 추가 Istio 인그레스 게이트웨이를 확인하려면 다음 안내를 따르세요.

  1. config-istio ConfigMap을 엽니다.

    kubectl get configmap config-istio --namespace knative-serving -oyaml
    
  2. 추가 Istio 인그레스 게이트웨이의 이름이 istio-ingressgateway이고 istio-system 네임스페이스에 있는지 확인합니다.

HTTPS 및 커스텀 도메인 사용 설정

클러스터에 적용되는 HTTPS 및 커스텀 도메인을 사용하려면 HTTPS 및 자동 TLS 인증서 사용 설정커스텀 도메인 매핑을 참조하세요.

Cloud Run for Anthos 사용 중지

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

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

    Google Kubernetes Engine으로 이동

  2. Cloud Run for Anthos를 사용 중지할 클러스터를 클릭합니다.

  3. 수정을 클릭합니다.

  4. Cloud Run for Anthos 메뉴에서 사용 중지를 선택합니다.

  5. 저장을 클릭합니다.

다음 단계