클러스터 클래스 변수 변환에 대한 구성 파일

이 항목에서는 워크로드 클러스터 구성 파일의 변수가 클래스 기반 Cluster 개체 및 ClusterBootstrap 및 TKG(기타 하위 Tanzu Kubernetes Grid 개체) 내의 변수 설정으로 변환되는 방법을 설명합니다. Cluster 개체 및 하위 개체의 예는 아래 Cluster 개체 및 하위 개체 예를 참조하십시오.

개요: 구성 파일 및 클러스터 클래스 변수

구성 파일 변수와 클래스 기반 클러스터 변수는 다음과 같습니다.

  • 구성 파일 변수는 다음과 같습니다.

  • 클래스 기반 클러스터 변수 설정Cluster 또는 ClusterBootstrap 개체 규격 내에서 중첩된 YAML 설정입니다.

    • Cluster 개체 설정은 다음과 같습니다.

      • 대부분의 클러스터 설정을 사용할 수 있으며 임의로 변경할 수 있습니다.
      • ClusterClass 개체 집합을 클러스터의 spec.topology.class 값으로 정의합니다.
      • spec.topology 아래의 controlPlane, workers 또는 variables 블록에 설정합니다.
      • 설정 예:

        variables:
        - name: imageRepository
          value:
            host: stg-project.vmware.com
        
    • ClusterBootstrap 설정은 컨테이너 네트워킹 및 기존 클러스터에서 변경할 수 없는 기타 낮은 수준의 인프라에 대한 몇 가지 일회성 설정입니다.

클래스 기반 클러스터 생성에 설명된 대로 클러스터 구성 파일을 사용하여 tanzu cluster create 명령을 실행하면 Tanzu CLI가 이 변환을 수행합니다.

노드 구성

아래 표에는 제어부 및 작업자 노드를 구성하기 위한 변수와 노드 인스턴스가 실행하는 운영 체제가 나열되어 있습니다. 구성 파일 변수 열의 변수에 대한 자세한 내용은 구성 파일 변수 참조의 노드 구성을 참조하십시오.

Class 기반 클러스터 개체 구조 열에서 모든 name/value 쌍 설정은 Cluster 아래의 spec.topology.variables 개체 정의에 있습니다. 이 열의 예제 코드는 vSphere Cluster 개체에 적용됩니다. AWS와 Azure의 개체 구조가 다를 수 있습니다.

구성 파일 변수 클래스 기반 클러스터 개체 구조
OS_NAME: ubuntu
OS_VERSION: 20.04
OS_ARCH: amd64
metadata:
  annotations:
    osInfo: ubuntu,20.04,amd64
    
CONTROL_PLANE_MACHINE_COUNT: 3
    
controlPlane:
  ...
  replicas: 3
    
CONTROLPLANE_SIZE: large
SIZE: large
값은 인프라를 기준으로 machine 설정으로 변환됩니다.
SIZE는 제어부 및 작업자 모두에 적용됩니다.
- name: controlPlane
  value:
    machine:
      diskGiB: 40
      memoryMiB: 16384
      numCPU: 4
    
CONTROL_PLANE_NODE_SEARCH_DOMAINS: corp.local, example.com
    
- name: controlPlane
  value:
    ...
    network:
      ...
      searchDomains:
      - corp.local
      - example.com
    
CONTROL_PLANE_NODE_LABELS: 'key1=value1,key2=value2'
    
- name: controlPlane
  value:
    ...
    nodeLabels:
    - key: key1
      value: value1
    - key: key2
      value: value2
    
WORKER_MACHINE_COUNT: 6
    
workers:
  machineDeployments:
  - class: tkg-worker
    ...
    replicas: 6
    
WORKER_SIZE: extra-large
SIZE: extra-large
값은 인프라를 기준으로 machine 설정으로 변환됩니다.
SIZE는 제어부 및 작업자 모두에 적용됩니다.
- name: worker
  value:
    ...
    machine:
      diskGiB: 80
      memoryMiB: 32768
      numCPU: 8
    
WORKER_NODE_SEARCH_DOMAINS: corp.local, example.com
- name: worker
  value:
    ...
    network:
      searchDomains:
      - corp.local
      - example.com
    
CUSTOM_TDNF_REPOSITORY_CERTIFICATE: "YPdeNjLW[...]"
- name: customTDNFRepository
  value:
    certificate: YPdeNjLW[...]
    
WORKER_ROLLOUT_STRATEGY: RollingUpdate
  workers:
    machineDeployments:
    - class: tkg-worker
      failureDomain: "1"
      metadata:
        annotations:
          run.tanzu.vmware.com/resolve-os-image: os-name=ubuntu,os-version=2004
      name: md-0
      replicas: 1
      strategy:
        type: RollingUpdate
    

포드 보안 승인(PSA) 컨트롤러

아래 표에는 포드 보안 승인 컨트롤러에 대한 포드 보안 표준을 구성하기 위한 변수가 나열됩니다. 구성 파일 변수 열의 변수에 대한 자세한 내용은 구성 파일 변수 참조의 포드 보안 승인 컨트롤러의 포드 보안 표준을 참조하십시오.

Class 기반 클러스터 개체 구조 열에서 모든 name/value 쌍 설정은 Cluster 아래의 spec.topology.variables 개체 정의에 있습니다.

구성 파일 변수 클래스 기반 클러스터 개체 구조
POD_SECURITY_STANDARD_DEACTIVATED: false
POD_SECURITY_STANDARD_AUDIT: privileged
POD_SECURITY_STANDARD_WARN: privileged
POD_SECURITY_STANDARD_ENFORCE: baseline
    
- name: podSecurityStandard 
  value: 
    deactivated: false 
    audit: "privileged" 
    enforce: "privileged" 
    warn: "baseline" 
    auditVersion: "v1.26" 
    enforceVersion: "v1.26" 
    warnVersion: "v1.26" 
    exemptions: 
      namespaces: ["kube-system", "tkg-system"] 
    

클러스터 자동조정기

ENABLE_AUTOSCALERtrue이면 Tanzu CLI는 클러스터 Autoscaler용 Deployment 개체를 생성하고 클러스터 Autoscaler annotationsCluster 개체에 추가합니다. 아래의 구성 파일 변수 열의 변수에 대한 자세한 내용은 구성 파일 변수 참조의 클러스터 자동조정기를 참조하십시오.

구성 파일 변수 클래스 기반 클러스터 및 자동조정기 배포 개체 구조
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_MAX_NODES_TOTAL: 0
    
클러스터 자동조정기 Deployment 개체에서:
spec:
  containers:
  - args:
  ...
  - --scale-down-delay-after-add=10m
  - --scale-down-delay-after-delete=10s
  - --scale-down-delay-after-failure=3m
  - --scale-down-unneeded-time=10m
  - --max-node-provision-time=15m
  - --max-nodes-total=0
AUTOSCALER_MAX_SIZE_0: 12
AUTOSCALER_MIN_SIZE_0: 8
AUTOSCALER_MAX_SIZE_1: 10
AUTOSCALER_MIN_SIZE_1: 6
AUTOSCALER_MAX_SIZE_2: 8
AUTOSCALER_MIN_SIZE_2: 4
    
AUTOSCALER_MAX_SIZE_* 또는 AUTOSCALER_MIN_SIZE_*가 설정되지 않은 경우 annotations 설정은 WORKER_MACHINE_COUNT_* 값을 사용합니다.
Cluster 개체의 spec.topology.workers에서:
machineDeployments:
- class: tkg-worker
  metadata:
    annotations:
      cluster.x-k8s.io/cluster-api-autoscaler-node-group-max-size: "12"
      cluster.x-k8s.io/cluster-api-autoscaler-node-group-min-size: "8"
      ...
  name: md-0
- class: tkg-worker
  metadata:
    annotations:
      cluster.x-k8s.io/cluster-api-autoscaler-node-group-max-size: "10"
      cluster.x-k8s.io/cluster-api-autoscaler-node-group-min-size: "6"
      ...
  name: md-1
...

프록시 및 개인 이미지 레지스트리

이 섹션에는 프록시 및 개인 이미지 레지스트리를 사용하기 위한 변수(예: 인터넷 제한 배포)가 나열되어 있습니다.

Class 기반 클러스터 개체 구조 열에서 모든 name/value 쌍 설정은 Cluster 아래의 spec.topology.variables 개체 정의에 있습니다.

구성 파일 변수 클래스 기반 클러스터 개체 구조 참고
TKG_CUSTOM_IMAGE_REPOSITORY: example.com/yourproject
TKG_CUSTOM_IMAGE_REPOSITORY_SKIP_TLS_VERIFY: true
- name: imageRepository
  value:
    host: example.com/yourproject
    tlsCertificateValidation:
      enabled: false
tldCertificateValidation.enabledTKG_CUSTOM_IMAGE_REPOSITORY_SKIP_TLS_VERIFY의 부울 설정을 반대로 적용하며 값이 true인 경우 기록되지 않습니다.
TKG_HTTP_PROXY_ENABLED: true
TKG_HTTP_PROXY: http://proxy.example.com:80
TKG_HTTPS_PROXY: https://proxy.example.com:3128
TKG_NO_PROXY: .noproxy.example.com,noproxy.example.com,192.168.0.0/24
- name: proxy
  value:
    httpProxy: http://proxy.example.com:80
    httpsProxy: https://proxy.example.com:3128
    noProxy:
    - .noproxy.example.com
    - noproxy.example.com
    - 192.168.0.0/24
    - [...]
내부적으로 Tanzu CLI는 [프록시 구성](../../config-ref.md#proxies)에 설명된 대로 구성 파일에 설정되지 않은 noProxy 목록 값에 추가됩니다.
TKG_PROXY_CA_CERT: "LS0tLSBL[...]"
TKG_CUSTOM_IMAGE_REPOSITORY_CA_CERTIFICATE: MIIEpgIH[...]"
- name: trust
  value:
    - name: proxy
      data: LS0tLSBL[...]
    - name: imageRepository
      data: MIIEpgIH[...]
값은 base64로 인코딩된 CA 인증서입니다.
TKG_PROXY_CA_CERTTKG_CUSTOM_IMAGE_REPOSITORY_CA_CERTIFICATE에 우선하고, trust imageRespository 값이 설정된 경우 trust proxy 값이 기록되지 않습니다.
ADDITIONAL_IMAGE_REGISTRY_1: "example.com/otherregistry-1"
ADDITIONAL_IMAGE_REGISTRY_1_SKIP_TLS_VERIFY: false
ADDITIONAL_IMAGE_REGISTRY_1_CA_CERTIFICATE: "LS0tLSBL[...]"
ADDITIONAL_IMAGE_REGISTRY_2: "example.com/otherregistry-2"
ADDITIONAL_IMAGE_REGISTRY_2_SKIP_TLS_VERIFY: true
ADDITIONAL_IMAGE_REGISTRY_3: "example.com/otherregistry-3"
ADDITIONAL_IMAGE_REGISTRY_3_SKIP_TLS_VERIFY: false
ADDITIONAL_IMAGE_REGISTRY_3_CA_CERTIFICATE: "MIIEpgIH[...]"
- name: additionalImageRegistries
  value:
  - caCert: LS0tLSBL[...]
    host: example.com/otherregistry-1
    skipTlsVerify: false
  - host: example.com/otherregistry-2
    skipTlsVerify: true
  - caCert: MIIEpgIH[...]
    host: example.com/otherregistry-3
    skipTlsVerify: false

공통 변수

다음 표에는 모든 대상 플랫폼에게 공통되는 변수가 나열되어 있습니다.

구성 파일 변수 열의 변수에 대한 자세한 내용은 구성 파일 변수 참조의 모든 대상 플랫폼에 대한 공통 변수를 참조하십시오.

Class 기반 클러스터 개체 구조 열에서 모든 name/value 쌍 설정은 Cluster 아래의 spec.topology.variables 개체 정의에 있습니다.

구성 파일 변수 클래스 기반 클러스터 개체 구조
CLUSTER_NAME: my-cluster
NAMESPACE: default
metadata:
  name: my-cluster
  namespace: default
CLUSTER_PLAN: dev
metadata:
  annotations:
    tkg/plan: dev
INFRASTRUCTURE_PROVIDER: vsphere
topology:
    class: tkg-vsphere-default-v1.0.0
    
CLUSTER_API_SERVER_PORT: 6443
- name: apiServerPort
  value: 6443
CNI: antrea
- name: cni
  value: antrea
ENABLE_AUDIT_LOGGING: true
- name: auditLogging
      value:
        enabled: true
CLUSTER_CIDR: 100.96.0.0/11
SERVICE_CIDR: 100.64.0.0/13
spec:
  clusterNetwork:
    pods:
      cidrBlocks:
      - 100.96.0.0/11
    services:
      cidrBlocks:
      - 100.64.0.0/13
CONTROLPLANE_CERTIFICATE_ROTATION_ENABLED: true
CONTROLPLANE_CERTIFICATE_ROTATION_DAYS_BEFORE: 65
- name: controlPlaneCertificateRotation
  value:
    activate: true
    daysBefore: 65

Antrea CNI

이 섹션에는 클러스터의 CNI(Antrea 컨테이너 네트워크 인터페이스)를 구성하기 위한 변수가 나열됩니다. 클래스 기반 클러스터 변수는 ClusterBootstrap 개체의 spec.cni.refName 속성에서 참조되는 AntreaConfig 개체에 상주합니다.

클래스 기반 클러스터는 해당 TKG 구성 파일 변수가 없는 많은 Antrea 구성 옵션을 지원합니다. 클래스 기반 Cluster 개체에 대해 설정할 수 있는 모든 Antrea 구성 옵션은 Antrea 설명서의 구성 게이트 및 기타 항목을 참조하십시오.

AntreaConfig 개체 구조 열에서 모든 설정은 spec.antrea.config 아래의 AntreaConfig 개체 정의에 있습니다.

구성 파일 변수 AntreaConfig Object Structure
ANTREA_DISABLE_UDP_TUNNEL_OFFLOAD: false
ANTREA_ENABLE_USAGE_REPORTING: false
ANTREA_KUBE_APISERVER_OVERRIDE: "https://192.168.77.100:6443"
ANTREA_NO_SNAT: false
ANTREA_TRAFFIC_ENCAP_MODE: "encap"
ANTREA_TRANSPORT_INTERFACE: "eth0"
ANTREA_TRANSPORT_INTERFACE_CIDRS: "10.0.0.2/24"
disableUdpTunnelOffload: false
enableUsageReporting: false
kubeAPIServerOverride: https://192.168.77.100:6443
noSNAT: false
trafficEncapMode: encap
transportInterface: eth0
transportInterfaceCIDR:
- 10.0.0.2/24
ANTREA_EGRESS: true
ANTREA_IPAM: false
ANTREA_MULTICAST: false
ANTREA_NETWORKPOLICY_STATS: true
ANTREA_NODEPORTLOCAL: true
ANTREA_SERVICE_EXTERNALIP: false
ANTREA_POLICY: true
ANTREA_TRACEFLOW: true
featureGates:
  Egress: true
  AntreaIPAM: false
  Multicast: false
  NetworkPolicyStats: true
  NodePortLocal: true
  ServiceExternalIP: false
  AntreaPolicy: true
  AntreaTraceflow: true
ANTREA_PROXY: false
ANTREA_PROXY_ALL: false
ANTREA_PROXY_LOAD_BALANCER_IPS: true
ANTREA_PROXY_NODEPORT_ADDRS: "100.70.70.12"
ANTREA_PROXY_SKIP_SERVICES: 10.11.1.2,kube-system/kube-dns
antreaProxy:
  nodePortAddresses:
  - 100.70.70.12
  proxyAll: false
  proxyLoadBalancer IP: true
  skipServices:
  - 10.11.1.2
  - kube-system/kube-dns
ANTREA_FLOWEXPORTER: false
ANTREA_FLOWEXPORTER_ACTIVE_TIMEOUT: "60s"
ANTREA_FLOWEXPORTER_COLLECTOR_ADDRESS: "flow-aggregator.svc:4739:tls"
ANTREA_FLOWEXPORTER_POLL_INTERVAL: "5s"
ANTREA_FLOWEXPORTER_IDLE_TIMEOUT: "15s"
flowExporter:
  activeFlowTimeout: 60s
  collectorAddress: flow-aggregator.svc:4739:tls
  idleFlowTimeout: 15s
  pollInterval: 5s
ANTREA_NODEPORTLOCAL_ENABLED: true
ANTREA_NODEPORTLOCAL_PORTRANGE: 61000-62000
nodePortLocal:
  enabled: true
  portRange: 61000-62000
ANTREA_EGRESS_EXCEPT_CIDRS: "10.0.0.0/6"
egress:
  exceptCIDR:
  - 10.0.0.0/6
ANTREA_MULTICAST_INTERFACES: "eth0"
multicastInterfaces:
- eth0

vSphere

이 섹션에는 워크로드 클러스터를 vSphere 배포하기 위한 변수가 나열됩니다. 아래의 구성 파일 변수 열의 변수에 대한 자세한 내용은 구성 파일 변수 참조의 vSphere를 참조하십시오. Class 기반 개체 구조 열에 나열된 설정은 나열된 kind 개체에 있습니다.

구성 파일 변수 개체 구조
TKG_IP_FAMILY: ipv4
VSPHERE_CONTROL_PLANE_ENDPOINT: 10.237.177.161
VSPHERE_REGION: my-region
VSPHERE_ZONE: my-zone
kind: VSphereCPIConfig
spec:
  vsphereCPI:
    ipFamily: ipv4
    vmNetwork:
      excludeExternalSubnetCidr: 10.237.177.161/32
      excludeInternalSubnetCidr: 10.237.177.161/32
    zone: my-zone

kind: Cluster
metadata:
  annotations:
    tkg.tanzu.vmware.com/cluster-controlplane-endpoint: 10.237.177.161
spec:
  topology:
    variables:
    - name: apiServerEndpoint
      value: 10.237.177.161
VSPHERE_MTU

kind: Cluster
spec:
  topology:
    variables:
    - name: controlPlane
      value:
        ...
        network:
            mtu: 1500
    - name: worker
      value:
        ...
        network:
            mtu: 1500
VSPHERE_DATACENTER: /dc0
VSPHERE_DATASTORE: /dc0/datastore/sharedVmfs-0
VSPHERE_FOLDER: /dc0/vm/folder0
VSPHERE_NETWORK: /dc0/network/VM Network
VSPHERE_RESOURCE_POOL: /dc0/host/cluster0/Resources/rp0
VSPHERE_SERVER: 10.237.179
VSPHERE_STORAGE_POLICY_ID: my-local-sp
VSPHERE_TEMPLATE: /dc0/vm/ubuntu-2004-kube-v1.27.5+vmware.2-tkg.1
VSPHERE_TLS_THUMBPRINT: B7:15:(...) :1D:2F
kind: ClusterBootstrap
spec:
  additionalPackages:
  - refName: tkg-storageclass*
    valuesFrom:
      inline:
        VSPHERE_STORAGE_POLICY_ID: my-local-sp

kind: Cluster
spec:
  topology:
    variables:
    - name: vcenter
      value:
        datacenter: /dc0
        Datastore: /dc0/datastore/sharedVmfs-0
        folder: /dc0/vm/folder0
        network: /dc0/network/VM Network
        resourcePool: /dc0/host/cluster0/Resources/rp0
        server: 10.237.179.190
        storagePolicyID: my-local-sp
        템플릿: /dc0/vm/ubuntu-2004-kube-v1.27.5+vmware.2-tkg.1
        tlsThumbprint: B7:15:(...) :1D:2F
VSPHERE_SSH_AUTHORIZED_KEY: ssh-rsa NzaC1yc2EA[...] ==
kind: Cluster
spec:
  topology:
    variables:
    - name: user
      value:
        sshAuthorizedKeys:
        - ssh-rsa NzaC1yc2EA[...] ==
VSPHERE_CONTROL_PLANE_DISK_GIB: "30"
VSPHERE_CONTROL_PLANE_MEM_MIB: "2048"
VSPHERE_CONTROL_PLANE_NUM_CPUS: "2"
VSPHERE_WORKER_DISK_GIB: "50"
VSPHERE_WORKER_MEM_MIB: "4096"
VSPHERE_WORKER_NUM_CPUS: "4"
kind: Cluster
spec:
  topology:
    variables:
    - name: controlPlane
      value:
        machine:
          diskGiB: 40
          memoryMiB: 8192
          numCPU: 2
    - name: worker
      value:
        machine:
          diskGiB: 40
          memoryMiB: 8192
          numCPU: 2
NTP_SERVERS: time.google.com
kind: Cluster
spec:
  topology:
    variables:
    - name: ntpServers
      value:
      - time.google.com
VSPHERE_AZ_0: rack1
VSPHERE_AZ_1: rack2
VSPHERE_AZ_2: rack3
kind: Cluster
spec:
  topology:
    workers:
      machineDeployments:
      - class: tkg-worker
        failureDomain: rack1
        name: md-0
      - class: tkg-worker
        failureDomain: rack2
        name: md-1
      - class: tkg-worker
        failureDomain: rack3
        name: md-2
CONTROL_PLANE_NODE_NAMESERVERS: “10.10.10.10,10.10.10.11”
WORKER_NODE_NAMESERVERS: “10.10.10.10,10.10.10.11”
- name: controlplane
  value:
	network:
	  nameservers:
	  - 10.10.10.10
	  - 10.10.10.11
- name: worker
  value:
	network:
	  nameservers:
	  - 10.10.10.10
	  - 10.10.10.11
    

AWS

이 섹션에는 AWS에 워크로드 클러스터를 배포하기 위한 변수가 나열됩니다. 아래의 구성 파일 변수 열의 변수에 대한 자세한 내용은 구성 파일 변수 참조의 AWS를 참조하십시오.

Class 기반 클러스터 개체 구조 열에서 모든 name/value 쌍 설정은 Cluster 아래의 spec.topology.variables 개체 정의에 있습니다.

구성 파일 변수 클래스 기반 클러스터 개체 구조
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN
AWS_PROFILE
    
해당 없음
이러한 설정은 Cluster 개체에 저장되지 않습니다.
AWS_REGION: us-east-1
    
- name: region
  value: us-east-1
    
AWS_SSH_KEY_NAME: aws-tkg-clusteradmin
    
- name: sshKeyName
  value: aws-tkg-clusteradmin
    
AWS_LOAD_BALANCER_SCHEME_INTERNAL: false
    
- name: loadBalancerSchemeInternal
  value: false
BASTION_HOST_ENABLED: true
    
- name: bastion
  value:
    enabled: true
    
AWS_NODE_AZ: us-east-1a
AWS_PRIVATE_NODE_CIDR: 10.0.0.0/24
AWS_PRIVATE_SUBNET_ID: subnet-0a7d376dde53c77ed
AWS_PUBLIC_NODE_CIDR: 10.0.1.0/24
AWS_PUBLIC_SUBNET_ID: subnet-0794d50f57e9801b6
AWS_NODE_AZ_1: us-west-2b
AWS_PRIVATE_NODE_CIDR_1: 10.0.2.0/24
AWS_PRIVATE_SUBNET_ID_1: subnet-0c338780824d1c59d
AWS_PUBLIC_NODE_CIDR_1: 10.0.3.0/24
AWS_PUBLIC_SUBNET_ID_1: subnet-0addabd635d02ba97
AWS_NODE_AZ_2: ap-southeast-3
AWS_PRIVATE_NODE_CIDR_2: 10.0.4.0/24
AWS_PRIVATE_SUBNET_ID_2: subnet-00b9638e419a6187b
AWS_PUBLIC_NODE_CIDR_2: 10.0.5.0/24
AWS_PUBLIC_SUBNET_ID_2: subnet-0ed174ef16a2f43aa
- name: network
  value:
    subnets:
    - az: us-east-1a
      private:
        cidr: 10.0.0.0/24
        id: subnet-0a7d376dde53c77ed
      public:
        cidr: 10.0.1.0/24
        id: subnet-0794d50f57e9801b6
    - az: us-west-2b
      private:
        cidr: 10.0.2.0/24
        id: subnet-0c338780824d1c59d
      public:
        cidr: 10.0.3.0/24
        id: subnet-0addabd635d02ba97
    - az: ap-southeast-3
      private:
        cidr: 10.0.4.0/24
        id: subnet-00b9638e419a6187b
      public:
        cidr: 10.0.5.0/24
        id: subnet-0ed174ef16a2f43aa
    
AWS_VPC_CIDR: 10.0.0.0/16
    
- name: network
  value:
    ...
    vpc:
      cidr: 10.0.0.0/16
    
AWS_VPC_ID: vpc-0ce8bdfea218
    
- name: network
  value:
    ...
    vpc:
      existingID: vpc-0ce8bdfea218
    
AWS_SECURITY_GROUP_BASTION: sg-1
AWS_SECURITY_GROUP_APISERVER_LB: sg-2
AWS_SECURITY_GROUP_LB: sg-3
AWS_SECURITY_GROUP_CONTROLPLANE: sg-4
AWS_SECURITY_GROUP_NODE: sg-5
    
- name: network
  value:
    ...
    securityGroupOverrides:
      bastion: sg-1
      apiServerLB: sg-2
      lb: sg-3
      controlPlane: sg-4
      node: sg-5
    
AWS_IDENTITY_REF_NAME: my-aws-id
AWS_IDENTITY_REF_KIND: AWSClusterRoleIdentity
    
- name: identityRef
  value:
    name: my-aws-id
    kind: AWSClusterRoleIdentity
    
NODE_MACHINE_TYPE: m5.large
AWS_NODE_OS_DISK_SIZE_GIB: 80
    
다중 AZ 배포에서는 NODE_MACHINE_TYPE_1NODE_MACHINE_TYPE_2를 설정할 수도 있습니다.
Cluster 개체의 spec.topology.workers에서:
machineDeployments:
- class: tkg-worker
  name: md-0
  value:
    instanceType: m5.large
    rootVolume:
      sizeGiB: 80
    
CONTROL_PLANE_MACHINE_TYPE: t3.large
AWS_CONTROL_PLANE_OS_DISK_SIZE_GIB: 80
    
- name: controlPlane
  value:
    instanceType: t3.large
    rootVolume:
      sizeGiB: 80
    

Microsoft Azure

이 섹션에는 Microsoft Azure에 워크로드 클러스터를 배포하기 위한 변수가 나열됩니다. 아래의 구성 파일 변수 열의 변수에 대한 자세한 내용은 구성 파일 변수 참조에서 Microsoft Azure를 참조하십시오.

Class 기반 클러스터 개체 구조 열에서 모든 name/value 쌍 설정은 Cluster 아래의 spec.topology.variables 개체 정의에 있습니다.

구성 파일 변수 클래스 기반 클러스터 개체 구조
AZURE_CLIENT_ID
AZURE_CLIENT_SECRET
AZURE_TENANT_ID
해당 없음
이러한 설정은 Cluster 개체에 노출되지 않습니다.
AZURE_LOCATION: eastus2
- name: location
  value: eastus2
AZURE_RESOURCE_GROUP: my-azure-rg
- name: resourceGroup
  value: my-azure-rg
AZURE_SUBSCRIPTION_ID: c789uce3-aaaa-bbbb-cccc-a51b6b0gb405
- name: subscriptionID
  value: c789uce3-aaaa-bbbb-cccc-a51b6b0gb405
AZURE_ENVIRONMENT: AzurePublicCloud
- name: environment
  value: AzurePublicCloud
AZURE_SSH_PUBLIC_KEY_B64: "c3NoLXJzYSBB [...] vdGFsLmlv"
- name: sshPublicKey
  value: c3NoLXJzYSBB [...] vdGFsLmlv
		
AZURE_FRONTEND_PRIVATE_IP: 10.0.0.100
AZURE_ENABLE_PRIVATE_CLUSTERtrue입니다.
- name: frontendPrivateIP
  value: 10.0.0.100
    
AZURE_CUSTOM_TAGS: "foo=bar, plan=prod"
- name: customTags
  value: "foo=bar, plan=prod"
    
AZURE_ENABLE_ACCELERATED_NETWORKING: true
- name: acceleratedNetworking
  value:
    enabled: true
    
AZURE_ENABLE_PRIVATE_CLUSTER: false
- name: privateCluster
  value:
    enabled: false
    
AZURE_VNET_CIDR: 10.0.0.0/16
AZURE_VNET_NAME: my-azure-vnet
AZURE_VNET_RESOURCE_GROUP: my-azure-vnet-rg
- name: network
  value:
    vnet:
      cidrBlocks:
      - 10.0.0.0/16
      name: my-azure-vnet
      resourceGroup: my-azure-vnet-rg
AZURE_IDENTITY_NAME: my-azure-id
AZURE_IDENTITY_NAMESPACE: default
    
- name: identityRef
  value:
    name: my-azure-id
    namespace: default  
AZURE_CONTROL_PLANE_DATA_DISK_SIZE_GIB: 256
AZURE_CONTROL_PLANE_OS_DISK_SIZE_GIB: 128
AZURE_CONTROL_PLANE_OS_DISK_STORAGE_ACCOUNT_TYPE: Premium_LRS
AZURE_ENABLE_CONTROL_PLANE_OUTBOUND_LB: true
AZURE_CONTROL_PLANE_OUTBOUND_LB_FRONTEND_IP_COUNT: 1
AZURE_CONTROL_PLANE_SUBNET_CIDR: 10.0.0.0/24
AZURE_CONTROL_PLANE_SUBNET_NAME: my-azure-cp-subnet
AZURE_CONTROL_PLANE_MACHINE_TYPE: Standard_D2s_v3
    
- name: controlPlane
  value:
    dataDisks:
    - sizeGiB: 256
    osDisk:
      sizeGiB: 128
      storageAccountType: Premium_LRS
    outboundLB:
      enabled: true
      frontendIPCount: 1
    subnet:
      cidr: 10.0.0.0/24
      name: my-azure-cp-subnet
    vmSize: Standard_D2s_v3
    
AZURE_ENABLE_NODE_DATA_DISK: true
AZURE_NODE_DATA_DISK_SIZE_GIB: 256
AZURE_NODE_OS_DISK_SIZE_GIB: 128
AZURE_NODE_OS_DISK_STORAGE_ACCOUNT_TYPE: Premium_LRS
AZURE_ENABLE_NODE_OUTBOUND_LB: true
AZURE_NODE_OUTBOUND_LB_FRONTEND_IP_COUNT: 1
AZURE_NODE_OUTBOUND_LB_IDLE_TIMEOUT_IN_MINUTES: 4
AZURE_NODE_SUBNET_CIDR: 10.0.1.0/24
AZURE_NODE_SUBNET_NAME: my-azure-worker-subnet
AZURE_NODE_MACHINE_TYPE: Standard_D2s_v3
    
- name: worker
  value:
    dataDisks:
    - sizeGiB: 256
    osDisk:
      sizeGiB: 128
      storageAccountType: Premium_LRS
    outboundLB:
      enabled: true
      frontendIPCount: 1
      idleTimeoutInMinutes: 4
    subnet:
      cidr: 10.0.1.0/24
      name: my-azure-worker-subnet
    vmSize: Standard_D2s_v3
    

NSX Advanced Load Balancer

이 섹션에는 TKG에서 ALB(NSX Advanced Load Balancer)를 구성하는 변수가 나열되어 있습니다.

구성 파일 변수 클래스 기반 클러스터 개체 구조
AVI_CONTROL_PLANE_HA_PROVIDER
topology:
  variables:
    - name: aviAPIServerHAProvider
      value: true
    

Cluster 개체 및 하위 개체 예

클러스터 구성 파일을 tanzu cluster create--file 플래그에 전달하면 명령은 클러스터 구성 파일을 클러스터 규격 파일로 변환합니다. 다음 구성 파일에서 Cluster 개체, 그리고 tanzu cluster create에서 생성된 하위 개체에 대한 예는 아래를 참조하십시오.

CLUSTER_NAME: example-cluster
CLUSTER_PLAN: dev
NAMESPACE: default
CNI: antrea
VSPHERE_NETWORK: /dc0/network/VM Network
VSPHERE_SSH_AUTHORIZED_KEY: ssh-rsa AAAACCCza2EBBB[...]ADGQAg/POl6vyWOmQ==
VSPHERE_USERNAME: [email protected]
VSPHERE_PASSWORD: 1234567AbC!
VSPHERE_SERVER: 10.XXX.XXX.71
VSPHERE_DATACENTER: /dc0
VSPHERE_RESOURCE_POOL: /dc0/host/cluster0/Resources/example-tkg
VSPHERE_DATASTORE: /dc0/datastore/vsanDatastore
VSPHERE_FOLDER: /dc0/vm/example-tkg
VSPHERE_TLS_THUMBPRINT: ""
VSPHERE_INSECURE: true
VSPHERE_CONTROL_PLANE_ENDPOINT: 10.XXX.XXX.75
AVI_CONTROL_PLANE_HA_PROVIDER: false
ENABLE_AUDIT_LOGGING: false
ENABLE_DEFAULT_STORAGE_CLASS: true
CLUSTER_CIDR: 100.96.0.0/11
SERVICE_CIDR: 100.64.0.0/13
ENABLE_AUTOSCALER: false

결과 Cluster 개체 및 하위 개체:

apiVersion: cpi.tanzu.vmware.com/v1alpha1
kind: VSphereCPIConfig
metadata:
  name: example-cluster
  namespace: default
spec:
  vsphereCPI:
    mode: vsphereCPI
    tlsCipherSuites: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
    vmNetwork:
      excludeExternalSubnetCidr: 10.XXX.XXX.75/32
      excludeInternalSubnetCidr: 10.XXX.XXX.75/32
---
apiVersion: csi.tanzu.vmware.com/v1alpha1
kind: VSphereCSIConfig
metadata:
  name: example-cluster
  namespace: default
spec:
  vsphereCSI:
    config:
      datacenter: /dc0
      httpProxy: ""
      httpsProxy: ""
      insecureFlag: true
      noProxy: ""
      region: null
      tlsThumbprint: ""
      useTopologyCategories: false
      zone: null
    mode: vsphereCSI
---
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: ClusterBootstrap
metadata:
  annotations:
    tkg.tanzu.vmware.com/add-missing-fields-from-tkr: TKR-NAME
  name: example-cluster
  namespace: default
spec:
  additionalPackages:
  - refName: metrics-server*
  - refName: secretgen-controller*
  - refName: pinniped*
  cpi:
    refName: vsphere-cpi*
    valuesFrom:
      providerRef:
        apiGroup: cpi.tanzu.vmware.com
        kind: VSphereCPIConfig
        name: example-cluster
  csi:
    refName: vsphere-csi*
    valuesFrom:
      providerRef:
        apiGroup: csi.tanzu.vmware.com
        kind: VSphereCSIConfig
        name: example-cluster
  kapp:
    refName: kapp-controller*
---
apiVersion: v1
kind: Secret
metadata:
  name: example-cluster
  namespace: default
stringData:
  password: 1234567AbC!
  username: [email protected]
---
apiVersion: cluster.x-k8s.io/v1beta1
kind: Cluster
metadata:
  annotations:
    osInfo: ubuntu,20.04,amd64
    tkg.tanzu.vmware.com/cluster-controlplane-endpoint: 10.XXX.XXX.75
    tkg/plan: dev
  labels:
    tkg.tanzu.vmware.com/cluster-name: example-cluster
  name: example-cluster
  namespace: default
spec:
  clusterNetwork:
    pods:
      cidrBlocks:
      - 100.96.0.0/11
    services:
      cidrBlocks:
      - 100.64.0.0/13
  topology:
    class: tkg-vsphere-default-CLUSTER-CLASS-VERSION
    controlPlane:
      metadata:
        annotations:
          run.tanzu.vmware.com/resolve-os-image: image-type=ova,os-name=ubuntu
      replicas: 1
    variables:
    - name: cni
      value: antrea
    - name: controlPlaneCertificateRotation
      value:
        activate: true
        daysBefore: 90
    - name: auditLogging
      value:
        enabled: false
    - name: podSecurityStandard
      value:
        audit: restricted
        deactivated: false
        warn: restricted
    - name: apiServerEndpoint
      value: 10.XXX.XXX.75
    - name: aviAPIServerHAProvider
      value: false
    - name: vcenter
      value:
        cloneMode: fullClone
        datacenter: /dc0
        datastore: /dc0/datastore/vsanDatastore
        folder: /dc0/vm/example-tkg
        network: /dc0/network/VM Network
        resourcePool: /dc0/host/cluster0/Resources/example-tkg
        server: 10.XXX.XXX.71
        storagePolicyID: ""
        tlsThumbprint: ""
    - name: user
      value:
        sshAuthorizedKeys:
        - ssh-rsa AAAACCCza2EBBB[...]ADGQAg/POl6vyWOmQ==
    - name: controlPlane
      value:
        machine:
          diskGiB: 40
          memoryMiB: 8192
          numCPUs: 2
    - name: worker
      value:
        machine:
          diskGiB: 40
          memoryMiB: 4096
          numCPUs: 2
    - name: security
      value:
        fileIntegrityMonitoring:
          enabled: false
        imagePolicy:
          pullAlways: false
          webhook:
            enabled: false
            spec:
              allowTTL: 50
              defaultAllow: true
              denyTTL: 60
              retryBackoff: 500
        kubeletOptions:
          eventQPS: 50
          streamConnectionIdleTimeout: 4h0m0s
        systemCryptoPolicy: default
    version: KUBERNETES-VERSION
    workers:
      machineDeployments:
      - class: tkg-worker
        metadata:
          annotations:
            run.tanzu.vmware.com/resolve-os-image: image-type=ova,os-name=ubuntu
        name: md-0
        replicas: 1
        strategy:
          type: RollingUpdate

위의 예제 개체 규격 파일에는 다음과 같은 자리 표시자 텍스트가 포함되어 있습니다.

  • tkg.tanzu.vmware.com/add-missing-fields-from-tkr: TKR-NAMETKR-NAME: 구성에 따라 tanzu cluster create를 호환되는 TKr(Tanzu Kubernetes 릴리스)로 설정합니다. 예: tkg.tanzu.vmware.com/add-missing-fields-from-tkr: v1.27.5---vmware.1-tkg.1. v1.27.5---vmware.1-tkg.1는 이 Tanzu Kubernetes Grid 릴리스의 기본 TKr입니다.
  • version: KUBERNETES-VERSIONKUBERNETES-VERSION: 구성에 따라 tanzu cluster create를 호환되는 Kubernetes 버전으로 설정합니다. 예: version: v1.27.5+vmware.1-tkg.1. v1.27.5+vmware.1-tkg.1는 이 Tanzu Kubernetes Grid 릴리스의 기본 Kubernetes 버전입니다.
  • class: tkg-vsphere-default-CLUSTER-CLASS-VERSIONCLUSTER-CLASS-VERSION: 기본 class 버전입니다. 예: class: tkg-vsphere-default-v1.1.1.
check-circle-line exclamation-circle-line close-line
Scroll to top icon