Terraform으로 VPC 및 클러스터 만들기

개요

Terraform은 AWS와 같은 클라우드 환경을 구성하고 Kubernetes와 같은 소프트웨어를 설치할 수 있는 오픈소스 도구입니다. Terraform이나 Anthos clusters on AWS 설치 안내를 통해 AWS 환경을 구성하고 클러스터를 만들 수 있습니다.

이 페이지에서는 Terraform을 사용하여 AWS 환경을 구성하고 GitHub에 저장된 샘플 구성을 사용하여 클러스터를 설치하는 방법을 설명합니다. 이러한 스크립트를 사용하려면 Terraform에 대한 기본 지식이 필요합니다. 특히 Terraform 구성 파일을 수정하여 사용자 및 프로젝트 정보를 추가하고 기본 클러스터 구성을 변경해야 합니다.

Terraform을 사용하지 않고 AWS 환경을 구성하고 클러스터를 만들려면 AWS 기본 요건 개요클러스터 만들기 안내를 참조하세요.

스크립트 기능

이 스크립트는 Terraform에서 AWS VPC를 만들고 여기에 클러스터를 배포하도록 구성합니다. 결과 VPC는 모든 Anthos clusters on AWS 기본 요건을 충족하며 Google의 수동 VPC 생성 안내에서 만든 VPC와 동일한 네트워크 토폴로지를 갖습니다.

스크립트 세트가 생성되는 클러스터의 특징은 다음과 같습니다.

  • 제어 영역 노드 3개(구성된 가용성 영역 3개 각각에 하나씩) 이러한 노드는 t3.large 유형입니다.
  • t3.large 유형의 노드 2개가 있는 노드 풀 1개 이 노드 풀은 AWS us-east-1 리전에 배포되며 노드 5개로 자동 확장할 수 있습니다.

기본 VPC 및 클러스터 변경 방법

적절한 Terraform 파일을 수정하여 Terraform 스크립트에서 만든 VPC와 클러스터의 특성을 변경할 수 있습니다.

  • variables.tf 파일을 수정하여 리전과 가용성 영역을 조정합니다.
  • AWS 인스턴스 유형을 변경합니다.
  • modules/vpc 하위 폴더에서 파일을 수정하여 서브넷, 가용성 영역, 부하 분산기를 포함한 VPC 특성을 변경합니다.

특정 GCP 리전 및 연결된 Kubernetes 버전에서 제어되는 AWS 리전의 목록을 보려면 다음 명령어를 실행합니다.

   gcloud container aws get-server-config --location `GOOGLE_CLOUD_REGION`

GOOGLE_CLOUD_REGION을 Anthos clusters on AWS에서 클러스터를 제어할 Google Cloud 리전의 이름으로 바꿉니다.

기본 요건

  1. Google Cloud CLI 설치 안내를 따라 Google Cloud CLI를 설치합니다. 이미 설치했으면 다음 안내를 따라 버전 365.0.1 이상이 실행 중인지 확인합니다.

  2. AWS CLI 설치 안내를 따라 AWS CLI를 설치합니다.

  3. AWS 액세스 키를 만듭니다.

  4. 다음 명령어를 사용하여 로컬 AWS 환경을 구성합니다.

    aws configure
    

Terraform 준비

  1. 다음 명령어를 실행하여 Google Cloud CLI 인증을 구성합니다.

    gcloud config set project GOOGLE_PROJECT_ID
    gcloud auth application-default login --no-launch-browser
    
  2. GCP 프로젝트에서 필요한 서비스를 사용 설정합니다.

    gcloud --project="GOOGLE_PROJECT_ID" services enable \
      gkemulticloud.googleapis.com \
      gkeconnect.googleapis.com \
      connectgateway.googleapis.com \
      cloudresourcemanager.googleapis.com \
      anthos.googleapis.com \
      logging.googleapis.com \
      monitoring.googleapis.com
    

    GOOGLE_PROJECT_ID를 Google Cloud 프로젝트 ID로 바꿉니다.

  3. 저장소의 로컬 사본을 만들고 디렉터리를 AWS 폴더로 변경합니다.

    git clone https://github.com/GoogleCloudPlatform/anthos-samples.git
    cd anthos-samples/anthos-multi-cloud/AWS
    

Anthos clusters on AWS 배포

  1. terraform.tfvars 파일에서 다음 줄을 수정하여 기본값을 바꿉니다.

    gcp_project_id = GOOGLE_PROJECT_ID
    admin_user = GCP_ACCOUNT_EMAIL
    

    다음을 바꿉니다.

    • GOOGLE_PROJECT_ID: Google 프로젝트 ID로 바꿉니다. Google Cloud Console의 대시보드 페이지 왼쪽에 표시됩니다.

    • GCP_ACCOUNT_EMAIL: 클러스터가 생성된 후 클러스터에 로그인할 수 있는 Google Cloud 계정의 이메일 주소로 바꿉니다.

  2. Terraform 계획을 초기화하고 만듭니다.

    terraform init
    
  3. Terraform 계획을 적용하여 VPC와 클러스터를 만듭니다.

    terraform apply
    

설치하는 데 12분 정도 걸립니다. 스크립트가 완료되면 스크립트 디렉터리 안에 설치 값이 여러 개 포함된 var.sh이라는 파일이 남습니다. 나중에 수동으로 노드 풀을 더 만들 때 이 값을 사용합니다.

클러스터가 성공적으로 생성되었는지 확인하려면 Google Cloud 프로젝트의 Google Cloud Console Kubernetes Engine 페이지에 표시되는지 확인합니다.

클러스터에 연결

클러스터에 대한 연결을 확인하고 세부정보를 가져오려면 다음 명령어를 실행합니다.

   gcloud container hub memberships get-credentials CLUSTER_NAME
   kubectl get nodes

CLUSTER_NAME을 클러스터 이름으로 바꿉니다. var.sh Terraform 출력 파일에 클러스터 이름이 표시됩니다.

클러스터 및 VPC 삭제

Terraform으로 만든 클러스터와 VPC를 삭제하려면 다음 명령어를 실행합니다.

   terraform destroy

그러면 워크로드가 드레이닝 및 종료되고 기본 노드 풀과 클러스터가 삭제되며 AWS VPC가 삭제됩니다. 추가 클러스터나 노드 풀을 수동으로 만든 경우 이 명령어를 실행하려면 먼저 추가 클러스터나 노드 풀을 직접 삭제해야 합니다.

Cloud Logging 및 Monitoring 승인

Cloud Logging 및 Monitoring을 사용 설정하려면 먼저 다음 명령어를 사용하여 승인해야 합니다.

   gcloud projects add-iam-policy-binding GOOGLE_PROJECT_ID \
   --member="serviceAccount:GOOGLE_PROJECT_ID.svc.id.goog[gke-system/gke-telemetry-agent]" \
   --role=roles/gkemulticloud.telemetryWriter

GOOGLE_PROJECT_ID를 Google Cloud 프로젝트 ID로 바꿉니다.

첫 번째 클러스터가 생성된 후에만 클라우드 로깅 및 클라우드 모니터링을 사용 설정할 수 있습니다.

다음 단계

Terraform Anthos clusters on AWS 스크립트에 대한 자세한 내용은 다음을 참조하세요.