Azure 클러스터 구성 파일

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

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

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

중요

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

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

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

개요

워크로드 클러스터를 Azure에 배포하기 전에 구성하려면 클러스터 구성 파일 또는 Kubernetes 스타일 개체 규격 파일을 생성합니다. 이러한 파일 중 하나를 tanzu cluster create-f 옵션에 전달하면 Tanzu CLI는 파일에 정의된 구성 정보를 사용하여 Azure 계정에 연결하고 클러스터에서 사용할 리소스를 생성합니다.

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

구성 파일 생성

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

워크로드 클러스터 템플릿

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

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

Azure 전용 워크로드 클러스터에 변수를 구성하는 방식은 관리 클러스터와 워크로드 클러스터 모두에 대해 동일합니다. 변수를 구성하는 방법에 대한 자세한 내용은 구성 파일에서 관리 클러스터 배포Azure용 관리 클러스터 구성을 참조하십시오.

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

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

#! ---------------------------------------------------------------------
#! Node configuration
#! ---------------------------------------------------------------------

# SIZE:
# CONTROLPLANE_SIZE:
# WORKER_SIZE:
# AZURE_CONTROL_PLANE_MACHINE_TYPE: "Standard_D2s_v3"
# AZURE_NODE_MACHINE_TYPE: "Standard_D2s_v3"
# CONTROL_PLANE_MACHINE_COUNT: 1
# WORKER_MACHINE_COUNT: 1
# WORKER_MACHINE_COUNT_0:
# WORKER_MACHINE_COUNT_1:
# WORKER_MACHINE_COUNT_2:
# AZURE_CONTROL_PLANE_OS_DISK_SIZE_GIB: 128
# AZURE_CONTROL_PLANE_OS_DISK_STORAGE_ACCOUNT_TYPE: Premium_LRS
# AZURE_NODE_OS_DISK_SIZE_GIB: 128
# AZURE_NODE_OS_DISK_STORAGE_ACCOUNT_TYPE: Premium_LRS
# AZURE_CONTROL_PLANE_DATA_DISK_SIZE_GIB: 256
# AZURE_ENABLE_NODE_DATA_DISK: false
# AZURE_NODE_DATA_DISK_SIZE_GIB: 256

#! ---------------------------------------------------------------------
#! Azure Configuration
#! ---------------------------------------------------------------------

AZURE_ENVIRONMENT: "AzurePublicCloud"
AZURE_TENANT_ID:
AZURE_SUBSCRIPTION_ID:
AZURE_CLIENT_ID:
AZURE_CLIENT_SECRET:
AZURE_LOCATION:
AZURE_SSH_PUBLIC_KEY_B64:
# AZURE_ENABLE_ACCELERATED_NETWORKING: true
# AZURE_RESOURCE_GROUP: ""
# AZURE_VNET_RESOURCE_GROUP: ""
# AZURE_VNET_NAME: ""
# AZURE_VNET_CIDR: "10.0.0.0/16"
# AZURE_CONTROL_PLANE_SUBNET_NAME: ""
# AZURE_CONTROL_PLANE_SUBNET_CIDR: "10.0.0.0/24"
# AZURE_CONTROL_PLANE_SUBNET_SECURITY_GROUP: ""
# AZURE_NODE_SUBNET_NAME: ""
# AZURE_NODE_SUBNET_CIDR: "10.0.1.0/24"
# AZURE_NODE_SUBNET_SECURITY_GROUP: ""
# AZURE_NODE_AZ: ""
# AZURE_NODE_AZ_1: ""
# AZURE_NODE_AZ_2: ""
# AZURE_CUSTOM_TAGS:
# AZURE_ENABLE_PRIVATE_CLUSTER: false
# AZURE_FRONTEND_PRIVATE_IP: "10.0.0.100"
# AZURE_ENABLE_CONTROL_PLANE_OUTBOUND_LB: false
# AZURE_ENABLE_NODE_OUTBOUND_LB: false
# AZURE_CONTROL_PLANE_OUTBOUND_LB_FRONTEND_IP_COUNT: 1
# AZURE_NODE_OUTBOUND_LB_FRONTEND_IP_COUNT: 1
# AZURE_NODE_OUTBOUND_LB_IDLE_TIMEOUT_IN_MINUTES: 4
# AZURE_IMAGE_ID:
# AZURE_IMAGE_RESOURCE_GROUP:
# AZURE_IMAGE_NAME:
# AZURE_IMAGE_SUBSCRIPTION_ID:
# AZURE_IMAGE_GALLERY:
# AZURE_IMAGE_PUBLISHER:
# AZURE_IMAGE_OFFER:
# AZURE_IMAGE_SKU:
# AZURE_IMAGE_THIRD_PARTY:
# AZURE_IMAGE_VERSION:
# AZURE_IDENTITY_NAME:
# AZURE_IDENTITY_NAMESPACE:

#! ---------------------------------------------------------------------
#! 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: ""

기존 VNet용 Azure NSG 생성

Azure의 Tanzu Kubernetes Grid 관리 및 워크로드 클러스터를 사용하려면 클러스터의 VNet과 해당 VNet 리소스 그룹에 두 개의 NSG(네트워크 보안 그룹)를 정의해야 합니다.

  • 이름이 CLUSTER-NAME-controlplane-nsg이고 클러스터의 제어부 서브넷과 연결된 NSG
  • 이름이 CLUSTER-NAME-node-nsg이고 클러스터의 Worker 노드 서브넷과 연결된 NSG

    여기서 CLUSTER-NAME은 클러스터의 이름입니다.

워크로드 클러스터에 기존 VNet을 지정하는 경우 Azure에서 이러한 NSG를 생성해야 합니다. 워크로드 클러스터의 기존 VNet은 구성 파일에 AZURE_VNET_NAME으로 지정됩니다.

클러스터에 기존 VNet을 지정하지 않으면 배포 프로세스에서 새 VNet과 필요한 NSG를 생성합니다.

클러스터의 VNet, 리소스 그룹, 서브넷을 구성하는 방법은 구성 파일 변수 참조의 Microsoft Azure 표를 참조하십시오.

개체 규격 파일 파일

클러스터를 배포하지 않고 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