Tanzu Kubernetes Grid 서비스 선언적 API는 Tanzu Kubernetes 클러스터 구성을 위한 여러 매개 변수를 노출합니다. 클러스터를 프로비저닝하고 사용자 지정하려면 모든 매개 변수 및 사용 지침에 대한 목록과 설명을 참조하십시오.

Tanzu Kubernetes 클러스터 프로비저닝을 위한 주석이 달린 YAML

주석이 달린 YAML에는 Tanzu Kubernetes 클러스터를 프로비저닝하는 데 사용할 수 있는 모든 매개 변수가 각 필드에 대한 요약 설명과 함께 나열되어 있습니다.
참고: 주석이 달린 YAML은 클러스터 프로비저닝을 위한 유효성이 검사되지 않습니다. 이러한 지침에 대한 예는 Tanzu Kubernetes Grid 서비스 v1alpha1 API를 사용하여 Tanzu Kubernetes 클러스터를 프로비저닝하는 예 항목을 참조하십시오.
apiVersion: run.tanzu.vmware.com/v1alpha1
kind: TanzuKubernetesCluster
metadata:
  name: <tanzu kubernetes cluster name>
  namespace: <vsphere namespace where the cluster will be provisioned>
spec:
  distribution:
    version: <tanzu kubernetes release version string: full, point, short>      
  topology:                               
    controlPlane:
      count: <integer either 1 or 3>
      class: <vm class bound to the target vsphere namespace>
      storageClass: <vsphere storage policy bound to the target vsphere namespace>
      volumes: #optional setting for high-churn control plane component (such as etcd)
        - name: <user-defined string>
          mountPath: </dir/path>
          capacity:
            storage: <size in GiB> 
    workers:                              
      count: <integer from 0 to 150>
      class: <vm class bound to the target vsphere namespace>
      storageClass: <vsphere storage policy bound to the target vsphere namespace>
      volumes: #optional setting for high-churn worker node component (such as containerd)
        - name: <user-defined string>
          mountPath: </dir/path>
          capacity:
            storage: <size in GiB>              
  settings: #all spec.settings are optional
    storage: #optional storage settings
      classes: [<array of kubernetes storage classes for dynamic pvc provisioning>]
      defaultClass: <default kubernetes storage class>
    network: #optional network settings
      cni: #override default cni set in the tkgservicesonfiguration spec
        name: <antrea or calico>
      pods: #custom pod network
        cidrBlocks: [<array of pod cidr blocks>]
      services: #custom service network
        cidrBlocks: [<array of service cidr blocks>]
      serviceDomain: <custom service domain>
      proxy: #proxy server for outbound connections
        httpProxy: http://<IP:PORT> 
        httpsProxy: http://<IP:PORT>
        noProxy: [<array of CIDRs to not proxy>]
      trust: #trust fields for custom public certs for tls
        additionalTrustedCAs:
          - name: <first-cert-name>
            data: <base64-encoded string of PEM encoded public cert 1>
          - name: <second-cert-name>
            data: <base64-encoded string of PEM encoded public cert 2>

Tanzu Kubernetes 클러스터 프로비저닝을 위한 매개 변수

다음 표에는 Tanzu Kubernetes 클러스터를 프로비저닝하기 위한 모든 매개 변수와 허용되는 값이 나열 및 설명되어 있습니다. 예제에 대해서는 Tanzu Kubernetes Grid 서비스 v1alpha1 API 구성 예시 항목을 참조하십시오.

표 1. Tanzu Kubernetes 클러스터 프로비저닝을 위한 매개 변수
이름 설명
apiVersion run.tanzu.vmware.com/v1alpha1 Tanzu Kubernetes Grid 서비스 API의 버전을 지정합니다.
kind TanzuKubernetesCluster 생성할 Kubernetes 리소스의 유형을 지정합니다. 허용되는 유일한 값은 TanzuKubernetesCluster(대/소문자 구분)입니다.
metadata 클러스터 메타데이터에 대한 섹션 클러스터 메타데이터(예: namenamespace)를 포함합니다. 이는 표준 Kubernetes 메타데이터이므로 name 대신 generateName을 사용하고 레이블과 주석 등을 추가할 수 있습니다.
name 영숫자 문자와 대시를 허용하는 사용자 정의 문자열(예: my-tkg-cluster-1) 생성할 클러스터의 이름을 지정합니다. 현재 클러스터 이름 지정 제약 조건:
  • 이름 길이는 41자 이하여야 합니다.
  • 이름은 문자로 시작해야 합니다.
  • 이름에는 문자, 숫자 및 하이픈이 포함될 수 있습니다.
  • 이름은 문자 또는 숫자로 끝나야 합니다.
namespace 영숫자 문자와 대시를 허용하는 사용자 정의 문자열(예: my-sns-1) 클러스터가 배포될 감독자 네임스페이스의 이름을 식별합니다. 감독자 클러스터에 있는 감독자 네임스페이스에 대한 참조입니다.
spec 클러스터의 기술 규격에 대한 섹션 노드 toplogy 및 Kubernetes 소프트웨어 distribution을 포함하여 클러스터의 최종 상태에 대해 선언적 방식으로 표시된 규격을 포함합니다.
distribution Tanzu Kubernetes 릴리스 버전 지정에 대한 섹션 클러스터(Kubernetes 자체를 포함하여 제어부 및 작업자 노드에 설치된 Tanzu Kubernetes 클러스터 소프트웨어)에 대한 배포를 나타냅니다.
version Kubernetes 버전을 나타내는 대시가 포함된 영숫자 문자열(예: v1.20.2+vmware.1-tkg.1 또는 v1.20.2 또는 v1.20) 의미 버전 표기법을 사용하여 클러스터 노드에 설치할 Kubernetes 배포의 소프트웨어 버전을 지정합니다. 정규화된 버전을 지정하거나 버전 바로 가기를 사용할 수 있습니다. 해당 패치 버전과 일치하는 최신 이미지로 확인된 "버전: v1.20.2" 또는 일치하는 최신 패치 버전으로 확인된 "버전: v1.20"을 예로 들 수 있습니다. 확인된 버전은 생성된 후 클러스터 설명에 "fullVersion"으로 표시됩니다.
topology 클러스터 노드 토폴로지에 대한 섹션 클러스터 노드의 수, 용도 및 구성과 각 클러스터 노드에 할당된 리소스를 설명하는 필드를 포함합니다. 클러스터 노드는 해당 용도에 따라 control-plane 또는 worker 풀로 그룹화됩니다. 각 풀은 동일한 리소스 할당을 가지며 동일한 스토리지를 사용하는 동종으로 구성됩니다.
controlPlane 제어부 설정에 대한 섹션 노드 수(count), VM 유형(class), 각 노드에 할당된 스토리지 리소스(storageClass)를 포함하여 클러스터 제어부의 토폴로지를 지정합니다.
count 1 또는 3인 정수 제어부 노드의 수를 지정합니다. 제어부에는 홀수의 노드가 있어야 합니다.
class 열거된 집합(예: guaranteed-small 또는 best-effort-large)의 문자열 형식으로 된 시스템 정의 요소 풀의 각 노드에 사용될 가상 하드웨어 설정을 설명하는 VirtualMachineClass의 이름을 지정합니다. 이것은 노드(CPU 및 메모리)에 사용 가능한 하드웨어와 그러한 리소스에 대한 제한 및 요청을 제어합니다. Tanzu Kubernetes 클러스터에 대한 가상 시스템 클래스의 내용을 참조하십시오.
storageClass node-storage(예) 제어부 노드의 루트 파일 시스템을 저장하는 디스크의 스토리지에 사용될 스토리지 클래스를 식별합니다. 네임스페이스에서 kubectl describe ns를 실행하여 사용 가능한 스토리지 클래스를 봅니다. 네임스페이스에 사용 가능한 스토리지 클래스는 vSphere 관리자가 설정한 스토리지에 따라 다릅니다. 감독자 네임스페이스와 연결된 스토리지 클래스는 클러스터에 복제됩니다. 즉, 스토리지 클래스가 이 필드에 대해 유효한 값이 되려면 감독자 네임스페이스에서 사용 가능해야 합니다. vSphere 네임스페이스 구성 및 관리의 내용을 참조하십시오.
volumes
선택적 스토리지 설정
  • 볼륨:
    • 이름: string
    • 마운트 경로: /dir/path
    • 용량
      • 스토리지: GiB 크기
제어부 노드의 etcd에 대해 별도의 디스크 및 스토리지 매개 변수를 지정할 수 있습니다. 별도의 디스크 및 스토리지 매개 변수가 있는 클러스터의 예를 참조하십시오.
workers 작업자 노드 설정에 대한 섹션 노드 수(count), VM 유형(class), 각 노드에 할당된 스토리지 리소스(storageClass)를 포함하여 클러스터 작업자 노드의 토폴로지를 지정합니다.
count 0에서 150 사이의 정수(예: 1 또는 2 또는 7) 클러스터의 작업자 노드 수를 지정합니다. 작업자 노드가 없는 클러스터를 생성하여 제어부 노드만 있는 클러스터를 허용할 수 있습니다. 작업자 노드 수에 대해 규정된 최대값은 없지만 적절한 제한은 150입니다.
참고: 0개의 작업자 노드로 프로비저닝된 클러스터에는 로드 밸런서 서비스가 할당되지 않습니다.
class 열거된 집합(예: guaranteed-small 또는 best-effort-large)의 문자열 형식으로 된 시스템 정의 요소 풀의 각 노드에 사용될 가상 하드웨어 설정을 설명하는 VirtualMachineClass의 이름을 지정합니다. 이것은 노드(CPU 및 메모리)에 사용 가능한 하드웨어와 그러한 리소스에 대한 제한 및 요청을 제어합니다. Tanzu Kubernetes 클러스터에 대한 가상 시스템 클래스의 내용을 참조하십시오.
storageClass node-storage(예) 작업자 노드의 루트 파일 시스템을 저장하는 디스크의 스토리지에 사용될 스토리지 클래스를 식별합니다. 네임스페이스에서 kubectl describe ns를 실행하여 사용 가능한 스토리지 클래스를 나열합니다. 네임스페이스에 사용 가능한 스토리지 클래스는 vSphere 관리자가 설정한 스토리지에 따라 다릅니다. 감독자 네임스페이스와 연결된 스토리지 클래스는 클러스터에 복제됩니다. 즉, 스토리지 클래스가 유효하려면 감독자 네임스페이스에서 사용 가능해야 합니다. vSphere 네임스페이스 구성 및 관리의 내용을 참조하십시오.
volumes
선택적 스토리지 설정
  • 볼륨:
    • 이름: string
    • 마운트 경로: /dir/path
    • 용량
      • 스토리지: GiB 크기
작업자 노드의 컨테이너 이미지에 대해 별도의 디스크 및 스토리지 매개 변수를 지정할 수 있습니다. 별도의 디스크 및 스토리지 매개 변수가 있는 클러스터의 예를 참조하십시오.
settings 클러스터별 설정에 대한 섹션; 모든 spec.settings는 선택 사항입니다. 포드에 대한 영구 storage 및 노드 network 세부 정보를 포함하여 클러스터에 대한 선택적 런타임 구성 정보를 식별합니다.
storage 스토리지 지정에 대한 섹션 컨테이너 워크로드에 대한 PV(영구 볼륨) 스토리지 항목을 식별합니다.
classes 하나 이상의 사용자 정의 문자열의 어레이(예: ["gold", "silver"]) 컨테이너 워크로드에 대한 명명된 PV(영구 볼륨) 스토리지 클래스를 지정합니다. 감독자 네임스페이스와 연결된 스토리지 클래스는 클러스터에 복제됩니다. 즉, 스토리지 클래스는 유효한 값이 되려면 감독자 네임스페이스에서 사용 가능해야 합니다. 스토리지 클래스및 영구 볼륨에 대한 기본 클래스가 있는 클러스터의 예를 참조하십시오.
defaultClass silver(예) 클러스터에서 기본값으로 주석 처리될 명명된 스토리지 클래스를 지정합니다. 이를 지정하지 않으면 기본값이 없습니다. defaultClass를 지정하기 위해 하나 이상의 classes를 지정하지 않아도 됩니다. 일부 워크로드에는 Helm과 같은 기본 클래스가 필요할 수 있습니다. 스토리지 클래스및 영구 볼륨에 대한 기본 클래스가 있는 클러스터의 예를 참조하십시오.
network 네트워킹 설정에 대한 섹션 마커 클러스터에 대한 네트워크 관련 설정을 지정합니다.
cni CNI 지정에 대한 섹션 마커 클러스터에 대한 CNI(컨테이너 네트워킹 인터페이스) 플러그인을 식별합니다. 기본값은 Antrea이며 새 클러스터에 대해 지정할 필요가 없습니다.
name 문자열 antrea 또는 calico 사용할 CNI를 지정합니다. Antrea 및 Calico가 지원됩니다. 시스템 구성은 Antrea를 기본 CNI로 설정합니다. 기본 CNI를 변경할 수 있습니다. 기본값을 사용하는 경우에는 이 필드를 지정할 필요가 없습니다.
services Kubernetes 서비스 서브넷을 지정하기 위한 섹션 마커 Kubernetes 서비스에 대한 네트워크 설정을 식별합니다. 기본값은 10.96.0.0/12입니다.
cidrBlocks 어레이 ["198.51.100.0/12"](예) Kubernetes 서비스에 사용할 IP 주소 범위를 지정합니다. 기본값은 10.96.0.0/12입니다. 감독자 클러스터에 대해 선택한 설정과 겹치지 않아야 합니다. 이 필드는 어레이이므로 여러 범위를 허용하기는 하지만 현재는 단일 IP 범위만 허용됩니다. Tanzu Kubernetes Grid 서비스 v1alpha1 API를 사용하여 Tanzu Kubernetes 클러스터를 프로비저닝하는 예에서 네트워킹 예제를 참조하십시오.
pods Kubernetes 포드 서브넷을 지정하기 위한 섹션 마커 포드에 대한 네트워크 설정을 지정합니다. 기본값은 192.168.0.0/16입니다. 최소 블록 크기는 /24입니다.
cidrBlocks 어레이 ["192.0.2.0/16"](예) Kubernetes 포드에 사용할 IP 주소 범위를 지정합니다. 기본값은 192.168.0.0/16입니다. 감독자 클러스터에 대해 선택한 설정과 겹치지 않아야 합니다. 포드 서브넷 크기는 /24보다 크거나 같아야 합니다. 이 필드는 어레이이므로 여러 범위를 허용하기는 하지만 현재는 단일 IP 범위만 허용됩니다. Tanzu Kubernetes Grid 서비스 v1alpha1 API를 사용하여 Tanzu Kubernetes 클러스터를 프로비저닝하는 예에서 네트워킹 예제를 참조하십시오.
serviceDomain "cluster.local" 클러스터에 대한 서비스 도메인을 지정합니다. 기본값은 cluster.local입니다.
proxy 클러스터에 대한 HTTP(s) 프록시 구성을 지정하는 섹션. 구현된 경우 모든 필드가 필요합니다. 지정된 프록시 설정에 대한 필드를 제공합니다. 글로벌 프록시가 구성되고 개별 클러스터 프록시가 구성되지 않은 경우 자동으로 채워집니다. 프록시 서버가 있는 클러스터의 예를 참조하십시오.
httpProxy http://<user>:<pwd>@<ip>:<port> 클러스터 외부에서 HTTP 연결을 생성하는 데 사용할 프록시 URL을 지정합니다.
httpsProxy http://<user>:<pwd>@<ip>:<port> 클러스터 외부에서 HTTPS 연결을 생성하는 데 사용할 프록시 URL을 지정합니다.
noProxy

프록시를 사용하지 않을 CIDR 블록의 어레이입니다(예: [10.246.0.0/16,192.168.144.0/20,192.168.128.0/20]).

감독자 클러스터의 워크로드 네트워크에서 필요한 값을 가져옵니다(예: Pod CIDRs, Ingress CIDRsEgress CIDRs).

noProxy 어레이 필드에 포함할 값은 아래 이미지를 참조하십시오.

포드, 수신 및 송신을 위해 감독자 클러스터의 워크로드 네트워크에서 사용하는 서브넷에는 프록시를 사용하지 말아야 합니다.

감독자 클러스터의 서비스 CIDR을 noProxy 필드에 포함할 필요가 없습니다. Tanzu Kubernetes 클러스터는 그러한 서비스와 상호 작용하지 않습니다.

끝점 localhost127.0.0.1은 자동으로 프록시로 사용되지 않습니다. noProxy 필드에 추가할 필요가 없습니다.

Tanzu Kubernetes 클러스터의 포드 및 서비스 CIDR은 자동으로 프록시로 사용되지 않습니다. noProxy 필드에 추가할 필요가 없습니다.

프록시 서버가 있는 클러스터의 예를 참조하십시오.

trust trust 매개 변수의 섹션 마커입니다. 데이터를 허용하지 않습니다.
additionalTrustedCAs 각각 namedata가 있는 인증서 어레이를 허용합니다. 데이터를 허용하지 않습니다.
name 문자열 TLS 인증서의 이름입니다.
data 문자열 PEM으로 인코딩된 공용 인증서의 base64로 인코딩된 문자열입니다.

이미지에 표시된 대로 감독자 클러스터워크로드 네트워크에서 필요한 noProxy 값을 가져옵니다.

포드 CIDR, 수신 CIDR 및 송신 CIDR 값이 강조 표시된 [워크로드 네트워크] 창입니다.