Anthos On-Prem API 클라이언트를 사용하여 사용자 클러스터 만들기

이 페이지에서는 Google Cloud 콘솔, Google Cloud CLI(gcloud CLI) 또는 Terraform을 사용하여 사용자 클러스터를 만드는 방법을 설명합니다.

Anthos On-Prem API란?

Anthos On-Prem API는 Terraform 및 표준 Google Cloud 애플리케이션을 사용하여 온프레미스 클러스터의 수명 주기를 관리할 수 있게 해주는 Google Cloud 호스팅 API입니다. Anthos On-Prem API는 Google Cloud 인프라에서 실행됩니다. Terraform, 콘솔 및 gcloud CLI는 API의 클라이언트이며 API를 사용하여 데이터 센터에 클러스터를 만듭니다.

클러스터의 수명 주기를 관리하려면 Anthos On-Prem API가 클러스터를 만들 때 지정한 Google Cloud 리전을 사용하여 클러스터 상태에 대한 메타데이터를 Google Cloud에 저장해야 합니다. 이 메타데이터를 사용하면 API에서 클러스터 수명 주기를 관리할 수 있으며 워크로드별 데이터는 포함되지 않습니다.

Anthos On-Prem API 클라이언트를 사용하여 클러스터를 만든 경우 Google Cloud 프로젝트를 지정합니다. 클러스터가 생성되면 지정된 프로젝트의 Fleet에 자동으로 등록됩니다. 이 프로젝트를 Fleet 호스트 프로젝트라고 합니다. 클러스터를 만든 후에는 Fleet 호스트 프로젝트를 변경할 수 없습니다.

원하는 경우 gkectl을 사용하여 사용자 클러스터 만들기에 설명된 대로 사용자 클러스터 구성 파일을 만들고 gkectl을 사용하여 사용자 클러스터를 만들 수 있습니다.

Terraform, 콘솔 또는 gcloud CLI를 사용하여 gkectl로 만든 클러스터의 수명 주기를 관리하려는 경우 Anthos On-Prem API에서 관리할 사용자 클러스터 구성을 참조하세요.

시작하기 전에

이 섹션에서는 Anthos On-Prem API 클라이언트를 사용하여 사용자 클러스터를 만들기 위한 요구사항을 설명합니다.

IAM 권한 부여

프로젝트 소유자가 아닌 경우 roles/gkeonprem.admin을 부여받아야 합니다.

콘솔에서 Anthos 및 Google Kubernetes Engine 페이지에 액세스하려면 다음 역할도 있어야 합니다.

클러스터가 생성된 후 프로젝트 소유자가 아니고 Connect 게이트웨이를 사용하여 명령줄로 사용자 클러스터에 연결하려는 경우 다음 역할이 필요합니다.

  • roles/gkehub.gatewayAdmin: 이 역할을 통해 Connect Gateway API에 액세스할 수 있습니다. 클러스터에 대한 읽기 전용 액세스만 필요하면 roles/gkehub.gatewayReader로 충분합니다.

  • roles/gkehub.viewer: 이 역할을 통해 클러스터 사용자 인증 정보를 검색할 수 있습니다.

역할 부여에 대한 상세 설명은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

관리자 클러스터 등록

Anthos On-Prem API 클라이언트를 사용하여 사용자 클러스터를 만들려면 관리자 클러스터가 있어야 하며 Fleet에 등록되어 있어야 합니다.

  • 아직 관리자 클러스터를 만들지 않았으면 관리자 클러스터 구성 파일에서 gkeConnect 섹션을 작성합니다.

  • 관리자 클러스터가 있지만 등록하지 않았으면 관리자 클러스터 등록을 참조하세요.

관리자 클러스터에 관리자 활동 감사 로그 사용 설정

Cloud 감사 로그에 대한 관리자 활동 로깅은 관리자 클러스터에서 사용 설정되어 있어야 합니다.

관리자 클러스터에 시스템 수준 로깅 및 모니터링 사용 설정

관리자 클러스터에서 Cloud LoggingCloud Monitoring을 사용 설정해야 합니다.

필수 Google API

Fleet 호스트 프로젝트에서 모든 필수 Google API가 사용 설정되었는지 확인합니다.

또한 Anthos On-Prem API를 사용 설정해야 합니다.

gcloud services enable --project FLEET_HOST_PROJECT_ID \
    gkeonprem.googleapis.com

명령줄 액세스 권한

클러스터가 생성된 후 Connect 게이트웨이를 사용하여 명령줄로 사용자 클러스터에 연결하려면 다음을 수행합니다.

다음 명령줄 도구가 설치되었는지 확인합니다.

  • gcloud CLI의 최신 버전
  • Kubernetes 클러스터에 명령어를 실행하기 위한 kubectl. kubectl을 설치해야 하는 경우 이 안내를 따르세요.

Google Cloud와의 상호작용을 위해 Cloud Shell을 셸 환경으로 사용하는 경우 이러한 도구가 자동으로 설치됩니다.

신규 설치에 사용 가능한 버전

사용자 클러스터를 만들 때 일반적으로 관리자 클러스터와 일치하는 VMware용 Anthos 클러스터 버전을 설치합니다. 그러나 해당 버전 이상의 패치 버전 또는 부 버전을 설치할 수도 있습니다. 예를 들어 버그 수정을 선택하기 위해 사용자 클러스터를 만들 때 최신 패치 버전을 설치할 수 있습니다. VMware용 Anthos 클러스터 출시 후 Anthos On-Prem API에서 버전을 사용할 수 있으려면 약 7~10일이 걸립니다.

관리자 클러스터보다 최신 버전의 사용자 클러스터를 만들려면 먼저 관리자 클러스터가 해당 버전의 사용자 클러스터를 관리하는 데 필요한 구성요소의 버전별 번들을 다운로드한 다음 구성요소를 배포합니다. 자세한 내용은 관리자 클러스터 버전보다 최신 버전 설치를 참조하세요.

클러스터를 만들 도구 선택

Terraform, Google Cloud 콘솔 또는 Google Cloud CLI(gcloud CLI)를 사용하여 Anthos On-Prem API에서 관리되는 클러스터를 만들 수 있습니다. VMware용 Anthos 클러스터를 처음 설치하는 경우 가장 쉽게 사용할 수 있는 도구는 콘솔입니다.

클러스터를 만들기 위해 제공해야 하는 정보에 익숙해지면 특히 2개 이상의 클러스터를 만드는 경우 Terraform 또는 gcloud CLI를 사용하는 것이 더 편리할 수 있습니다. Terraform은 코드 도구의 업계 표준 인프라입니다. 조직에서 이미 Terraform을 사용하는 경우 클러스터를 만들고 클러스터 수명 주기를 관리하는 데 사용할 수 있습니다.

gcloud CLI를 사용하면 인수와 함께 명령어를 텍스트 파일에 저장하고 필요에 따라 추가로 클러스터를 만들 수 있습니다. Cloud Build와 같은 CI/CD 도구를 사용할 경우에는 gcloud 명령어를 사용하여 클러스터 및 노드 풀을 만들고 --impersonate-service-account 플래그를 지정하여 만들기를 자동화할 수 있습니다.

사용자 클러스터 만들기

콘솔

Google Cloud 콘솔에 있는 대부분의 필드는 사용자 클러스터 구성 파일에 있는 필드에 해당합니다.

  1. Google Cloud 콘솔에서 Anthos 클러스터 페이지로 이동합니다.

    Anthos 클러스터 페이지로 이동

  2. 클러스터를 만들 Google Cloud 프로젝트를 선택합니다. 선택한 프로젝트는 Fleet 호스트 프로젝트로도 사용됩니다. 이 프로젝트는 관리자 클러스터가 등록된 프로젝트와 같아야 합니다. 사용자 클러스터가 생성되면 선택한 프로젝트의 Fleet에 자동으로 등록됩니다.

  3. 클러스터 만들기를 클릭합니다.

  4. 대화상자에서 온프레미스를 클릭합니다.

  5. VMware vSphere 옆에 있는 구성을 클릭합니다.

다음 섹션에서는 사용자 클러스터를 구성하는 방법을 안내합니다.

클러스터 기본사항

클러스터에 대한 기본 정보를 입력합니다.

  1. 사용자 클러스터의 이름을 입력합니다.
  2. 관리자 클러스터의 목록에서 관리자 클러스터를 선택합니다. 관리자 클러스터를 만들 때 이름을 지정하지 않았으면 이름은 gke-admin-[HASH] 형식으로 생성됩니다. 관리자 클러스터 이름이 인식되지 않으면 관리자 워크스테이션에서 다음 명령어를 실행합니다.

    KUBECONFIG=ADMIN_CLUSTER_KUBECONFIG
    kubectl get OnPremAdminCluster -n kube-system -o=jsonpath='{.items[0].metadata.name}'
    

    사용하려는 관리자 클러스터가 표시되지 않으면 문제 해결 섹션을 참조하세요. 관리자 클러스터는 클러스터 기본사항 드롭다운 목록에 표시되지 않습니다.

  3. GCP API 위치 필드의 목록에서 Google Cloud 리전을 선택합니다. 이 설정은 Anthos On-Prem API가 실행되는 리전 및 다음 항목이 저장되는 리전을 지정합니다.

    • Anthos On-Prem API가 클러스터 수명 주기를 관리하는 데 필요한 사용자 클러스터 메타데이터
    • 시스템 구성요소의 Cloud Logging 및 Cloud Monitoring 데이터
    • Cloud 감사 로그에서 만든 관리자 감사 로그

    클러스터 이름, 프로젝트, 위치에 따라 Google Cloud가 고유하게 식별됩니다.

  4. 사용자 클러스터의 VMware용 Anthos 클러스터 버전을 선택하세요.

  5. 클러스터 생성자는 클러스터에 대한 클러스터 관리자 권한을 부여받습니다. 필요한 경우 승인 섹션의 클러스터 관리자 필드에 클러스터를 관리할 다른 사용자의 이메일 주소를 입력하세요.

    클러스터가 생성되면 Anthos On-Prem API는 클러스터에 Kubernetes 역할 기반 액세스 제어(RBAC) 정책을 적용하여 사용자 및 다른 관리자에게 모든 네임스페이스의 클러스터 내 모든 리소스에 대한 전체 액세스 권한을 제공하는 Kubernetes clusterrole/cluster-admin 역할을 부여합니다.

  6. 다음을 클릭하여 제어 영역 섹션으로 이동합니다.

제어 영역

제어 영역 섹션의 모든 필드는 기본값으로 설정됩니다. 기본값을 검토하고 원하는 경우 필요에 따라 변경합니다.

  1. 제어 영역 노드 vCPU 필드에 사용자 클러스터의 각 제어 영역 노드에 대한 vCPU 수(최소 4개)를 입력합니다.
  2. 제어 영역 노드 메모리 필드에 사용자 클러스터의 각 제어 영역에 대한 메모리 크기를 MiB(최소 8, 192이고 4의 배수여야 함)로 입력합니다.
  3. 제어 영역 노드에서 사용자 클러스터의 제어 영역 노드 수를 선택합니다. 예를 들어 개발 환경에는 제어 영역 노드 1개를 선택하고 고가용성(HA), 프로덕션 환경에는 제어 영역 노드 3개를 선택할 수 있습니다.
  4. 필요한 경우 노드 크기 자동 조절을 선택합니다. 크기 조절은 노드에 할당되는 vCPU 및 메모리 리소스가 자동으로 조절됨을 의미합니다. 사용 설정하면 사용자 클러스터의 제어 영역 노드 크기가 사용자 클러스터의 워커 노드 수에 따라 조절됩니다. 따라서 사용자 클러스터에 워커 노드를 더 추가하면 제어 영역 노드 크기가 증가합니다.

  5. 다음을 클릭하여 네트워킹 섹션으로 이동합니다.

네트워킹

이 섹션에서는 클러스터의 노드, 포드, 서비스의 IP 주소를 지정합니다. 사용자 클러스터에는 노드마다 IP 주소 하나가 있어야 하고 클러스터 업그레이드, 업데이트, 자동 복구 중에 필요한 임시 노드용 추가 IP 주소가 있어야 합니다. 자세한 내용은 사용자 클러스터에 필요한 IP 주소 수를 참조하세요.

  1. 노드 IP 섹션에서 사용자 클러스터의 IP 모드를 선택합니다. 다음 중 하나를 선택합니다.

    • DHCP: 클러스터 노드가 DHCP 서버에서 IP 주소를 가져오도록 하려면 DHCP를 선택합니다.

    • 고정: 클러스터 노드에 고정 IP 주소를 제공하거나 수동 부하 분산을 설정하려면 고정을 선택합니다.

  2. DHCP를 선택한 경우 다음 단계로 건너뛰고 서비스 및 포드 CIDR을 지정합니다. 고정 IP 모드에 다음 정보를 입력합니다.

    1. 사용자 클러스터용 게이트웨이의 IP 주소를 입력합니다.
    2. 사용자 클러스터 노드의 서브넷 마스크를 입력합니다.

    3. IP 주소 섹션에서 IP 주소를 입력하고 원하는 경우 사용자 클러스터에 있는 노드의 호스트 이름을 입력합니다. 개별 IP v4 주소(예: 192.0.2.1) 또는 IPv4 주소의 CIDR 블록(예: 192.0.2.0/24)을 입력할 수 있습니다.

      • CIDR 블록을 입력하는 경우 호스트 이름을 입력하지 마세요.
      • 개별 IP 주소를 입력할 경우 호스트 이름을 선택적으로 입력할 수 있습니다. 호스트 이름을 입력하지 않으면 VMware용 Anthos 클러스터가 vSphere의 VM 이름을 호스트 이름으로 사용합니다.
    4. 필요에 따라 + IP 주소 추가를 클릭하여 IP 주소를 더 입력합니다.

  3. 서비스 및 포드 CIDR 섹션에서 콘솔은 Kubernetes 서비스 및 포드에 다음 주소 범위를 제공합니다.

    • 서비스 CIDR: 10.96.0.0/20
    • 포드 CIDR: 192.168.0.0/16

    자체 주소 범위를 입력하려면 포드 및 서비스의 IP 주소에서 권장사항을 참조하세요.

  4. 고정 IP 모드를 선택한 경우 호스트 구성 섹션에서 다음 정보를 지정합니다.

    1. DNS 서버의 IP 주소를 입력합니다.
    2. NTP 서버의 IP 주소를 입력합니다.
    3. 원하는 경우 DNS 검색 도메인을 입력합니다.
  5. 다음을 클릭하여 부하 분산기 섹션으로 이동합니다.

부하 분산기

클러스터에 설정할 부하 분산기를 선택합니다. 자세한 내용은 부하 분산기 개요를 참조하세요.

목록에서 부하 분산기 유형을 선택합니다.

MetalLB와 함께 번들로 제공

MetalLB를 사용하여 번들 부하 분산을 구성합니다. 관리자 클러스터가 SeeSaw 또는 MetalLB를 사용하는 경우에만 사용자 클러스터에 MetalLB를 사용할 수 있습니다. 이 옵션에는 최소한의 구성만 필요합니다. MetalLB는 클러스터 노드에서 직접 실행되며 추가 VM이 필요하지 않습니다. MetalLB 사용의 이점과 다른 부하 분산 옵션과의 비교에 대한 자세한 내용은 MetalLB를 사용한 번들 부하 분산을 참조하세요.

  1. 주소 풀 섹션에서 다음과 같이 주소 풀을 최소 하나 이상 구성합니다.

    1. 주소 풀의 이름을 입력합니다.

    2. 인그레스 VIP를 포함하는 IP 주소 범위를 CIDR 표기법(예: 192.0.2.0/26) 또는 범위 표기법(예: 192.0.2.64-192.0.2.72)으로 입력합니다. 풀에 단일 IP 주소를 지정하려면 /32를 CIDR 표기법으로 사용합니다(예: 192.0.2.1/32).

    3. LoadBalancer 유형 서비스의 IP 주소가 인그레스 VIP와 동일한 IP 주소 범위에 없으면 + IP 주소 범위 추가를 클릭하고 다른 주소 범위를 입력합니다.

      각 풀의 IP 주소는 겹칠 수 없으며 클러스터 노드와 동일한 서브넷에 있어야 합니다.

    4. IP 주소 할당에서 다음 중 하나를 선택합니다.

      • 자동: MetalLB 컨트롤러가 주소 풀의 IP 주소를 LoadBalancer 유형의 서비스에 자동으로 할당하도록 하려면 이 옵션을 선택합니다.
      • 수동: 풀의 주소를 사용하여 LoadBalancer 유형의 서비스 주소를 수동으로 지정하려면 이 옵션을 선택합니다.
    5. MetalLB 컨트롤러가 .0 또는 .255로 끝나는 풀의 주소를 사용하지 않도록 하려면 버그가 있는 IP 주소 방지를 클릭합니다. 이렇게 하면 버그가 있는 소비자 기기가 특수한 IP 주소로 전송된 트래픽을 실수로 차단하는 문제를 방지할 수 있습니다.

    6. 완료하면 완료를 클릭합니다.

  2. 필요한 경우 주소 풀 추가를 클릭합니다.

  3. 가상 IP 섹션에서 다음을 입력합니다.

    • 제어 영역 VIP: 사용자 클러스터의 Kubernetes API 서버로 전송되는 트래픽에 사용할 대상 IP 주소입니다. 사용자 클러스터의 Kubernetes API 서버가 관리자 클러스터의 노드에서 실행됩니다. 이 IP 주소는 관리자 클러스터 노드와 동일한 L2 도메인에 있어야 합니다. 주소 풀 섹션에 이 주소를 추가하지 마세요.

    • 인그레스 VIP: 인그레스 프록시의 부하 분산기에서 구성할 IP 주소입니다. 주소 풀 섹션의 주소 풀에 이 주소를 추가해야 합니다.

  4. 계속을 클릭합니다.

F5 Big-IP 부하 분산기

관리자 클러스터에서 F5를 사용하는 경우에만 사용자 클러스터에 F5를 사용할 수 있습니다. VMware용 Anthos 클러스터와 통합하기 전에 F5 BIG-IP ADC를 설치하고 구성해야 합니다. 자세한 내용은 F5 BIG-IP ADC 설치 가이드를 참조하세요. F5 사용자 이름과 비밀번호는 관리자 클러스터에서 상속됩니다.

  1. 가상 IP 섹션에서 다음을 입력합니다.

    • 제어 영역 VIP: Kubernetes API 서버로 전송되는 트래픽에 사용할 대상 IP 주소입니다.

    • 인그레스 VIP: 인그레스 프록시의 부하 분산기에서 구성할 IP 주소입니다.

  2. 주소 필드에 F5 BIG-IP 부하 분산기의 주소를 입력합니다.

  3. 파티션 필드에 사용자 클러스터용으로 만든 BIG-IP 파티션의 이름을 입력합니다.

  4. sNAT 풀 이름 필드에 SNAT 풀 이름을 입력합니다(해당되는 경우).

  5. 계속을 클릭합니다.

수동 부하 분산기

수동 부하 분산을 구성합니다. 관리자 클러스터에 수동 부하 분산기가 사용되는 경우에만 사용자 클러스터에 대해 수동 부하 분산기를 사용할 수 있습니다. VMware용 Anthos 클러스터에서 로그 집계에 사용되는 Kubernetes API 서버, 인그레스 프록시, 부가기능 서비스는 각각 LoadBalancer 유형의 Kubernetes 서비스에 의해 노출됩니다. 이러한 서비스의 30000~32767 범위에서 고유한 nodePort 값을 선택합니다. 인그레스 프록시의 경우 HTTP 및 HTTPS 트래픽 모두에 nodePort 값을 선택합니다. 자세한 내용은 수동 부하 분산 모드 사용 설정을 참조하세요.

  1. 가상 IP 섹션에서 다음을 입력합니다.

    • 제어 영역 VIP: Kubernetes API 서버로 전송되는 트래픽에 사용할 대상 IP 주소입니다.

    • 인그레스 VIP: 인그레스 프록시의 부하 분산기에서 구성할 IP 주소입니다.

  2. 제어 영역 노드 포트 필드에 Kubernetes API 서버의 nodePort 값을 입력합니다. 사용자 클러스터의 Kubernetes API 서버가 관리자 클러스터에서 실행됩니다.

  3. 인그레스 HTTP 노드 포트 필드에 인그레스 프록시에 대한 HTTP 트래픽의 nodePort 값을 입력합니다.

  4. 인그레스 HTTPS 노드 포트 필드에 인그레스 프록시에 대한 HTTPS 트래픽의 nodePort 값을 입력합니다.

  5. Konnectivity 서버 노드 포트 필드에 Konnectivity 서버의 nodePort 값을 입력합니다.

  6. 계속을 클릭합니다.

기능

이 섹션에서는 클러스터에 사용 설정된 기능과 작업을 보여줍니다.

다음 기능은 자동으로 사용 설정되어 있으며 중지될 수 없습니다.

  1. 다음은 기본적으로 사용 설정되어 있지만 중지될 수 있습니다.

    • vSphere CSI 드라이버 사용 설정: vSphere 컨테이너 스토리지 플러그인이라고도 합니다. 컨테이너 스토리지 인터페이스(CSI) 드라이버는 vSphere에 배포된 기본 Kubernetes 클러스터에서 실행되어 vSphere 스토리지에 영구 볼륨을 프로비저닝합니다. 자세한 내용은 vSphere 컨테이너 스토리지 인터페이스 드라이버 사용을 참조하세요.
    • 안티-어피니티 그룹 사용 설정: VMware Distributed Resource Scheduler(DRS) 안티-어피니티 규칙이 사용자 클러스터 노드에 자동으로 생성되므로 데이터 센터에서 물리적 호스트 최소 3개 이상에 분산됩니다. vSphere 환경에서 요구사항을 충족하는지 확인합니다.
  2. 다음을 클릭하여 노드 풀을 구성합니다.

노드 풀

하나 이상의 노드 풀이 있는 클러스터가 생성됩니다. 노드 풀은 이 클러스터에서 만든 노드 그룹의 템플릿입니다. 자세한 내용은 노드 풀 만들기 및 관리를 참조하세요.

  1. 노드 풀 기본값 섹션에서 다음을 완료합니다.

    1. 노드 풀 이름을 입력하거나 이름으로 'default-pool'을 수락합니다.
    2. 풀에 있는 각 노드의 vCPU 수를 입력합니다. 사용자 클러스터 작업자당 최소 4개입니다.
    3. 풀의 각 노드에 대한 메모리 크기를 메비바이트(MiB) 단위로 입력합니다(사용자 클러스터 워커 노드당 최소 8,192MiB이며 4의 배수여야 함).
    4. 노드 필드에 풀의 노드 수를 입력합니다(최솟값 3). 네트워킹 섹션에서 노드 IP의 고정 IP 주소를 입력한 경우 이러한 사용자 클러스터 노드를 수용할 수 있는 충분한 IP 주소를 입력했는지 확인합니다.
    5. OS 이미지 유형(Ubuntu, Ubuntu Containerd, COS)을 선택합니다.
    6. 부팅 디스크 크기를 기비바이트(GiB) 단위(최소 40GiB)로 입력합니다.
    7. MetalLB를 부하 분산기로 사용하는 경우 하나 이상의 노드 풀에서 MetalLB를 사용 설정해야 합니다. MetalLB 부하 분산에 이 노드 풀 사용을 선택한 상태로 두거나 MetalLB에 사용할 다른 노드 풀을 추가합니다.
  2. 노드 풀 메타데이터(선택사항) 섹션에서 Kubernetes 라벨taint를 추가하려면 다음 안내를 따르세요.

    1. + Kubernetes 라벨 추가를 클릭합니다. 라벨의 을 입력합니다. 필요한 경우 반복합니다.
    2. + taint 추가를 클릭합니다. taint의 , , 효과를 입력합니다. 필요한 경우 반복합니다.
  3. 확인 및 완료를 클릭하여 사용자 클러스터를 만듭니다. 사용자 클러스터를 만드는 데 15분 이상 걸립니다. 콘솔은 설정을 확인하고 데이터 센터에 클러스터를 만들 때 상태 메시지를 표시합니다.

    설정 확인 중에 오류가 발생하면 콘솔에 오류 메시지가 표시됩니다. 오류 메시지는 구성 문제를 해결하고 클러스터를 만들려고 시도할 수 있도록 아주 명확해야 합니다.

    발생 가능한 오류와 해결 방법에 대한 자세한 내용은 Google Cloud 콘솔에서 사용자 클러스터 생성 문제 해결을 참조하세요.

gcloud CLI

다음 명령어를 사용하여 사용자 클러스터를 만듭니다.

gcloud beta container vmware clusters create

클러스터를 만든 후 다음 명령어를 사용하여 적어도 하나 이상의 노드 풀을 만들어야 합니다.

gcloud beta container vmware node-pools create

클러스터 및 노드 풀을 만들기 위한 대부분의 플래그는 사용자 클러스터 구성 파일의 필드에 해당합니다. 시작하는 데 도움을 얻기 위해 예시 섹션의 전체 명령어를 시도해볼 수 있습니다.

시작하기 전에

  1. Google 계정으로 로그인합니다.

    gcloud auth login
    
  2. 구성요소를 업데이트합니다.

    gcloud components update
    
  3. 사용 가능한 버전 목록을 가져옵니다.

    gcloud beta container vmware clusters query-version-config \
      --admin-cluster-membership=ADMIN_CLUSTER_NAME \
      --admin-cluster-membership-project=FLEET_HOST_PROJECT_ID \
      --location=REGION
    

    다음을 바꿉니다.

    • ADMIN_CLUSTER_NAME: 관리자 클러스터 이름입니다.

    • FLEET_HOST_PROJECT_ID: 관리자 클러스터가 등록된 프로젝트의 ID입니다.

    • REGION: Anthos On-Prem API에 클러스터를 등록할 때 지정한 Google Cloud 리전입니다.

    이 명령어 출력은 다음과 비슷합니다.

    versions:
    - isInstalled: true
      version: 1.14.3-gke.25
    - version: 1.14.4-gke.54
    - version: 1.15.0-gke.581
    

사용자 클러스터를 만드는 데 사용할 수 있는 버전은 isInstalled=true로 주석 처리됩니다. 관리자 클러스터에 해당 버전의 사용자 클러스터를 관리하는 데 필요한 버전별 구성요소가 있다는 의미입니다. 사용 가능한 다른 버전으로 사용자 클러스터를 만들려면 관리자 클러스터 버전보다 최신 버전 설치를 참조하세요.

예시

다음 예시에서는 여러 부하 분산기로 사용자 클러스터를 만드는 방법을 보여줍니다. 사용 가능한 부하 분산 옵션에 대한 자세한 내용은 부하 분산기 개요를 참조하세요.

이 예시에서는 제어 영역 노드를 구성하는 데 기본값을 사용합니다. 기본값을 변경하려면 제어 영역 플래그 섹션에 설명된 플래그를 포함합니다. 필요한 경우 일부 vSphere 설정을 변경할 수도 있습니다.

클러스터가 실행된 후 노드 풀 만들기 섹션에 설명된 대로 워크로드를 배포하기 전에 노드 풀을 추가해야 합니다.

MetalLB 및 DHCP

이 예시에서는 번들 MetalLB 부하 분산기로 사용자 클러스터를 만들고 DHCP 서버를 사용하여 클러스터 노드의 IP 주소를 가져오는 방법을 보여줍니다.

관리자 클러스터가 SeeSaw 또는 MetalLB를 사용하는 경우에만 사용자 클러스터에 MetalLB를 사용할 수 있습니다. 이 부하 분산 옵션은 최소한의 구성을 필요로 합니다. MetalLB는 클러스터 노드에서 직접 실행되며 추가 VM이 필요하지 않습니다. MetalLB 사용의 이점과 다른 부하 분산 옵션과의 비교에 대한 자세한 내용은 MetalLB를 사용한 번들 부하 분산을 참조하세요.

필요에 따라 화면을 스크롤해서 --admin-cluster-membership 플래그의 ADMIN_CLUSTER_NAME 자리표시자를 채워야 합니다. 이 예시에서는 완전히 지정된 관리자 클러스터 이름을 사용하므로 --admin-cluster-membership-location--admin-cluster-membership-project를 포함할 필요가 없습니다.

gcloud beta container vmware clusters create USER_CLUSTER_NAME \
  --project=FLEET_HOST_PROJECT_ID \
  --admin-cluster-membership=projects/FLEET_HOST_PROJECT_ID/locations/global/memberships/ADMIN_CLUSTER_NAME \
  --location=REGION \
  --version=VERSION \
  --admin-users=YOUR_EMAIL_ADDRESS \
  --admin-users=ANOTHER_EMAIL_ADDRESS \
  --service-address-cidr-blocks=SERVICE_CIDR_BLOCK \
  --pod-address-cidr-blocks=POD_CIDR_BLOCK \
  --metal-lb-config-address-pools='pool=NAME,avoid-buggy-ips=True|False,manual-assign=True|False,addresses=IP_ADDRESS_RANGE_1;IP_ADDRESS_RANGE_2;...' \
  --control-plane-vip=CONTROL_PLANE_VIP \
  --ingress-vip=INGRESS_VIP \
  --enable-dhcp
  • USER_CLUSTER_NAME: 사용자 클러스터의 이름입니다. 클러스터를 만든 후에는 이름을 변경할 수 없습니다. 이름은 다음 조건을 충족해야 합니다.
    • 40자(영문 기준) 이하여야 합니다.
    • 소문자 영숫자 문자 또는 하이픈(-)만 포함해야 합니다.
    • 알파벳 문자로 시작해야 합니다.
    • 영숫자 문자로 끝나야 합니다.
  • FLEET_HOST_PROJECT_ID: 클러스터를 만들려는 프로젝트의 ID입니다. 지정된 프로젝트는 Fleet 호스트 프로젝트로도 사용됩니다. 이 프로젝트는 관리자 클러스터가 등록된 프로젝트와 같아야 합니다. 사용자 클러스터가 생성되면 선택한 프로젝트의 Fleet에 자동으로 등록됩니다. 클러스터를 만든 후에는 Fleet 호스트 프로젝트를 변경할 수 없습니다.
  • ADMIN_CLUSTER_NAME: 사용자 클러스터를 관리하는 관리자 클러스터의 이름입니다. 관리자 클러스터 이름은 Google Cloud에서 클러스터를 고유하게 식별하는 완전히 지정된 클러스터 이름의 마지막 세그먼트입니다. projects/FLEET_HOST_PROJECT_ID/locations/global/memberships/ADMIN_CLUSTER_NAME
  • REGION: Anthos On-Prem API가 실행되는 Google Cloud 리전입니다. us-west1 또는 다른 지원되는 리전을 지정합니다. 클러스터를 만든 후에는 리전을 변경할 수 없습니다. 이 설정은 다음이 저장되는 리전을 지정합니다.
    • Anthos On-Prem API가 클러스터 수명 주기를 관리하는 데 필요한 사용자 클러스터 메타데이터
    • 시스템 구성요소의 Cloud Logging 및 Cloud Monitoring 데이터
    • Cloud 감사 로그에서 만든 관리자 감사 로그

    클러스터 이름, 프로젝트, 위치에 따라 Google Cloud의 클러스터가 고유하게 식별됩니다.

  • VERSION: 사용자 클러스터의 VMware용 Anthos 클러스터 버전입니다.
  • YOUR_EMAIL_ADDRESSANOTHER_EMAIL_ADDRESS: --admin-users 플래그를 포함하지 않으면 클러스터 생성자로서 기본적으로 클러스터 관리자 권한이 부여됩니다. 그러나 다른 사용자를 관리자로 지정하기 위해 --admin-users를 포함할 경우 기본값이 재정의되고 자신의 이메일 주소와 다른 관리자의 이메일 주소를 모두 포함해야 합니다. 예를 들어 두 명의 관리자를 추가하려면 다음 안내를 따르세요.
        --admin-users=sara@example.com \
        --admin-users=amal@example.com

    클러스터가 생성되면 Anthos On-Prem API는 클러스터에 Kubernetes 역할 기반 액세스 제어(RBAC) 정책을 적용하여 사용자 및 다른 관리자에게 모든 네임스페이스의 클러스터 내 모든 리소스에 대한 전체 액세스 권한을 제공하는 Kubernetes clusterrole/cluster-admin 역할을 부여합니다.

  • SERVICE_CIDR_BLOCK: 클러스터의 서비스에 사용할 CIDR 형식의 IP 주소 범위입니다. /24 범위 이상이어야 합니다.

    예: --service-address-cidr-blocks=10.96.0.0/20

  • POD_CIDR_BLOCK: 클러스터의 포드에 사용할 CIDR 형식의 IP 주소 범위입니다. /18 범위 이상이어야 합니다.

    예: --pod-address-cidr-blocks=192.168.0.0/16

  • --metal-lb-config-address-pools: MetalLB 부하 분산기에서 사용할 주소 풀의 구성을 지정하려면 이 플래그를 포함합니다. 플래그 값의 형식은 다음과 같습니다.
    --metal-lb-config-address-pool 'pool=NAME,avoid-buggy-ips=True|False,manual-assign=True|False,addresses=IP_ADDRESS_RANGE_1;IP_ADDRESS_RANGE_2;...' \

    이 값에는 pool, avoid-buggy-ip, manual-assign, addresses 키워드로 시작하는 세그먼트가 있습니다. 각 세그먼트는 쉼표로 구분합니다.

    • pool: 풀에 대해 선택한 이름입니다.
    • avoid-buggy-ips: 이 값을 True로 설정하면 MetalLB 컨트롤러가 .0 또는 .255로 끝나는 IP 주소를 서비스에 할당하지 않습니다. 이렇게 하면 버그가 있는 소비자 기기가 특수한 IP 주소로 전송된 트래픽을 실수로 차단하는 문제를 방지할 수 있습니다. 지정되지 않은 경우 기본값은 False입니다.
    • manual-assign: MetalLB 컨트롤러가 이 풀의 IP 주소를 서비스에 자동으로 할당하지 않도록 하려면 이를 True로 설정합니다. 그러면 개발자는 LoadBalancer 유형의 서비스를 만들고 풀에서 주소 중 하나를 수동으로 지정할 수 있습니다. 지정하지 않으면 manual-assignFalse로 설정됩니다.
    • addresses 목록에서 각 주소는 CIDR 표기법을 사용하거나 하이픈으로 연결된 범위 형식이어야 합니다. 인그레스 VIP와 같이 풀에 단일 IP 주소를 지정하려면 /32를 CIDR 표기법으로 사용합니다(예: 192.0.2.1/32).

    다음에 유의하세요.

    • 전체 값은 작은따옴표로 묶어야 합니다.
    • 공백은 허용되지 않습니다.
    • 각 IP 주소 범위를 세미콜론으로 구분합니다.

    예를 들면 다음과 같습니다.

    --metal-lb-config-address-pool 'pool=pool1,avoid-buggy-ips=True,manual-assign=True,addresses=10.251.134.80/32;192.168.1.0/26;192.168.1.2-192.168.1.3'
  • CONTROL_PLANE_VIP: 사용자 클러스터의 Kubernetes API 서버에 대해 부하 분산기에서 구성하도록 선택한 IP 주소입니다.

    예: --control-plane-vip=203.0.113.3

  • INGRESS_VIP: 인그레스 프록시의 부하 분산기에서 구성하도록 선택한 IP 주소입니다.

    예: --ingress-vip=10.251.134.80

    인그레스 VIP의 IP 주소는 MetalLB 주소 풀 중 하나여야 합니다.

  • --enable-dhcp: 클러스터 노드가 제공된 DHCP 서버에서 해당 IP 주소를 가져오도록 하려면 --enable-dhcp를 포함합니다. 클러스터 노드에 대해 고정 IP 주소를 제공하거나 수동 부하 분산을 설정하려는 경우에는 이 플래그를 포함하지 마세요.

MetalLB 및 고정 IP

이 예시에서는 번들 MetalLB 부하 분산기를 사용하여 사용자 클러스터를 만들고 클러스터 노드에 고정 IP 주소를 할당하는 방법을 보여줍니다.

관리자 클러스터가 SeeSaw 또는 MetalLB를 사용하는 경우에만 사용자 클러스터에 MetalLB를 사용할 수 있습니다. 이 부하 분산 옵션은 최소한의 구성을 필요로 합니다. MetalLB는 클러스터 노드에서 직접 실행되며 추가 VM이 필요하지 않습니다. MetalLB 사용의 이점과 다른 부하 분산 옵션과의 비교에 대한 자세한 내용은 MetalLB를 사용한 번들 부하 분산을 참조하세요.

필요에 따라 화면을 스크롤해서 --admin-cluster-membership 플래그의 ADMIN_CLUSTER_NAME 자리표시자를 채워야 합니다. 이 예시에서는 완전히 지정된 관리자 클러스터 이름을 사용하므로 --admin-cluster-membership-location--admin-cluster-membership-project를 포함할 필요가 없습니다.

gcloud beta container vmware clusters create USER_CLUSTER_NAME \
  --project=FLEET_HOST_PROJECT_ID \
  --admin-cluster-membership=projects/FLEET_HOST_PROJECT_ID/locations/global/memberships/ADMIN_CLUSTER_NAME \
  --location=REGION \
  --version=VERSION \
  --admin-users=YOUR_EMAIL_ADDRESS \
  --admin-users=ANOTHER_EMAIL_ADDRESS \
  --service-address-cidr-blocks=SERVICE_CIDR_BLOCK \
  --pod-address-cidr-blocks=POD_CIDR_BLOCK \
  --metal-lb-config-address-pools='pool=NAME,avoid-buggy-ips=True|False,manual-assign=True|False,addresses=IP_ADDRESS_RANGE_1;IP_ADDRESS_RANGE_2;...' \
  --control-plane-vip=CONTROL_PLANE_VIP \
  --ingress-vip=INGRESS_VIP \
  --static-ip-config-ip-blocks='gateway=GATEWAY,netmask=NETMASK,ips=IP_ADDRESS_1;IP_ADDRESS_2 HOST_2;...' \
  --dns-servers=DNS_SERVER,... \
  --dns-search-domains=DNS_SEARCH_DOMAIN,... \
  --ntp-servers=NTP_SERVER,...

다음을 바꿉니다.

  • USER_CLUSTER_NAME: 사용자 클러스터의 이름입니다. 클러스터를 만든 후에는 이름을 변경할 수 없습니다. 이름은 다음 조건을 충족해야 합니다.
    • 40자(영문 기준) 이하여야 합니다.
    • 소문자 영숫자 문자 또는 하이픈(-)만 포함해야 합니다.
    • 알파벳 문자로 시작해야 합니다.
    • 영숫자 문자로 끝나야 합니다.
  • FLEET_HOST_PROJECT_ID: 클러스터를 만들려는 프로젝트의 ID입니다. 지정된 프로젝트는 Fleet 호스트 프로젝트로도 사용됩니다. 이 프로젝트는 관리자 클러스터가 등록된 프로젝트와 같아야 합니다. 사용자 클러스터가 생성되면 선택한 프로젝트의 Fleet에 자동으로 등록됩니다. 클러스터를 만든 후에는 Fleet 호스트 프로젝트를 변경할 수 없습니다.
  • ADMIN_CLUSTER_NAME: 사용자 클러스터를 관리하는 관리자 클러스터의 이름입니다. 관리자 클러스터 이름은 Google Cloud에서 클러스터를 고유하게 식별하는 완전히 지정된 클러스터 이름의 마지막 세그먼트입니다. projects/FLEET_HOST_PROJECT_ID/locations/global/memberships/ADMIN_CLUSTER_NAME
  • REGION: Anthos On-Prem API가 실행되는 Google Cloud 리전입니다. us-west1 또는 다른 지원되는 리전을 지정합니다. 클러스터를 만든 후에는 리전을 변경할 수 없습니다. 이 설정은 다음이 저장되는 리전을 지정합니다.
    • Anthos On-Prem API가 클러스터 수명 주기를 관리하는 데 필요한 사용자 클러스터 메타데이터
    • 시스템 구성요소의 Cloud Logging 및 Cloud Monitoring 데이터
    • Cloud 감사 로그에서 만든 관리자 감사 로그

    클러스터 이름, 프로젝트, 위치에 따라 Google Cloud의 클러스터가 고유하게 식별됩니다.

  • VERSION: 사용자 클러스터의 VMware용 Anthos 클러스터 버전입니다.
  • YOUR_EMAIL_ADDRESSANOTHER_EMAIL_ADDRESS: --admin-users 플래그를 포함하지 않으면 클러스터 생성자로서 기본적으로 클러스터 관리자 권한이 부여됩니다. 그러나 다른 사용자를 관리자로 지정하기 위해 --admin-users를 포함할 경우 기본값이 재정의되고 자신의 이메일 주소와 다른 관리자의 이메일 주소를 모두 포함해야 합니다. 예를 들어 두 명의 관리자를 추가하려면 다음 안내를 따르세요.
        --admin-users=sara@example.com \
        --admin-users=amal@example.com

    클러스터가 생성되면 Anthos On-Prem API는 클러스터에 Kubernetes 역할 기반 액세스 제어(RBAC) 정책을 적용하여 사용자 및 다른 관리자에게 모든 네임스페이스의 클러스터 내 모든 리소스에 대한 전체 액세스 권한을 제공하는 Kubernetes clusterrole/cluster-admin 역할을 부여합니다.

  • SERVICE_CIDR_BLOCK: 클러스터의 서비스에 사용할 CIDR 형식의 IP 주소 범위입니다. /24 범위 이상이어야 합니다.

    예: --service-address-cidr-blocks=10.96.0.0/20

  • POD_CIDR_BLOCK: 클러스터의 포드에 사용할 CIDR 형식의 IP 주소 범위입니다. /18 범위 이상이어야 합니다.

    예: --pod-address-cidr-blocks=192.168.0.0/16

  • --metal-lb-config-address-pools: MetalLB 부하 분산기에서 사용할 주소 풀의 구성을 지정하려면 이 플래그를 포함합니다. 플래그 값의 형식은 다음과 같습니다.
    --metal-lb-config-address-pool 'pool=NAME,avoid-buggy-ips=True|False,manual-assign=True|False,addresses=IP_ADDRESS_RANGE_1;IP_ADDRESS_RANGE_2;...' \

    이 값에는 pool, avoid-buggy-ip, manual-assign, addresses 키워드로 시작하는 세그먼트가 있습니다. 각 세그먼트는 쉼표로 구분합니다.

    • pool: 풀에 대해 선택한 이름입니다.
    • avoid-buggy-ips: 이 값을 True로 설정하면 MetalLB 컨트롤러가 .0 또는 .255로 끝나는 IP 주소를 서비스에 할당하지 않습니다. 이렇게 하면 버그가 있는 소비자 기기가 특수한 IP 주소로 전송된 트래픽을 실수로 차단하는 문제를 방지할 수 있습니다. 지정되지 않은 경우 기본값은 False입니다.
    • manual-assign: MetalLB 컨트롤러가 이 풀의 IP 주소를 서비스에 자동으로 할당하지 않도록 하려면 이를 True로 설정합니다. 그러면 개발자는 LoadBalancer 유형의 서비스를 만들고 풀에서 주소 중 하나를 수동으로 지정할 수 있습니다. 지정하지 않으면 manual-assignFalse로 설정됩니다.
    • addresses 목록에서 각 주소는 CIDR 표기법을 사용하거나 하이픈으로 연결된 범위 형식이어야 합니다. 인그레스 VIP와 같이 풀에 단일 IP 주소를 지정하려면 /32를 CIDR 표기법으로 사용합니다(예: 192.0.2.1/32).

    다음에 유의하세요.

    • 전체 값은 작은따옴표로 묶어야 합니다.
    • 공백은 허용되지 않습니다.
    • 각 IP 주소 범위를 세미콜론으로 구분합니다.

    예를 들면 다음과 같습니다.

    --metal-lb-config-address-pool 'pool=pool1,avoid-buggy-ips=True,manual-assign=True,addresses=10.251.134.80/32;192.168.1.0/26;192.168.1.2-192.168.1.3'
  • CONTROL_PLANE_VIP: 사용자 클러스터의 Kubernetes API 서버에 대해 부하 분산기에서 구성하도록 선택한 IP 주소입니다.

    예: --control-plane-vip=203.0.113.3

  • INGRESS_VIP: 인그레스 프록시의 부하 분산기에서 구성하도록 선택한 IP 주소입니다.

    예: --ingress-vip=10.251.134.80

    인그레스 VIP의 IP 주소는 MetalLB 주소 풀 중 하나여야 합니다.

  • --static-ip-config-ip-blocks: 사용자 클러스터의 워커 노드에 대한 기본 게이트웨이, 서브넷 마스크, 고정 IP 주소 목록을 지정합니다. 플래그 값의 형식은 다음과 같습니다.
    --static-ip-config-ip-blocks 'gateway=GATEWAY,netmask=NETMASK,ips=IP_ADDRESS_1;IP_ADDRESS_2 HOST_2;...'

    이 값에는 gateway, netmask, ips 키워드로 시작하는 세그먼트가 있습니다. 세그먼트를 쉼표로 구분합니다.

    다음에 유의하세요.

    • 전체 값은 작은따옴표로 묶어야 합니다.
    • IP 주소와 호스트 이름 사이인 경우를 제외하고 공백은 허용되지 않습니다.

    IP 주소 목록에서 다음을 수행합니다.

    • 개별 IP 주소 또는 IP 주소의 CIDR 블록을 지정할 수 있습니다.
    • 각 IP 주소 또는 CIDR 블록을 세미콜론으로 구분합니다.
    • 개별 IP 주소의 경우 선택적으로 IP 주소 뒤에 호스트 이름을 지정할 수 있습니다. IP 주소와 호스트 이름을 공백으로 구분합니다. 호스트 이름을 지정하지 않으면 VMware용 Anthos 클러스터가 vSphere의 VM 이름을 호스트 이름으로 사용합니다.
    • CIDR 블록을 지정하는 경우 호스트 이름 값을 지정하지 마세요.

    예를 들면 다음과 같습니다.

    --static-ip-config-ip-blocks 'gateway=172.16.23.254,netmask=255.255.252.0,ips=172.16.20.10;172.16.20.11 host2;172.16.20.12/30'
  • DNS_SERVER: VM에 대한 쉼표로 구분된 DNS 서버의 IP 주소입니다.
  • DNS_SEARCH_DOMAIN: 사용할 호스트에 대한 쉼표로 구분된 DNS 검색 도메인 목록입니다. 이러한 도메인은 도메인 검색 목록의 일부로 사용됩니다.

    예를 들면 다음과 같습니다.

    --dns-search-domains example.com,examplepetstore.com
  • NTP_SERVER: 사용할 VM에 대한 쉼표로 구분된 시간 서버의 IP 주소 목록입니다.

F5 BIG-IP 및 DHCP

이 예시에서는 F5 BIG-IP 부하 분산기로 사용자 클러스터를 만들고 DHCP 서버를 사용하여 클러스터 노드의 IP 주소를 가져오는 방법을 보여줍니다.

관리자 클러스터에서 F5를 사용하는 경우에만 사용자 클러스터에 F5를 사용할 수 있습니다. VMware용 Anthos 클러스터와 통합하기 전에 F5 BIG-IP ADC를 설치하고 구성해야 합니다. 자세한 내용은 F5 BIG-IP ADC 설치 가이드를 참조하세요. F5 사용자 이름과 비밀번호는 관리자 클러스터에서 상속됩니다.

필요에 따라 화면을 스크롤해서 --admin-cluster-membership 플래그의 ADMIN_CLUSTER_NAME 자리표시자를 채워야 합니다. 이 예시에서는 완전히 지정된 관리자 클러스터 이름을 사용하므로 --admin-cluster-membership-location--admin-cluster-membership-project를 포함할 필요가 없습니다.

gcloud beta container vmware clusters create USER_CLUSTER_NAME \
  --project=FLEET_HOST_PROJECT_ID \
  --admin-cluster-membership=projects/FLEET_HOST_PROJECT_ID/locations/global/memberships/ADMIN_CLUSTER_NAME \
  --location=REGION \
  --version=VERSION \
  --admin-users=YOUR_EMAIL_ADDRESS \
  --admin-users=ANOTHER_EMAIL_ADDRESS \
  --service-address-cidr-blocks=SERVICE_CIDR_BLOCK \
  --pod-address-cidr-blocks=POD_CIDR_BLOCK \
  --f5-config-address=F5_CONFIG_ADDRESS \
  --f5-config-partition=F5_CONFIG_PARTITION \
  --f5-config-snat-pool=F5_CONFIG_SNAT_POOL \
  --control-plane-vipCONTROL_PLANE_VIP \
  --ingress-vip=INGRESS_VIP \
  --enable-dhcp
  • USER_CLUSTER_NAME: 사용자 클러스터의 이름입니다. 클러스터를 만든 후에는 이름을 변경할 수 없습니다. 이름은 다음 조건을 충족해야 합니다.
    • 40자(영문 기준) 이하여야 합니다.
    • 소문자 영숫자 문자 또는 하이픈(-)만 포함해야 합니다.
    • 알파벳 문자로 시작해야 합니다.
    • 영숫자 문자로 끝나야 합니다.
  • FLEET_HOST_PROJECT_ID: 클러스터를 만들려는 프로젝트의 ID입니다. 지정된 프로젝트는 Fleet 호스트 프로젝트로도 사용됩니다. 이 프로젝트는 관리자 클러스터가 등록된 프로젝트와 같아야 합니다. 사용자 클러스터가 생성되면 선택한 프로젝트의 Fleet에 자동으로 등록됩니다. 클러스터를 만든 후에는 Fleet 호스트 프로젝트를 변경할 수 없습니다.
  • ADMIN_CLUSTER_NAME: 사용자 클러스터를 관리하는 관리자 클러스터의 이름입니다. 관리자 클러스터 이름은 Google Cloud에서 클러스터를 고유하게 식별하는 완전히 지정된 클러스터 이름의 마지막 세그먼트입니다. projects/FLEET_HOST_PROJECT_ID/locations/global/memberships/ADMIN_CLUSTER_NAME
  • REGION: Anthos On-Prem API가 실행되는 Google Cloud 리전입니다. us-west1 또는 다른 지원되는 리전을 지정합니다. 클러스터를 만든 후에는 리전을 변경할 수 없습니다. 이 설정은 다음이 저장되는 리전을 지정합니다.
    • Anthos On-Prem API가 클러스터 수명 주기를 관리하는 데 필요한 사용자 클러스터 메타데이터
    • 시스템 구성요소의 Cloud Logging 및 Cloud Monitoring 데이터
    • Cloud 감사 로그에서 만든 관리자 감사 로그

    클러스터 이름, 프로젝트, 위치에 따라 Google Cloud의 클러스터가 고유하게 식별됩니다.

  • VERSION: 사용자 클러스터의 VMware용 Anthos 클러스터 버전입니다.
  • YOUR_EMAIL_ADDRESSANOTHER_EMAIL_ADDRESS: --admin-users 플래그를 포함하지 않으면 클러스터 생성자로서 기본적으로 클러스터 관리자 권한이 부여됩니다. 그러나 다른 사용자를 관리자로 지정하기 위해 --admin-users를 포함할 경우 기본값이 재정의되고 자신의 이메일 주소와 다른 관리자의 이메일 주소를 모두 포함해야 합니다. 예를 들어 두 명의 관리자를 추가하려면 다음 안내를 따르세요.
        --admin-users=sara@example.com \
        --admin-users=amal@example.com

    클러스터가 생성되면 Anthos On-Prem API는 클러스터에 Kubernetes 역할 기반 액세스 제어(RBAC) 정책을 적용하여 사용자 및 다른 관리자에게 모든 네임스페이스의 클러스터 내 모든 리소스에 대한 전체 액세스 권한을 제공하는 Kubernetes clusterrole/cluster-admin 역할을 부여합니다.

  • SERVICE_CIDR_BLOCK: 클러스터의 서비스에 사용할 CIDR 형식의 IP 주소 범위입니다. /24 범위 이상이어야 합니다.

    예: --service-address-cidr-blocks=10.96.0.0/20

  • POD_CIDR_BLOCK: 클러스터의 포드에 사용할 CIDR 형식의 IP 주소 범위입니다. /18 범위 이상이어야 합니다.

    예: --pod-address-cidr-blocks=192.168.0.0/16

  • F5_CONFIG_ADDRESS: F5 BIG-IP 부하 분산기의 주소입니다.

  • F5_CONFIG_PARTITION: 사용자 클러스터용으로 만든 BIG-IP 파티션의 이름입니다.

  • F5_CONFIG_SNAT_POOL: 해당하는 경우 SNAT 풀의 이름입니다.

  • CONTROL_PLANE_VIP: 사용자 클러스터의 Kubernetes API 서버에 대해 부하 분산기에서 구성하도록 선택한 IP 주소입니다.

    예: --control-plane-vip=203.0.113.3

  • INGRESS_VIP: 인그레스 프록시의 부하 분산기에서 구성하도록 선택한 IP 주소입니다.

    예: --ingress-vip=10.251.134.80

    인그레스 VIP의 IP 주소는 MetalLB 주소 풀 중 하나여야 합니다.

  • --enable-dhcp: 클러스터 노드가 제공된 DHCP 서버에서 해당 IP 주소를 가져오도록 하려면 --enable-dhcp를 포함합니다. 클러스터 노드에 대해 고정 IP 주소를 제공하거나 수동 부하 분산을 설정하려는 경우에는 이 플래그를 포함하지 마세요.

수동 LB 및 고정 IP

이 예시에서는 수동 부하 분산기로 사용자 클러스터를 만들고 클러스터 노드에 고정 IP 주소를 할당하는 방법을 보여줍니다.

관리자 클러스터에 수동 부하 분산기가 사용되는 경우에만 사용자 클러스터에 대해 수동 부하 분산기를 사용할 수 있습니다. VMware용 Anthos 클러스터에서 로그 집계에 사용되는 Kubernetes API 서버, 인그레스 프록시, 부가기능 서비스는 각각 LoadBalancer 유형의 Kubernetes 서비스에 의해 노출됩니다. 이러한 서비스의 30000~32767 범위에서 고유한 nodePort 값을 선택합니다. 인그레스 프록시의 경우 HTTP 및 HTTPS 트래픽 모두에 nodePort 값을 선택합니다. 자세한 내용은 수동 부하 분산 모드 사용 설정을 참조하세요.

필요에 따라 화면을 스크롤해서 --admin-cluster-membership 플래그의 ADMIN_CLUSTER_NAME 자리표시자를 채워야 합니다. 이 예시에서는 완전히 지정된 관리자 클러스터 이름을 사용하므로 --admin-cluster-membership-location--admin-cluster-membership-project를 포함할 필요가 없습니다.

gcloud beta container vmware clusters create USER_CLUSTER_NAME \
  --project=FLEET_HOST_PROJECT_ID \
  --admin-cluster-membership=projects/FLEET_HOST_PROJECT_ID/locations/global/memberships/ADMIN_CLUSTER_NAME \
  --location=REGION \
  --version=VERSION \
  --admin-users=YOUR_EMAIL_ADDRESS \
  --admin-users=ANOTHER_EMAIL_ADDRESS \
  --service-address-cidr-blocks=SERVICE_CIDR_BLOCK \
  --pod-address-cidr-blocks=POD_CIDR_BLOCK \
  --control-plane-vip=CONTROL_PLANE_VIP \
  --control-plane-node-port=CONTROL_PLANE_NODE_PORT \
  --ingress-vip=INGRESS_VIP \
  --ingress-http-node-port=INGRESS_HTTP_NODE_PORT \
  --ingress-https-node-port=INGRESS_HTTPS_NODE_PORT \
  --konnectivity-server-node-port=KONNECTIVITY_SERVER_NODE_PORT

다음을 바꿉니다.

  • USER_CLUSTER_NAME: 사용자 클러스터의 이름입니다. 클러스터를 만든 후에는 이름을 변경할 수 없습니다. 이름은 다음 조건을 충족해야 합니다.
    • 40자(영문 기준) 이하여야 합니다.
    • 소문자 영숫자 문자 또는 하이픈(-)만 포함해야 합니다.
    • 알파벳 문자로 시작해야 합니다.
    • 영숫자 문자로 끝나야 합니다.
  • FLEET_HOST_PROJECT_ID: 클러스터를 만들려는 프로젝트의 ID입니다. 지정된 프로젝트는 Fleet 호스트 프로젝트로도 사용됩니다. 이 프로젝트는 관리자 클러스터가 등록된 프로젝트와 같아야 합니다. 사용자 클러스터가 생성되면 선택한 프로젝트의 Fleet에 자동으로 등록됩니다. 클러스터를 만든 후에는 Fleet 호스트 프로젝트를 변경할 수 없습니다.
  • ADMIN_CLUSTER_NAME: 사용자 클러스터를 관리하는 관리자 클러스터의 이름입니다. 관리자 클러스터 이름은 Google Cloud에서 클러스터를 고유하게 식별하는 완전히 지정된 클러스터 이름의 마지막 세그먼트입니다. projects/FLEET_HOST_PROJECT_ID/locations/global/memberships/ADMIN_CLUSTER_NAME
  • REGION: Anthos On-Prem API가 실행되는 Google Cloud 리전입니다. us-west1 또는 다른 지원되는 리전을 지정합니다. 클러스터를 만든 후에는 리전을 변경할 수 없습니다. 이 설정은 다음이 저장되는 리전을 지정합니다.
    • Anthos On-Prem API가 클러스터 수명 주기를 관리하는 데 필요한 사용자 클러스터 메타데이터
    • 시스템 구성요소의 Cloud Logging 및 Cloud Monitoring 데이터
    • Cloud 감사 로그에서 만든 관리자 감사 로그

    클러스터 이름, 프로젝트, 위치에 따라 Google Cloud의 클러스터가 고유하게 식별됩니다.

  • VERSION: 사용자 클러스터의 VMware용 Anthos 클러스터 버전입니다.
  • YOUR_EMAIL_ADDRESSANOTHER_EMAIL_ADDRESS: --admin-users 플래그를 포함하지 않으면 클러스터 생성자로서 기본적으로 클러스터 관리자 권한이 부여됩니다. 그러나 다른 사용자를 관리자로 지정하기 위해 --admin-users를 포함할 경우 기본값이 재정의되고 자신의 이메일 주소와 다른 관리자의 이메일 주소를 모두 포함해야 합니다. 예를 들어 두 명의 관리자를 추가하려면 다음 안내를 따르세요.
        --admin-users=sara@example.com \
        --admin-users=amal@example.com

    클러스터가 생성되면 Anthos On-Prem API는 클러스터에 Kubernetes 역할 기반 액세스 제어(RBAC) 정책을 적용하여 사용자 및 다른 관리자에게 모든 네임스페이스의 클러스터 내 모든 리소스에 대한 전체 액세스 권한을 제공하는 Kubernetes clusterrole/cluster-admin 역할을 부여합니다.

  • SERVICE_CIDR_BLOCK: 클러스터의 서비스에 사용할 CIDR 형식의 IP 주소 범위입니다. /24 범위 이상이어야 합니다.

    예: --service-address-cidr-blocks=10.96.0.0/20

  • POD_CIDR_BLOCK: 클러스터의 포드에 사용할 CIDR 형식의 IP 주소 범위입니다. /18 범위 이상이어야 합니다.

    예: --pod-address-cidr-blocks=192.168.0.0/16

  • CONTROL_PLANE_VIP: 사용자 클러스터의 Kubernetes API 서버에 대해 부하 분산기에서 구성하도록 선택한 IP 주소입니다.

    예를 들면 --control-plane-vip=203.0.113.3입니다.

  • CONTROL_PLANE_NODE_PORT: Kubernetes API 서버의 nodePort 값입니다.

  • INGRESS_VIP: 인그레스 프록시의 부하 분산기에서 구성하도록 선택한 IP 주소입니다.

    예를 들면 --ingress-vip=203.0.113.4입니다.

  • INGRESS_HTTP_NODE_PORT: 인그레스 프록시로 전송되는 HTTP 트래픽의 nodePort 값입니다.

  • INGRESS_HTTPS_NODE_PORT: 인그레스 프록시로 전송되는 HTTPS 트래픽의 nodePort 값입니다.

  • KONNECTIVITY_SERVER_NODE_PORT: Konnectivity 서버의 nodePort 값입니다.

  • --static-ip-config-ip-blocks: 사용자 클러스터의 워커 노드에 대한 기본 게이트웨이, 서브넷 마스크, 고정 IP 주소 목록을 지정합니다. 플래그 값의 형식은 다음과 같습니다.
    --static-ip-config-ip-blocks 'gateway=GATEWAY,netmask=NETMASK,ips=IP_ADDRESS_1;IP_ADDRESS_2 HOST_2;...'

    이 값에는 gateway, netmask, ips 키워드로 시작하는 세그먼트가 있습니다. 세그먼트를 쉼표로 구분합니다.

    다음에 유의하세요.

    • 전체 값은 작은따옴표로 묶어야 합니다.
    • IP 주소와 호스트 이름 사이인 경우를 제외하고 공백은 허용되지 않습니다.

    IP 주소 목록에서 다음을 수행합니다.

    • 개별 IP 주소 또는 IP 주소의 CIDR 블록을 지정할 수 있습니다.
    • 각 IP 주소 또는 CIDR 블록을 세미콜론으로 구분합니다.
    • 개별 IP 주소의 경우 선택적으로 IP 주소 뒤에 호스트 이름을 지정할 수 있습니다. IP 주소와 호스트 이름을 공백으로 구분합니다. 호스트 이름을 지정하지 않으면 VMware용 Anthos 클러스터가 vSphere의 VM 이름을 호스트 이름으로 사용합니다.
    • CIDR 블록을 지정하는 경우 호스트 이름 값을 지정하지 마세요.

    예를 들면 다음과 같습니다.

    --static-ip-config-ip-blocks 'gateway=172.16.23.254,netmask=255.255.252.0,ips=172.16.20.10;172.16.20.11 host2;172.16.20.12/30'
  • DNS_SERVER: VM에 대한 쉼표로 구분된 DNS 서버의 IP 주소입니다.
  • DNS_SEARCH_DOMAIN: 사용할 호스트에 대한 쉼표로 구분된 DNS 검색 도메인 목록입니다. 이러한 도메인은 도메인 검색 목록의 일부로 사용됩니다.

    예를 들면 다음과 같습니다.

    --dns-search-domains example.com,examplepetstore.com
  • NTP_SERVER: 사용할 VM에 대한 쉼표로 구분된 시간 서버의 IP 주소 목록입니다.

플래그 및 해당 설명의 전체 목록은 gcloud CLI 참조를 확인하세요.

제어 영역 플래그

제어 영역 구성에 기본값이 아닌 값을 사용하려면 다음 플래그를 하나 이상 포함합니다.

  • --cpus=vCPUS: 사용자 클러스터의 각 제어 영역 노드에 대한 vCPU 수(최소 4개)입니다. 지정하지 않으면 기본값이 vCPU 4개입니다.

  • --memory=MEMORY: 사용자 클러스터의 각 제어 영역에 대한 메비바이트(MiB) 단위의 메모리 크기입니다. 최솟값은 8,192이고 4의 배수여야 합니다. 지정하지 않으면 기본값이 8,192입니다.

  • --replicas=NODES: 사용자 클러스터의 제어 영역 노드 수입니다. 예를 들어 개발 환경에는 제어 영역 노드 1개를 선택하고 고가용성(HA), 프로덕션 환경에는 제어 영역 노드 3개를 선택할 수 있습니다.

  • --enable-auto-resize: 사용자 클러스터에 대한 제어 영역 노드의 자동 크기 조절을 사용 설정하려면 --enable-auto-resize를 포함합니다. 크기 조절은 노드에 할당되는 vCPU 및 메모리 리소스가 자동으로 조절됨을 의미합니다. 사용 설정하면 사용자 클러스터의 제어 영역 노드 크기가 사용자 클러스터의 워커 노드 수에 따라 조절됩니다. 따라서 사용자 클러스터에 워커 노드를 더 추가하면 제어 영역 노드 크기가 증가합니다.

플래그 및 해당 설명의 전체 목록은 gcloud CLI 참조를 확인하세요.

vSphere 플래그

필요한 경우 다음 선택적 플래그를 지정합니다.

  • --disable-aag-config: 이 플래그를 포함하지 않으면 VMware Distributed Resource Scheduler(DRS) 안티-어피니티 규칙이 사용자 클러스터 노드에 대해 자동으로 생성되어 데이터 센터에서 최소 3개 이상의 물리적 호스트에 걸쳐 분산됩니다. vSphere 환경에서 요구사항을 충족하는지 확인합니다. 클러스터가 요구사항을 충족하지 않으면 이 플래그를 포함합니다.

  • --disable-vsphere-csi: 이 플래그를 포함하지 않으면 vSphere 컨테이너 스토리지 인터페이스(CSI) 구성요소가 사용자 클러스터에 표시됩니다. CSI 드라이버는 vSphere에 배포된 기본 Kubernetes 클러스터에서 실행되어 vSphere 스토리지에 영구 볼륨을 프로비저닝합니다. 자세한 내용은 vSphere 컨테이너 스토리지 인터페이스 드라이버 사용을 참조하세요. CSI 구성요소를 배포하지 않으려면 이 플래그를 포함합니다.

플래그 및 해당 설명의 전체 목록은 gcloud CLI 참조를 확인하세요.

gcloud 명령어를 실행하여 클러스터를 만들기 전에 --validate-only를 포함하여 gcloud 명령어에 플래그를 지정한 구성을 검사해야 할 수 있습니다. 클러스터를 만들 준비가 되었으면 이 플래그를 삭제하고 명령어를 실행합니다.

사용자 클러스터를 만드는 데 15분 이상 걸립니다. Anthos 클러스터 페이지의 Google Cloud 콘솔에서 클러스터를 볼 수 있습니다.

노드 풀 만들기

클러스터를 만든 후에는 워크로드를 배포하기 전 노드 풀을 하나 이상 만들어야 합니다.

gcloud beta container vmware node-pools create NODE_POOL_NAME \
--cluster=USER_CLUSTER_NAME  \
--project=FLEET_HOST_PROJECT_ID \
--location=REGION \
--image-type=IMAGE_TYPE  \
--boot-disk-size=BOOT_DISK_SIZE \
--cpus=vCPUS \
--memory=MEMORY \
--replicas=NODES \
--enable-load-balancer

다음을 바꿉니다.

  • NODE_POOL_NAME: 노드 풀에 대해 선택한 이름입니다. 이름은 다음 조건을 충족해야 합니다.

    • 40자(영문 기준) 이하여야 합니다.
    • 소문자 영숫자 문자 또는 하이픈(-)만 포함해야 합니다.
    • 알파벳 문자로 시작해야 합니다.
    • 영숫자 문자로 끝나야 합니다.
  • USER_CLUSTER_NAME: 새로 생성된 사용자 클러스터의 이름입니다.

  • FLEET_HOST_PROJECT_ID: 클러스터가 등록된 프로젝트의 ID입니다.

  • REGION: 클러스터를 만들 때 지정한 Google Cloud 위치입니다.

  • IMAGE_TYPE: 노드 풀의 VM에서 실행할 OS 이미지 유형입니다. ubuntu_containerd 또는 cos 중 하나로 설정합니다.

  • BOOT_DISK_SIZE: 풀에 있는 각 노드의 부팅 디스크 크기(GiB)입니다. 최솟값은 40GiB입니다.

  • vCPUs: 풀의 각 노드에 대한 vCPU 수입니다. 최솟값은 4입니다.

  • MEMORY: 풀의 각 노드에 대한 메모리 크기(MiB)입니다. 최솟값은 사용자 클러스터 워커 노드당 8,192MiB이고 값이 4의 배수여야 합니다.

  • NODES: 노드 풀의 노드 수입니다. 최솟값은 3입니다.

  • MetalLB를 부하 분산기로 사용하려는 경우에는 선택적으로, MetalLB 스피커가 풀의 노드에서 실행되도록 허용하려는 경우 --enable-load-balancer를 포함합니다. 하나 이상의 노드 풀에서 MetalLB를 사용 설정해야 합니다. 이 플래그를 포함하지 않으면 MetalLB에 사용할 다른 노드 풀을 만들어야 합니다.

선택적 플래그에 대한 자세한 내용은 노드 풀 추가gcloud CLI 참조를 확인하세요.

Terraform

다음 기본 구성 샘플을 사용하여 번들 MetalLB 부하 분산기와 하나의 노드 풀로 사용자 클러스터를 만들 수 있습니다.

자세한 내용 및 기타 예시는 google_gkeonprem_vmware_cluster 참조 문서를 확인하세요.

  1. anthos-samples 저장소를 클론하고 Terraform 샘플이 있는 디렉터리로 변경합니다.

    git clone https://github.com/GoogleCloudPlatform/anthos-samples
    cd anthos-samples/anthos-onprem-terraform/avmw_user_cluster_metallb
    

terraform.tfvars에서 변수 설정

이 샘플은 main.tf에 전달할 변수 파일 예시를 제공합니다. 여기에서는 번들 MetalLB 분산기를 구성하고, 제공하는 DHCP 서버에서 IP 주소를 가져오도록 클러스터 노드를 사용 설정하는 방법을 보여줍니다.

  1. terraform.tfvars.sample 파일의 사본을 만듭니다.

    cp terraform.tfvars.sample terraform.tfvars
    
  2. terraform.tfvars의 매개변수 값을 수정합니다.

    project_id                  = "FLEET_HOST_PROJECT_ID"
    region                      = "REGION"
    admin_cluster_name          = "ADMIN_CLUSTER_NAME"
    on_prem_version             = "VERSION"
    admin_user_emails           = ["YOUR_EMAIL_ADDRESS", "ADMIN_2_EMAIL_ADDRESS"]
    cluster_name                = "avmw-user-cluster-metallb"
    control_plane_node_cpus     = 4
    control_plane_node_memory   = 8192
    control_plane_node_replicas = 3
    control_plane_vip           = "CONTROL_PLANE_VIP"
    ingress_vip                 = "INGRESS_VIP"
    lb_address_pools            = [
        { name = "lbpool_1", addresses = ["10.200.0.51-10.200.0.70"] }
    ]
    

    아래 목록에서 변수를 설명합니다.

    • project_id: 클러스터를 만들려는 프로젝트의 ID입니다. 지정된 프로젝트는 Fleet 호스트 프로젝트로도 사용됩니다. 이 프로젝트는 관리자 클러스터가 등록된 프로젝트와 같아야 합니다. 사용자 클러스터가 생성되면 선택한 프로젝트의 Fleet에 자동으로 등록됩니다. 클러스터를 만든 후에는 Fleet 호스트 프로젝트를 변경할 수 없습니다.

    • region: Anthos On-Prem API가 실행되는 Google Cloud 리전입니다. us-west1 또는 다른 지원되는 리전을 지정합니다.

    • admin_cluster_name: 사용자 클러스터를 관리하는 관리자 클러스터의 이름입니다.

    • on_prem_version: 사용자 클러스터의 VMware용 Anthos 클러스터 버전입니다. 일반적으로 관리자 클러스터와 동일한 버전을 지정합니다. 더 최신 버전을 지정하려면 관리자 클러스터 버전보다 최신 버전을 설치합니다. 관리자 클러스터 버전을 모르면 관리자 클러스터 버전보다 최신 버전 설치의 첫 번째 단계인 gcloud beta container vmware clusters query-version-config를 실행합니다.

    • admin_user_emails: 클러스터에 대한 관리자 권한을 부여할 사용자의 이메일 주소 목록입니다. 클러스터를 관리하려면 이메일 주소를 추가해야 합니다.

      클러스터가 생성되면 Anthos On-Prem API는 클러스터에 Kubernetes 역할 기반 액세스 제어(RBAC) 정책을 적용하여 관리자에게 모든 네임스페이스의 클러스터 내 모든 리소스에 대한 전체 액세스 권한을 제공하는 Kubernetes clusterrole/cluster-admin 역할을 부여합니다. 이렇게 하면 사용자가 Google ID를 사용하여 콘솔에 로그인할 수 있습니다.

    • cluster_name: 선택한 사용자 클러스터의 이름입니다. 클러스터를 만든 후에는 이름을 변경할 수 없습니다. 이름은 다음 조건을 충족해야 합니다.

      • 40자(영문 기준) 이하여야 합니다.
      • 소문자 영숫자 문자 또는 하이픈(-)만 포함해야 합니다.
      • 알파벳 문자로 시작해야 합니다.
      • 영숫자 문자로 끝나야 합니다.
    • control_plane_node_cpus: 사용자 클러스터의 각 제어 영역 노드에 대한 vCPU 수입니다. 최소 4개의 vCPU입니다.

    • control_plane_node_memory: 사용자 클러스터의 각 제어 영역에 대한 메비바이트(MiB) 단위의 메모리 크기입니다. 최솟값은 8,192이고 4의 배수여야 합니다.

    • control_plane_node_replicas: 사용자 클러스터의 제어 영역 노드 수입니다. 예를 들어 개발 환경에는 제어 영역 노드 1개를 입력하고 고가용성(HA), 프로덕션 환경에는 제어 영역 노드 3개를 입력할 수 있습니다.

    • control_plane_vip: 사용자 클러스터의 Kubernetes API 서버에 대해 부하 분산기에서 구성하도록 선택한 가상 IP 주소(VIP)입니다.

    • ingress_vip: 인그레스 프록시의 부하 분산기에서 구성하도록 선택한 IP 주소입니다.

    • lb_address_pools: MetalLB 부하 분산기에서 사용할 주소 풀을 정의하는 맵 목록입니다. 인그레스 VIP는 이러한 풀 중 하나에 있어야 합니다. 다음 사항을 지정합니다.

      • name: 풀의 이름입니다.
      • addresses: CIDR 표기법 또는 하이픈으로 연결된 범위 형식의 주소 범위입니다. 인그레스 VIP와 같이 풀에 단일 IP 주소를 지정하려면 /32를 CIDR 표기법으로 사용합니다(예: 192.0.2.1/32).

      예시 IP 주소를 사용자 값으로 바꾸고 필요한 경우 주소 풀을 추가합니다.

  3. 변경사항을 terraform.tfvars에 저장합니다. main.tf를 변경하지 않으려면 다음 섹션인 클러스터와 노드 풀 만들기로 건너뜁니다.

선택사항: main.tf에서 클러스터 설정 구성

이 섹션에서는 main.tf에서 수행 가능한 몇 가지 선택적 구성 변경사항을 설명합니다. 변경하기 전에 main.tf의 백업을 만듭니다.

cp main.tf main.tf.bak

워커 노드 IP 주소 지정 모드

기본적으로 main.tf는 클러스터의 워커 노드에 IP 주소를 할당하기 위해 제공하는 DHCP 서버를 사용하도록 클러스터를 구성합니다. DHCP는 network_config 블록 내에 dhcp_config 맵을 포함하여 구성됩니다. 워커 노드에 고정 IP 주소를 제공하려면 main.tf를 다음과 같이 변경합니다.

  1. network_config 블록을 바꾸고 static_ip_config 블록을 포함합니다. 예를 들면 다음과 같습니다.

    network_config {
      service_address_cidr_blocks = ["10.96.0.0/12"]
      pod_address_cidr_blocks = ["192.168.0.0/16"]
      host_config {
        dns_servers = ["10.254.41.1"]
        ntp_servers = ["216.239.35.8"]
      }
      static_ip_config {
        ip_blocks {
          netmask = "255.255.252.0"
          gateway = "10.251.31.254"
          ips {
            ip = "10.251.30.153"
            hostname = "vm-1"
          }
          ips {
            ip = "10.251.31.206"
            hostname = "vm-2"
          }
          ips {
            ip = "10.251.31.193"
            hostname = "vm-3"
          }
          ips {
            ip = "10.251.30.230"
            hostname = "vm-4"
          }
        }
      }
    }
    
  2. 다음을 사용자 값으로 바꿉니다.

    • service_address_cidr_blocks: 클러스터의 서비스에 사용할 CIDR 형식의 IP 주소 범위입니다. /24 범위 이상이어야 합니다.

    • pod_address_cidr_blocks: 클러스터의 포드에 사용할 CIDR 형식의 IP 주소 범위입니다. /18 범위 이상이어야 합니다.

    • dns_servers: VM에 대한 DNS 서버의 IP 주소 목록입니다.

    • ntp_servers: VM에서 사용할 시간 서버의 IP 주소 목록입니다.

    • static_ip_config 블록에서 netmaskgateway 값을 네트워크 주소로 바꿉니다. iphostname을 워커 노드의 IP 주소와 호스트 이름으로 바꿉니다.

클러스터 및 노드 풀 1개 만들기

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

    terraform init
    

    Terraform은 Google Cloud 제공업체와 같은 필요한 라이브러리를 설치합니다.

  2. 구성을 검토하고 필요한 경우 변경합니다.

    terraform plan
    
  3. Terraform 계획을 적용하여 사용자 클러스터를 만듭니다.

    terraform apply
    

    사용자 클러스터를 만드는 데 약 15분 이상, 노드 풀을 만드는 데 15분 이상 걸립니다. Anthos 클러스터 페이지의 Google Cloud 콘솔에서 클러스터를 볼 수 있습니다.

사용자 클러스터에 연결

Anthos On-Prem API 클라이언트를 사용하여 사용자 클러스터를 만들 때 Google Cloud 계정 이메일 주소를 지정하여 자신과 다른 사용자를 클러스터 관리자로 추가할 수 있습니다.

  • 콘솔에서 이메일 주소가 승인 섹션의 클러스터 기본사항 페이지에 자동으로 추가되고 다른 클러스터 관리자를 추가할 수 있습니다.

  • gcloud CLI를 사용하여 이메일 주소로 설정된 --admin-users 플래그를 포함합니다. 이 플래그는 목록을 가져오지 않습니다. 클러스터 관리자마다 --admin-users 플래그를 추가합니다.

  • Terraform 샘플을 사용하면 terraform.tvars.sample 파일의 admin_user_emails 변수에 자신 및 다른 관리자를 지정할 수 있습니다.

클러스터는 관리자에게 cluster-admin 역할을 부여하고 Google Cloud ID를 사용하여 콘솔에서 클러스터에 로그인할 수 있게 해주는 Kubernetes 역할 기반 액세스 제어(RBAC) 정책으로 구성됩니다. 자세한 내용은 Google ID 인증 설정을 참조하세요.

모든 클러스터에는 표준 엔드포인트가 있습니다. 이 엔드포인트는 kubectl 및 기타 서비스가 TCP 포트 443을 통해 클러스터 제어 영역과 통신하는 데 사용하는 Kubernetes API 서버를 노출합니다. 공개 인터넷에서 이 엔드포인트에 액세스할 수 없습니다. VPC를 통해 클러스터의 비공개 엔드포인트에 액세스할 수 있으면 비공개 엔드포인트에 직접 연결하고 kubeconfig 파일을 직접 생성할 수 있습니다. 그렇지 않으면 Connect 게이트웨이를 사용하면 됩니다. 이 경우 kubectl에서 Connect를 사용합니다. 그러면 트래픽이 사용자 대신 비공개 엔드포인트로 안전하게 전달됩니다.

명령줄에서 사용자 클러스터에 액세스하려면 kubeconfig 파일이 필요합니다. kubeconfig 파일을 가져오는 방법에는 두 가지가 있습니다.

  • Connect 게이트웨이를 사용하여 Google Cloud CLI가 설치된 컴퓨터에서 클러스터에 액세스합니다. Connect 게이트웨이를 사용하면 클러스터를 간편하고 안전하게 관리할 수 있습니다. 자세한 내용은 Connect 게이트웨이로 등록된 클러스터에 연결을 참조하세요.

  • 비공개 엔드포인트에 직접 액세스하려면 관리자 워크스테이션에서 kubeconfig 파일을 만들고 관리자 워크스테이션에서 클러스터를 관리합니다.

콘솔에서 사용자 클러스터 상태가 정상으로 표시될 때까지 기다려야 합니다.

Connect 게이트웨이

  1. Fleet 호스트 프로젝트에서 사용할 gcloud CLI를 초기화하거나 다음 명령어를 실행하여 Google 계정으로 로그인하고 Fleet 호스트 프로젝트를 기본값으로 설정하고 구성요소를 업데이트합니다.

    gcloud auth login
    gcloud config set project PROJECT_ID
    gcloud components update
    
  2. Connect 게이트웨이와 상호작용하는 데 사용되는 클러스터 사용자 인증 정보를 가져옵니다. 다음 명령어에서 MEMBERSHIP_NAME을 클러스터 이름으로 바꿉니다. VMware용 Anthos 클러스터에서 멤버십 이름은 클러스터 이름과 동일합니다.

    gcloud container fleet memberships get-credentials MEMBERSHIP_NAME
    

    이 명령어는 게이트웨이를 통해 클러스터에 연결할 수 있는 특수한 Connect 게이트웨이별 kubeconfig를 반환합니다.

    필요한 사용자 인증 정보가 있으면 일반적인 Kubernetes 클러스터에서처럼 kubectl을 사용하여 명령어를 실행할 수 있으며 kubeconfig 파일 이름을 지정할 필요가 없습니다. 예를 들면 다음과 같습니다.

    kubectl get namespaces
    

관리자 워크스테이션

관리자 워크스테이션에서 사용자 클러스터 kubeconfig 파일을 만들려면 다음 명령어를 실행하여 사용자 클러스터의 새 kubeconfig 파일을 로컬로 저장합니다. 다음을 바꿉니다.

  • CLUSTER_NAME: 새로 생성된 사용자 클러스터의 이름입니다.
  • ADMIN_CLUSTER_KUBECONFIG: 관리자 클러스터 kubeconfig 파일의 경로입니다.
  • USER_CLUSTER_KUBECONFIG: 명령어가 출력하는 사용자 클러스터 kubeconfig 파일의 이름입니다.
kubectl get secret admin \
  --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
  -n CLUSTER_NAME \
  -o=jsonpath='{.data.admin\.conf}' | base64 -d > USER_CLUSTER_KUBECONFIG

파일이 저장되면 관리자 워크스테이션에서 kubectl을 사용하여 사용자 클러스터에 액세스할 수 있습니다. 예를 들면 다음과 같습니다.

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get namespaces

관리자 클러스터 버전보다 최신 버전 설치

관리자 클러스터는 다른 버전의 사용자 클러스터를 관리할 수 있습니다. 관리자 클러스터보다 최신 버전의 사용자 클러스터를 만들려면 다음과 같이 관리자 클러스터가 해당 버전의 사용자 클러스터를 관리하는 데 필요한 구성요소를 다운로드하고 배포해야 합니다.

  1. 사용 가능한 버전 목록을 가져옵니다.

    gcloud beta container vmware clusters query-version-config \
        --admin-cluster-membership=ADMIN_CLUSTER_NAME \
        --admin-cluster-membership-project=FLEET_HOST_PROJECT_ID \
        --location=REGION
    

    다음을 바꿉니다.

    • ADMIN_CLUSTER_NAME: 관리자 클러스터 이름입니다.

    • FLEET_HOST_PROJECT_ID: 관리자 클러스터가 등록된 프로젝트의 ID입니다.

    • REGION: Anthos On-Prem API가 실행되는 Google Cloud 리전입니다. 사용자 클러스터를 만들 때 지정하는 리전입니다. us-west1 또는 다른 지원되는 리전을 지정합니다.

    이 명령어 출력은 다음과 비슷합니다.

    versions:
    - isInstalled: true
      version: 1.14.3-gke.25
    - version: 1.14.4-gke.54
    - version: 1.15.0-gke.581
    

    관리자 클러스터에 설치된 버전은 isInstalled=true로 주석 처리됩니다.

  2. 아직 등록하지 않았으면 Anthos On-Prem API에서 관리자 클러스터를 등록합니다. 클러스터가 Anthos On-Prem API에 등록된 후에는 이 단계를 다시 수행할 필요가 없습니다.

  3. 새 버전의 구성요소를 다운로드하고 관리자 클러스터에 배포합니다.

    gcloud beta vmware admin-clusters update ADMIN_CLUSTER_NAME \
        --project=FLEET_HOST_PROJECT_ID \
        --location=REGION \
        --required-platform-version=VERSION
    

    이 명령어는 --required-platform-version에 지정한 구성요소의 버전을 관리자 클러스터로 다운로드한 다음 구성요소를 배포합니다. 이제 지정된 버전의 사용자 클러스터를 만들 수 있습니다.

다음 단계