Cloud Run for Anthos on Google Cloud 설정

이 가이드에서는 Google Kubernetes Engine 클러스터를 설정하고 Google Cloud에서 Cloud Run for Anthos를 사용 설정하는 방법을 보여줍니다. Cloud Console 또는 gcloud 명령줄 도구를 사용하여 표준 및 비공개 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년 3월 31일까지 이용할 수 있습니다.
  2. Google 계정으로 로그인합니다.

    아직 계정이 없으면 새 계정을 등록하세요.

  3. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기 페이지로 이동

  4. Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.

명령줄 환경 설정

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

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

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

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

    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 도구 구성요소를 업데이트합니다.

    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 버전
  • 2개의 vCPU가 있는 3개의 노드
  • 기본 네임스페이스: default

다음은 Cloud Run for Anthos 테스트에 권장되는 클러스터 구성입니다. 프로덕션 작업 부하의 경우 특정 요구 사항에 맞게 GKE 클러스터를 구성하는 것이 좋습니다. 다양한 종류의 GKE 클러스터 및 구성 옵션에 대한 자세한 내용은 GKE 문서의 클러스터 유형을 참조하세요.

콘솔

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

  1. Cloud Console에서 Cloud Run for Anthos 페이지로 이동합니다.

    Cloud Run for Anthos로 이동

  2. 서비스 만들기를 클릭합니다.

  3. 클릭하여 사용 가능한 클러스터 드롭다운 메뉴를 열고 새 클러스터 만들기를 클릭합니다.

  4. 새로운 Cloud Run for Anthos가 사용 설정된 기본 클러스터 만들기 창에서 다음을 수행합니다.

    • 클러스터의 영역을 선택합니다. 사용자와 가까운 위치를 선택합니다. 예를 들어 미국 서부 해안에 있다면 us-west1-a를 선택합니다.

    • 새 주소의 이름을 선택합니다.

    • 빠른 만들기를 클릭하여 Cloud Run for Anthos가 사용 설정된 Cloud Run for Anthos의 최소 요구사항을 갖춘 클러스터를 만듭니다.

  5. 새 Cloud Run for Anthos 서비스의 이름을 선택한 후 다음을 클릭합니다.

  6. 서비스의 첫 번째 버전 구성 섹션에서 다음을 수행합니다.

    • 기존 컨테이너 이미지에서 버전 1개 배포를 선택합니다.

    • 컨테이너 이미지 URL 필드에 자체 컨테이너 이미지의 URL을 입력하거나, 선택을 클릭하여 사용 가능한 Container Registry 컨테이너 및 데모 컨테이너의 선택 항목에서 선택합니다.

    • 다음을 클릭합니다.

  7. 연결 섹션에서 내부 서비스를 만들 것인지 또는 외부 서비스를 만들 것인지 선택합니다. 외부 서비스는 공개 네트워크를 통해 액세스할 수 있지만 인터넷 서비스는 클러스터 네트워크를 통해서만 액세스할 수 있습니다. 나중에 이 설정을 변경할 수 있습니다.

  8. 만들기를 클릭합니다. 클러스터 및 서비스가 생성되려면 몇 분 정도 걸립니다.

명령줄

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

  1. 클러스터 만들기:

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

    Cloud Run for Anthos는 클러스터 내의 인스턴스를 자동으로 확장하지만 클러스터 자동 확장은 기본적으로 사용 설정되어 있지 않습니다.

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

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

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

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

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

콘솔

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

  1. Cloud Console에서 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 도구의 기본 설정 구성

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

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

  • 클러스터 이름
  • 클러스터 위치
  • 사용자 인증 정보

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

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

    gcloud config set kuberun/cluster CLUSTER
    gcloud config set kuberun/cluster_location ZONE
    gcloud container clusters get-credentials CLUSTER

    바꾸기

    • CLUSTER를 클러스터 이름으로 바꿉니다.
    • ZONE을 클러스터 위치로 바꿉니다.

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

워크로드 아이덴티티를 사용 설정할 때 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 on Google Cloud 서비스를 관리하고 배포해야 합니다. 이 섹션에서는 멀티 테넌트 클러스터를 설정할 때 Cloud Run for Anthos on Google Cloud 서비스를 개발하는 방법을 안내합니다.

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

  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 명령어 참조 문서를 참조하세요.

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

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

gcloud kuberun core services create SERVICE-NAME --image IMAGE-NAME

비공개 내부 네트워크 설정

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

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

시작하기 전에

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

    gcloud kuberun core services create sample \
    --image gcr.io/knative-samples/simple-api \
    --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)
    

    출력은 다음과 같습니다.

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

    exit
    

별도의 Istio 설치 사용

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

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 네임스페이스

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. Cloud Console에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

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

  3. 수정을 클릭합니다.

  4. Cloud Run for Anthos 드롭다운에서 사용 중지를 선택합니다.

  5. 저장을 클릭합니다.

다음 단계