버전 1.9

GKE에 Anthos Service Mesh 설치 설정

이 페이지에서는 동일한 프로젝트의 클러스터에 포함된 메시의 Cloud 프로젝트 및 Google Kubernetes Engine(GKE) 클러스터의 Anthos Service Mesh 설치 요구사항 및 설정에 대해 설명합니다. Google에서 제공하는 스크립트인 install_asm을 사용할 때 --enable_all 플래그 또는 더 세분화된 사용 설정 플래그를 사용하면 스크립트에서 프로젝트 및 클러스터를 자동으로 구성할 수 있습니다. install_asm을 변경하지 않고 직접 설정하려면 이 페이지의 단계를 따르세요. 이전 버전의 Anthos Service Mesh가 이미 설치되어 있는 경우 최신 Anthos Service Mesh 버전으로 업그레이드하기 위해 install_asm을 사용하기 전에 프로젝트나 클러스터를 변경할 필요가 없습니다.

시작하기 전에

이 가이드에서는 다음 작업을 이미 완료했다고 가정합니다.

요구사항

  • GKE 클러스터는 다음 요구사항을 충족해야 합니다.

    • vCPU가 4개 이상 있는 머신 유형(예: e2-standard-4). 클러스터의 머신 유형에 4개 미만의 vCPU가 있으면 여러 머신 유형에 워크로드 마이그레이션에 설명된 대로 머신 유형을 변경합니다.

    • 최소 노드 수는 머신 유형에 따라 다릅니다. Anthos Service Mesh에는 최소 8개의 vCPU가 필요합니다. 머신 유형에 vCPU가 4개 있는 경우 클러스터에는 노드가 2개 이상 있어야 합니다. 머신 유형에 vCPU가 8개 있는 경우 클러스터에는 노드가 1개만 필요합니다. 노드를 추가해야 하는 경우 클러스터 크기 조절을 참조하세요.

    • Anthos Service Mesh를 설치하기 전에 클러스터를 준비하려면 워크로드 아이덴티티를 사용 설정합니다. 워크로드 아이덴티티는 Google API 호출에 권장되는 방법입니다. 워크로드 아이덴티티를 사용 설정하면 워크로드 아이덴티티 제한사항의 설명대로 워크로드에서 Google API로 호출이 보호되는 방식이 변경됩니다.

    • 선택사항이지만 출시 채널에 클러스터를 등록하는 것이 좋습니다. 다른 채널은 Anthos Service Mesh 1.9.2에서 지원되지 않는 GKE 버전을 기반으로 하는 경우가 있으므로 일반 출시 채널에 등록하는 것이 좋습니다. 자세한 내용은 지원되는 환경을 참조하세요. 정적 GKE 버전이 있는 경우 출시 채널에 기존 클러스터 등록의 안내를 따릅니다.

  • 서비스 메시에 포함하려면 서비스 포트의 이름이 지정되어야 하며 이름은 name: protocol[-suffix] 구문에서 포트 프로토콜을 포함해야 합니다. 여기서 대괄호는 대시로 시작해야 하는 선택적 서픽스를 나타냅니다. 자세한 내용은 서비스 포트 이름 지정을 참조하세요.

  • 비공개 클러스터에 Anthos Service Mesh를 설치하는 경우 자동 사이드카 삽입과 함께 사용되는 웹훅을 가져오려면 방화벽에서 포트 15017을 열어야 제대로 작동합니다. 자세한 내용은 비공개 클러스터에서 포트 열기를 참조하세요.

  • 조직에서 서비스 경계를 만든 경우 경계에 Mesh CA 서비스를 추가해야 할 수도 있습니다. 자세한 내용은 서비스 경계에 Mesh CA 추가를 참조하세요.

  • Google Cloud 프로젝트에는 하나의 메시만 연결할 수 있습니다.

install_asm을 실행할 때는 클러스터가 필요한 최소 머신 유형과 노드 수를 충족하는지 확인합니다.

프로젝트 설정

  1. 클러스터가 생성된 프로젝트의 프로젝트 ID와 프로젝트 번호를 가져옵니다.

    gcloud

    다음 명령어를 실행합니다.

    gcloud projects list
    

    Console

    1. Cloud Console에서 대시보드 페이지로 이동합니다.

      대시보드 페이지로 이동

    2. 페이지 상단의 프로젝트 드롭다운 목록을 클릭합니다. 선택 창이 나타나면 프로젝트를 선택합니다.

      프로젝트 ID와 프로젝트 번호가 프로젝트 대시보드 프로젝트 정보 카드에 표시됩니다.

  2. 다음의 환경 변수를 만듭니다.

    • 프로젝트 ID를 사용하여 워크로드 풀을 설정합니다.

      export WORKLOAD_POOL=PROJECT_ID.svc.id.goog
      
    • 프로젝트 번호를 사용하여 메시 ID를 설정합니다.

      export MESH_ID="proj-PROJECT_NUMBER"
      
  3. 필요한 ID 및 액세스 관리(IAM) 역할을 설정합니다. 프로젝트 소유자인 경우 설치를 완료하는 데 필요한 모든 권한이 있습니다. 프로젝트 소유자가 아닌 경우 다음과 같은 특정 IAM 역할을 부여할 사람이 필요합니다. 다음 명령어에서 PROJECT_ID를 이전 단계의 프로젝트 ID로 바꾸고 GCP_EMAIL_ADDRESS를 Google Cloud에 로그인하는 데 사용하는 계정으로 바꿉니다.

    ROLES=(
    'roles/servicemanagement.admin' \
    'roles/serviceusage.serviceUsageAdmin' \
    'roles/meshconfig.admin' \
    'roles/compute.admin' \
    'roles/container.admin' \
    'roles/resourcemanager.projectIamAdmin' \
    'roles/iam.serviceAccountAdmin' \
    'roles/iam.serviceAccountKeyAdmin' \
    'roles/gkehub.admin')
    for role in "${ROLES[@]}"
    do
      gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "user:GCP_EMAIL_ADDRESS" \
        --role="$role"
    done
    

    install_asm을 실행할 때 --enable_all 또는 --enable_gcp_iam_roles 플래그를 포함하면 필수 IAM 역할이 자동으로 설정됩니다.

  4. 다음 Google API를 사용 설정합니다.

    gcloud services enable \
        --project=${PROJECT_ID} \
        container.googleapis.com \
        compute.googleapis.com \
        monitoring.googleapis.com \
        logging.googleapis.com \
        cloudtrace.googleapis.com \
        meshca.googleapis.com \
        meshtelemetry.googleapis.com \
        meshconfig.googleapis.com \
        iamcredentials.googleapis.com \
        gkeconnect.googleapis.com \
        gkehub.googleapis.com \
        cloudresourcemanager.googleapis.com \
        stackdriver.googleapis.com

    API를 사용 설정하려면 완료하는 데 1분 이상 걸릴 수 있습니다. API가 사용 설정되면 다음과 비슷한 출력이 표시됩니다.

    Operation "operations/acf.601db672-88e6-4f98-8ceb-aa3b5725533c" finished
    successfully.
    

    install_asm을 실행할 때 --enable_all 또는 --enable_apis 플래그를 포함하면 필수 API가 자동으로 사용 설정됩니다.

클러스터 설정

--enable_all 플래그 또는 더 세분화된 사용 설정 플래그 중 하나를 포함하면 install_asm 스크립트에서 자동으로 클러스터를 설정합니다.

  1. gcloud 명령줄 도구의 기본 영역 또는 리전을 설정합니다. 여기서 기본값을 설정하지 않으면 이 페이지의 gcloud container clusters 명령어에 --zone 또는 --region 옵션을 지정해야 합니다.

    • 단일 영역 클러스터가 있는 경우 기본 영역을 설정합니다.

      gcloud config set compute/zone CLUSTER_LOCATION
      
    • 리전 클러스터가 있는 경우 기본 리전을 설정합니다.

      gcloud config set compute/region CLUSTER_LOCATION
      
  2. 클러스터에 mesh_id 라벨을 설정합니다. 클러스터에 보존하려는 기존 라벨이 있으면 mesh_id 라벨을 추가할 때 이러한 라벨을 포함해야 합니다.

    1. 클러스터에 기존 라벨이 있는지 확인하려면 다음 안내를 따르세요.

      gcloud container clusters describe CLUSTER_NAME \
          --project PROJECT_ID
      

      출력에서 resourceLabels 필드를 찾습니다. 각 라벨은 resourceLabels 필드 아래에 있는 별도의 줄에 저장됩니다. 예를 들면 다음과 같습니다.

      resourceLabels:
        csm: ''
        env: dev
        release: stable

      편의를 위해 환경 변수에 라벨을 추가할 수 있습니다. 다음에서 YOUR_EXISTING_LABELS를 쉼표로 구분된 클러스터의 기존 라벨 목록을 KEY=VALUE(예: env=dev,release=stable)로 바꿉니다.

      export EXISTING_LABELS="YOUR_EXISTING_LABELS"
      
    2. mesh_id 라벨을 설정합니다.

      • 클러스터에 보존하려는 기존 라벨이 있으면 mesh_id와 기존 라벨을 사용하여 클러스터를 업데이트합니다.

        gcloud container clusters update CLUSTER_NAME \
            --project PROJECT_ID \
            --update-labels=mesh_id${MESH_ID},${EXISTING_LABELS}
        
      • 클러스터에 기존 라벨이 없는 경우 mesh_id 라벨로만 클러스터를 업데이트합니다.

        gcloud container clusters update CLUSTER_NAME \
            --project=PROJECT_ID \
            --update-labels=mesh_id=${MESH_ID}
        
  3. 워크로드 아이덴티티를 사용 설정합니다.

    gcloud container clusters update CLUSTER_NAME \
        --project=PROJECT_ID \
        --workload-pool=${WORKLOAD_POOL}
    

    워크로드 아이덴티티를 사용 설정하는 데 최대 10~15분이 걸릴 수 있습니다.

  4. GKE에서 Cloud Monitoring 및 Cloud Logging을 사용 설정합니다.

    gcloud container clusters update CLUSTER_NAME \
        --project=PROJECT_ID \
        --enable-stackdriver-kubernetes
    

다음 단계

이제 프로젝트 및 GKE 클러스터를 Istio에서 새로 설치하거나 마이그레이션할 수 있습니다. install_asm을 사용하여 Anthos Service Mesh를 설치하면 스크립트가 istioctl install을 호출하기 전에 프로젝트와 클러스터의 유효성을 검사하여 설치 실패를 방지합니다.

시작하기 전에: