AWS 클러스터 구성 파일

이 항목에서는 독립형 관리 클러스터를 사용하여 AWS(Amazon Web Services)에 배포하기 전에 플랫 구성 파일 또는 Kubernetes 스타일 개체 규격을 사용하여 TKG(Tanzu Kubernetes Grid) 워크로드 클러스터를 구성하는 방법을 설명합니다.

구성 파일 및 개체 규격을 사용하여 워크로드 클러스터를 구성하는 방법에 대한 일반 정보는 구성 파일 및 개체 규격을 참조하십시오.

클러스터의 구성 파일 또는 개체 규격 외부에서 일부 구성이 필요한 Azure 전용 워크로드 클러스터 기능을 사용하려면 AWS에서 클러스터를 참조하십시오.

중요

Tanzu Kubernetes Grid v2.4.x는 AWS에서 TKG 워크로드 클러스터 생성을 지원하는 마지막 TKG 버전입니다. AWS에서 TKG 워크로드 클러스터를 생성하는 기능은 Tanzu Kubernetes Grid v2.5 릴리스에서 제거됩니다.

지금부터는 VMware Tanzu Mission Control을 사용하여 AWS에서 새 TKG 워크로드 클러스터를 생성하는 대신 AWS EKS 클러스터를 생성하는 것이 좋습니다. Tanzu Mission Control을 사용하여 네이티브 AWS EKS 클러스터를 생성하는 방법에 대한 자세한 내용은 Tanzu Mission Control 설명서에서 AWS EKS 클러스터의 수명 주기 관리를 참조하십시오.

자세한 내용은 VMware Tanzu Kubernetes Grid v2.4 Release Notes에서 AWS 및 Azure에서 TKG 관리 및 워크로드 클러스터의 사용 중단을 참조하십시오.

개요

워크로드 클러스터를 AWS에 배포하기 전에 구성하려면 클러스터 구성 파일 또는 Kubernetes 스타일 개체 규격 파일을 생성합니다. 이러한 파일 중 하나를 tanzu cluster create-f 옵션에 전달하면 Tanzu CLI는 파일에 정의된 구성 정보를 사용하여 AWS 계정에 연결하고 클러스터에서 사용할 리소스를 생성합니다. 예를 들어, 제어부 및 Worker 노드 VM의 크기를 지정하고, 가용성 영역에 노드를 분산하고, 클러스터 간에 VPC를 공유할 수도 있습니다.

워크로드 클러스터를 AWS에 배포할 때 지정해야 하는 전체 옵션 목록은 구성 파일 변수 참조를 참조하십시오.

참고

멀티 테넌트 환경에서 보안을 향상하려면 워크로드 클러스터를 관리 클러스터 배포에 사용되는 계정과는 다른 AWS 계정에 배포합니다. 여러 AWS 계정에 워크로드 클러스터를 배포하려면 서로 다른 AWS 계정의 클러스터를 참조하십시오.

구성 파일 생성

클러스터 구성 파일을 생성하려면 아래의 워크로드 클러스터 템플릿을 사용할 수 있습니다. 구성 파일을 생성한 후 워크로드 클러스터 생성으로 진행합니다.

워크로드 클러스터 템플릿

아래 템플릿에는 AWS에서 워크로드 클러스터를 배포하는 것과 관련된 모든 옵션이 포함되어 있습니다. 이 템플릿을 복사하여 워크로드 클러스터를 AWS에 배포하도록 업데이트할 수 있습니다.

필수 옵션의 주석 처리를 제거했습니다. 선택 사항 설정을 주석 처리했습니다. 기본값은 해당되는 경우 포함됩니다.

템플릿 아래 섹션에 설명된 옵션을 제외하고 AWS와 관련된 워크로드 클러스터에 변수를 구성하는 방식은 관리 클러스터와 워크로드 클러스터 모두에 대해 동일합니다. 변수를 구성하는 방법에 대한 자세한 내용은 구성 파일에서 관리 클러스터 배포AWS용 관리 클러스터 구성을 참조하십시오.

#! ---------------------------------------------------------------------
#! Cluster creation basic configuration
#! ---------------------------------------------------------------------

#! CLUSTER_NAME:
CLUSTER_PLAN: dev
NAMESPACE: default
# CLUSTER_API_SERVER_PORT:
CNI: antrea

#! ---------------------------------------------------------------------
#! Node configuration
#! AWS-only MACHINE_TYPE settings override cloud-agnostic SIZE settings.
#! ---------------------------------------------------------------------

# SIZE:
# CONTROLPLANE_SIZE:
# WORKER_SIZE:
CONTROL_PLANE_MACHINE_TYPE: t3.large
NODE_MACHINE_TYPE: m5.large
# NODE_MACHINE_TYPE_1: ""
# NODE_MACHINE_TYPE_2: ""
# CONTROL_PLANE_MACHINE_COUNT: 1
# WORKER_MACHINE_COUNT: 1
# WORKER_MACHINE_COUNT_0:
# WORKER_MACHINE_COUNT_1:
# WORKER_MACHINE_COUNT_2:

#! ---------------------------------------------------------------------
#! AWS Configuration
#! ---------------------------------------------------------------------

AWS_REGION:
# AWS_LOAD_BALANCER_SCHEME_INTERNAL: false
AWS_NODE_AZ: ""
# AWS_NODE_AZ_1: ""
# AWS_NODE_AZ_2: ""
# AWS_VPC_ID: ""
# AWS_PRIVATE_SUBNET_ID: ""
# AWS_PUBLIC_SUBNET_ID: ""
# AWS_PUBLIC_SUBNET_ID_1: ""
# AWS_PRIVATE_SUBNET_ID_1: ""
# AWS_PUBLIC_SUBNET_ID_2: ""
# AWS_PRIVATE_SUBNET_ID_2: ""
# AWS_VPC_CIDR: 10.0.0.0/16
# AWS_PRIVATE_NODE_CIDR: 10.0.0.0/24
# AWS_PUBLIC_NODE_CIDR: 10.0.1.0/24
# AWS_PRIVATE_NODE_CIDR_1: 10.0.2.0/24
# AWS_PUBLIC_NODE_CIDR_1: 10.0.3.0/24
# AWS_PRIVATE_NODE_CIDR_2: 10.0.4.0/24
# AWS_PUBLIC_NODE_CIDR_2: 10.0.5.0/24
# AWS_SECURITY_GROUP_APISERVER_LB: ""
# AWS_SECURITY_GROUP_BASTION: ""
# AWS_SECURITY_GROUP_CONTROLPLANE: ""
# AWS_SECURITY_GROUP_LB: ""
# AWS_SECURITY_GROUP_NODE: ""
# AWS_IDENTITY_REF_KIND: ""
# AWS_IDENTITY_REF_NAME: ""
# AWS_CONTROL_PLANE_OS_DISK_SIZE_GIB: 80
# AWS_NODE_OS_DISK_SIZE_GIB: 80
AWS_SSH_KEY_NAME:
BASTION_HOST_ENABLED: true

#! ---------------------------------------------------------------------
#! Common configuration
#! ---------------------------------------------------------------------

# TKG_CUSTOM_IMAGE_REPOSITORY: ""
# TKG_CUSTOM_IMAGE_REPOSITORY_SKIP_TLS_VERIFY: false
# TKG_CUSTOM_IMAGE_REPOSITORY_CA_CERTIFICATE: ""

# TKG_HTTP_PROXY: ""
# TKG_HTTPS_PROXY: ""
# TKG_NO_PROXY: ""
# TKG_PROXY_CA_CERT: ""

ENABLE_AUDIT_LOGGING: false
ENABLE_DEFAULT_STORAGE_CLASS: true

CLUSTER_CIDR: 100.96.0.0/11
SERVICE_CIDR: 100.64.0.0/13

# OS_NAME: ""
# OS_VERSION: ""
# OS_ARCH: ""

#! ---------------------------------------------------------------------
#! Autoscaler configuration
#! ---------------------------------------------------------------------

ENABLE_AUTOSCALER: false
# AUTOSCALER_MAX_NODES_TOTAL: "0"
# AUTOSCALER_SCALE_DOWN_DELAY_AFTER_ADD: "10m"
# AUTOSCALER_SCALE_DOWN_DELAY_AFTER_DELETE: "10s"
# AUTOSCALER_SCALE_DOWN_DELAY_AFTER_FAILURE: "3m"
# AUTOSCALER_SCALE_DOWN_UNNEEDED_TIME: "10m"
# AUTOSCALER_MAX_NODE_PROVISION_TIME: "15m"
# AUTOSCALER_MIN_SIZE_0:
# AUTOSCALER_MAX_SIZE_0:
# AUTOSCALER_MIN_SIZE_1:
# AUTOSCALER_MAX_SIZE_1:
# AUTOSCALER_MIN_SIZE_2:
# AUTOSCALER_MAX_SIZE_2:

#! ---------------------------------------------------------------------
#! Antrea CNI configuration
#! ---------------------------------------------------------------------

# ANTREA_NO_SNAT: false
# ANTREA_DISABLE_UDP_TUNNEL_OFFLOAD: false
# ANTREA_TRAFFIC_ENCAP_MODE: "encap"
# ANTREA_EGRESS_EXCEPT_CIDRS: ""
# ANTREA_NODEPORTLOCAL_ENABLED: true
# ANTREA_NODEPORTLOCAL_PORTRANGE: 61000-62000
# ANTREA_PROXY_ALL: false
# ANTREA_PROXY_NODEPORT_ADDRS: ""
# ANTREA_PROXY_SKIP_SERVICES: ""
# ANTREA_PROXY_LOAD_BALANCER_IPS: false
# ANTREA_FLOWEXPORTER_COLLECTOR_ADDRESS: "flow-aggregator.flow-aggregator.svc:4739:tls"
# ANTREA_FLOWEXPORTER_POLL_INTERVAL: "5s"
# ANTREA_FLOWEXPORTER_ACTIVE_TIMEOUT: "30s"
# ANTREA_FLOWEXPORTER_IDLE_TIMEOUT: "15s"
# ANTREA_KUBE_APISERVER_OVERRIDE:
# ANTREA_TRANSPORT_INTERFACE:
# ANTREA_TRANSPORT_INTERFACE_CIDRS: ""
# ANTREA_MULTICAST_INTERFACES: ""
# ANTREA_MULTICAST_IGMPQUERY_INTERVAL: "125s"
# ANTREA_TUNNEL_TYPE: geneve
# ANTREA_ENABLE_USAGE_REPORTING: false
# ANTREA_ENABLE_BRIDGING_MODE: false
# ANTREA_DISABLE_TXCHECKSUM_OFFLOAD: false
# ANTREA_DNS_SERVER_OVERRIDE: ""
# ANTREA_MULTICLUSTER_ENABLE: false
# ANTREA_MULTICLUSTER_NAMESPACE: ""

지역 지정

클러스터를 AWS에 배포할 때 AWS_REGION을 클러스터를 배포하려는 지역으로 설정합니다. AWS 계정 자격 증명 구성에 설명된 대로 클러스터 구성 파일, 로컬 환경 변수 또는 자격 증명 프로파일에서 AWS_REGION을 설정할 수 있습니다.

AZ 간에 Worker 분산

AWS에서 다중 AZ prod 클러스터를 생성하면 Tanzu Kubernetes Grid는 클러스터 구성에서 지정한 AZ(가용성 영역)에 제어부 및 Worker 노드를 균등하게 분포합니다. 여기에는 다음 중 일부로 구성된 워크로드 클러스터가 포함됩니다.

  • 제어부 노드의 기본 수
  • 제어부 노드의 기본 수보다 큰 CONTROL_PLANE_MACHINE_COUNT 설정
  • Worker 노드의 기본 수
  • 기본 Worker 노드 수보다 큰 WORKER_MACHINE_COUNT 설정

예를 들어 WORKER_MACHINE_COUNT: 5를 지정하면 Tanzu Kubernetes Grid는 첫 번째 AZ에 Worker 노드 2개, 두 번째 AZ에 Worker 노드 2개, 세 번째 AZ에 Worker 노드 1개를 배포합니다. 필요한 경우 아래의 Worker 노드용 AZ 배치 설정 구성의 지침에 따라 Worker 노드에 이 기본 AZ 배치 메커니즘을 사용자 지정할 수 있습니다. 제어부 노드용 기본 AZ 배치 메커니즘은 사용자 지정할 수 없습니다.

Worker 노드용 AZ 배치 설정 구성

AWS에서 다중 AZ prod 클러스터를 생성할 때 선택적으로 3개의 AZ 각각에 tanzu cluster create 명령이 생성하는 Worker 노드 수를 지정할 수 있습니다.

이렇게 하려면 다음을 수행합니다.

  1. 클러스터 구성 파일에 다음 변수를 포함합니다.

    • WORKER_MACHINE_COUNT_0: 첫 번째 AZ의 Worker 노드 수(AWS_NODE_AZ)를 설정합니다.
    • WORKER_MACHINE_COUNT_1: 두 번째 AZ의 Worker 노드 수(AWS_NODE_AZ_1)를 설정합니다.
    • WORKER_MACHINE_COUNT_2: 세 번째 AZ의 Worker 노드 수(AWS_NODE_AZ_2)를 설정합니다.

    위의 워크로드 클러스터 템플릿에 설명된 대로 다른 필수 및 선택적 설정 외에 이러한 변수를 설정합니다.

  2. 클러스터를 생성합니다. 예:

    tanzu cluster create my-prod-cluster -f my-prod-cluster-config.yaml
    

Dev 관리 클러스터에서 Prod 클러스터 배포

AWS에서 실행되는 dev 관리 클러스터에서 prod 워크로드 클러스터를 생성하는 경우 tanzu cluster create 명령을 실행하기 전에 클러스터 구성 파일에서 추가 변수의 하위 집합을 정의해야 합니다. 이를 통해 Tanzu Kubernetes Grid 클러스터를 생성하고 제어부 및 Worker 노드를 AZ에 분산할 수 있습니다.

AWS의 dev 관리 클러스터에서 prod 워크로드 클러스터를 생성하려면 아래 단계를 수행합니다.

  1. 클러스터 구성 파일에서 다음 변수를 설정합니다.

    • PLANprod로 설정합니다.
    • AWS_NODE_AZ 변수: AWS_NODE_AZdev 관리 클러스터를 배포할 때 설정되었습니다. prod 워크로드 클러스터의 경우 AWS_NODE_AZ_1AWS_NODE_AZ_2를 추가합니다.
    • AWS_PUBLIC_SUBNET_ID(기존 VPC) 변수: AWS_PUBLIC_NODE_CIDR 또는 AWS_PUBLIC_SUBNET_IDdev 관리 클러스터를 배포할 때 설정되었습니다. prod 워크로드 클러스터의 경우 다음 중 하나를 추가합니다.
      • AWS_PUBLIC_NODE_CIDR_1AWS_PUBLIC_NODE_CIDR_2
      • AWS_PUBLIC_SUBNET_ID_1AWS_PUBLIC_SUBNET_ID_2
    • AWS_PRIVATE_SUBNET_ID(기존 VPC) 변수: AWS_PRIVATE_NODE_CIDR 또는 AWS_PRIVATE_SUBNET_IDdev 관리 클러스터를 배포할 때 설정되었습니다. prod 워크로드 클러스터의 경우 다음 중 하나를 추가합니다.
      • AWS_PRIVATE_NODE_CIDR_1AWS_PRIVATE_NODE_CIDR_2
      • AWS_PRIVATE_SUBNET_ID_1AWS_PRIVATE_SUBNET_ID_2
  2. (선택 사항) Worker 노드용 AZ 배치 설정 구성 지침에 따라 배포하려는 Worker 노드에 기본 AZ 배치 메커니즘을 사용자 지정합니다. 기본적으로 Tanzu Kubernetes Grid는 prod Worker 노드를 AZ 전체에 균등하게 분산합니다.

  3. tanzu cluster create 명령을 실행하여 클러스터를 배포합니다. 예:

    tanzu cluster create my-cluster -f my-cluster-config.yaml
    

개체 규격 파일 파일

클러스터를 배포하지 않고 Tanzu CLI를 사용하여 클러스터 구성 파일을 클래스 기반 워크로드 클러스터용 Kubernetes 스타일 개체 규격 파일로 변환할 수 있습니다.

  • tanzu cluster create를 사용하여 생성하는 모든 클래스 기반 클러스터용 개체 규격 파일을 생성하려면 Tanzu CLI 구성에서 auto-apply-generated-clusterclass-based-configuration 기능이 false로 설정되어 있는지 확인합니다. 이 기능은 기본적으로 false로 설정됩니다. auto-apply-generated-clusterclass-based-configurationfalse로 설정되고 --file 플래그를 사용하여 tanzu cluster create를 실행하면 명령이 클러스터 구성 파일을 개체 규격 파일로 변환하고 클러스터를 생성하지 않고 종료합니다. 구성을 검토한 후 Tanzu CLI에서 생성된 개체 규격 파일로 tanzu cluster create를 다시 실행합니다. 기본 구성을 업데이트한 경우 false로 다시 설정하려면 다음을 실행합니다.

    tanzu config set features.cluster.auto-apply-generated-clusterclass-based-configuration false
    
  • 단일 클러스터용 개체 규격 파일을 생성하려면 --dry-run 옵션을 tanzu cluster create로 전달하고 출력을 파일에 저장합니다. 클러스터를 생성하는 경우와 동일한 옵션 및 구성 --file을 사용합니다. 예를 들면 다음과 같습니다.

    tanzu cluster create my-cluster --file my-cluster-config.yaml --dry-run > my-cluster-spec.yaml
    

    그런 다음 개체에서 클래스 기반 클러스터 생성에 설명된 대로 이 개체 규격을 사용하여 클러스터를 배포할 수 있습니다.

후속 작업

워크로드 클러스터 생성으로 진행합니다.

check-circle-line exclamation-circle-line close-line
Scroll to top icon