Cluster v1beta1 API를 사용하면 기본 ClusterClass 정의를 기반으로 클러스터를 프로비저닝할 수 있습니다.
ClusterClass API v1beta1
Kubernetes Cluster API는 Kubernetes 클러스터의 선언적 프로비저닝, 업그레이드 및 운영을 제공하는 도구 모음입니다. ClusterClass는 Cluster API가 발전된 것이며 이를 통해 클러스터 집합의 수명 주기를 관리하기 위한 템플릿을 정의할 수 있습니다. TKG 서비스는 v1beta1 API를 사용하여 ClusterClass를 지원합니다.
TKG 서비스에는 tanzukubernetescluster
라는 기본 ClusterClass 정의가 함께 제공됩니다. tanzukubernetescluster
ClusterClass는 v1beta API를 사용하여 클러스터 생성을 위한 템플릿을 제공합니다. tanzukubernetescluster
ClusterClass는 모든 사용자 네임스페이스에서 사용할 수 있습니다. 이 ClusterClass를 기반으로 클러스터를 생성하려면 클러스터 규격에서 참조하십시오. 지침은 v1beta 예시를 참조하십시오.
기본 ClusterClass tanzukubernetescluster
기본 tanzukubernetescluster
ClusterClass는 변경할 수 없습니다. TKG 서비스의 각 릴리스에서 업데이트될 수 있습니다.
TKG 서비스 인스턴스와 함께 제공되는 기본 tanzukubernetescluster
ClusterClass를 보려면 다음 단계를 완료합니다.
- 감독자에 로그인합니다.
kubectl vsphere login --server=IP-or-FQDN --vsphere-username [email protected]
- 컨텍스트를 TKGS 클러스터가 프로비저닝된 vSphere 네임스페이스로 전환합니다.
kubeclt config use-context VSPEHRE-NS
- 기본
tanzukubernetescluster
ClusterClass를 가져옵니다.kubectl get clusterclass tanzukubernetescluster -o yaml
- 필요한 경우 기본 ClusterClass의 출력을 이름이 tkc-dcc.yaml인 파일에 쓸 수 있습니다.
kubectl get clusterclass tanzukubernetescluster -o yaml > tkc-dcc.yaml
클러스터 사용자 지정을 위한 ClusterClass 변수
변수를 사용하여 tanzukubernetescluster
ClusterClass를 기반으로 클러스터를 사용자 지정합니다. 변수는 이름-값 쌍을 사용하여 정의됩니다. 구문은 openAPIV3Schema를 준수해야 합니다.
- VM 클래스
- 스토리지 클래스
- 프록시
- TLS 인증서
- SSH 키
다음 섹션은 기본 tanzukubernetescluster
ClusterClass에서 사용할 수 있는 모든 변수의 목록입니다.
key-name
), 밑줄(예:
KEY_NAME
) 또는 점(예:
key.name
)으로만 구성되어야 합니다. 키 이름에는 공백을 사용할 수 없습니다.
clusterEncryptionConfigYaml
clusterEncryptionConfigYaml
변수를 사용하여 클러스터 암호화를 구성합니다.
- clusterEncryptionConfigYaml
- 암호화 구성 세부 정보를 제공하는 YAML 파일인 문자열입니다.
controlPlaneCertificateRotation
controlPlaneCertificateRotation
변수를 사용하여 TLS 인증서가 만료되기 전에 이러한 인증서의 롤아웃을 트리거하여 제어부 노드에 대한 TLS 인증서를 순환하도록 시스템을 구성합니다. 모든 새 제어부 노드와 기존 제어부 노드에 대해 제어부 인증서 순환이 가능합니다.
- controlPlaneCertificateRotation
-
기능 활성화를 위한 부울 및 인증서 순환을 위한 만료 전 일 수입니다. 자세한 내용은
Kubeadm 제어부 제공자를 사용하여 자동으로 인증서 순환을 참조하십시오.
... variables: - name: controlPlaneCertificateRotation value: activate: true daysBefore: 90
controlPlaneVolumes
controlPlaneVolumes
변수를 사용하여 제어부 노드에 대한 영구 볼륨을 구성합니다.
- controlPlaneVolumes
-
개체의 선택적 어레이이며, 여기에는
name
,storageClass
및mountPath
(각각 문자열임)와storage
문자열을 포함하는 선택적capacity
개체가 포함됩니다.... variables: #controlPlaneVolumes is an optional set of PVCs to create and #attach to each node - name: controlPlaneVolumes value: #name of the PVC to be used as the suffix (node.name) - name: NAME #mountPath is the directory where the volume device is mounted #takes the form /dir/path mountPath: /dir/path #storageClass is the storage class to use for the PVC storageClass: tkgs-storage-profile #capacity is the PVC storage capacity capacity: #storage sets the capacity for the disk volume #if not specified defaults to storageClass capacity storage: 4Gi
defaultRegistrySecret
defaultRegistrySecret
변수는 클러스터에 대한 기본 컨테이너 레지스트리를 구성합니다.
- defaultRegistrySecret
- 기본 컨테이너 레지스트리에 대한 공용 키, 인증서 이름 및 네임스페이스가 포함된 개체입니다.
defaultStorageClass
defaultStorageClass
변수를 사용하여 클러스터에 대한 기본 스토리지 클래스를 구성합니다.
- defaultStorageClass
-
기본 스토리지 클래스로 사용할 스토리지 클래스를 식별하는 문자열이며 Helm 차트 및 Tanzu 패키지와 같은 특정 애플리케이션에서 종종 필요합니다.
... variables: - name: defaultStorageClass value: tkg2-storage-profile
extensionCert
extensionCert
변수를 사용하여 TLS 인증서를 구성합니다.
- extensionCert
-
name
및key
문자열을 포함하는contentSecret
개체를 포함하는 개체입니다.contentSecret
은 TLS 인증서에 대해 생성된 Kubernetes 암호 개체를 참조합니다.... variables: #extensionCert specifies the cert and key for Extensions Controller #self-signed issuer and certificates must be created in advance - name: extensionCert value: contentSecret: #name specifies the name of secret name: string #key specifies the content of tls\.crt in the secret's data map key: string
kubeAPIServerFQDNs
kubeAPIServerFQDNs
변수를 사용하여 FQDN으로 클러스터를 구성합니다.
nodePoolLabels
nodePoolLabels
변수를 사용하여 작업자 노드에 대한 레이블을 구성합니다.
- nodePoolLabels
- 하나 이상의 개체 어레이이며, 각 개체에는 키/값(둘 다 문자열) 쌍이 포함됩니다.
nodePoolTaints
nodePoolTaints
변수를 사용하여 작업자 노드에 taint를 적용합니다.
- nodePoolTaints
- 개체 어레이이며, 각 개체에는 작업자 노드에 적용되는 taint가 포함됩니다.
nodePoolVolumes
nodePoolVolumes
변수를 사용하여 클러스터 노드에 대한 영구 볼륨을 지정합니다.
- nodePoolVolumes
-
개체의 선택적 어레이이며, 여기에는
name
,storageClass
및mountPath
(각각 문자열임)와storage
문자열을 포함하는 선택적capacity
개체가 포함됩니다.... variables: #nodePoolVolumes is an optional set of PVCs to create and #attach to each node; use for high-churn components like containerd - name: nodePoolVolumes value: | #name of the PVC to be used as the suffix (node.name) - name: etcd #mountPath is the directory where the volume device is mounted #takes the form /dir/path mountPath: /var/lib/containerd #storageClass is the storage class to use for the PVC storageClass: tkgs-storage-profile #capacity is the PVC storage capacity capacity: #storage sets the capacity for the disk volume #if not specified defaults to storageClass capacity storage: 4Gi
ntp
ntp
변수를 사용하여 클러스터에 대한 NTP 서버를 구성합니다.
- ntp
- NTP 서버의 FQDN 또는 IP 주소인 문자열입니다.
podSecurityStandard
podSecurityStandard
변수를 사용합니다.
- podSecurityStandard
-
TKr v1.26 이상에서는 기본적으로 포드 보안(PSA) 제한이 주석 레이블을 사용하여 네임스페이스 수준에서 적용됩니다. TKR 1.25 이상에 대한 PSA 구성의 내용을 참조하십시오.
또는 v1beta1 클러스터를 프로비저닝하거나 업데이트할 때
podSecurityStandard
변수를 사용하여 클러스터 전체 PSA를 구성할 수 있습니다.podSecurityStandard
변수는 다음과 같이 구현할 수 있습니다.... variables: - name: podSecurityStandard value: deactivated: DEACTIVATED audit: AUDIT-PROFILE enforce: ENFORCE-PROFILE warn: WARN-PROFILE auditVersion: AUDIT-VERSION enforceVersion: ENFORCE-VERSION warnVersion: WARN-VERSION exemptions: namespaces: [EXEMPT-NS]
형식 설명:- 클러스터 전체 PSA를 적용하려면 DEACTIVATED 값이
false
(기본값)이고 그렇지 않으면true
입니다. - *-PROFILE 값은 각 모드에 대한 PSA 프로파일이며,
"privileged"
,"baseline"
또는"restricted"
(기본값)일 수 있습니다. - *-VERSION 값은 각 모드의 Kubernetes 버전(예:
"v1.26"
)입니다."latest"
값이 기본값입니다. - EXEMPT-NS 값은 PSA 제어에서 제외할 네임스페이스의 쉼표로 구분된 목록입니다.
참고: kube-system, tkg-system 및 vmware-system-cloud-provider를 포함한 시스템 네임스페이스는 포드 보안에서 제외됩니다.podSecurityStandard
변수를 구현하지 않으면 기본 PSA 동작이 유지됩니다. 클러스터 규격에podSecurityStandard
변수를 포함하면 재정의하지 않는 한 변수 설정이 기본값을 포함하여 제어됩니다.다음 예에서는 기본값을 보여줍니다.... variables: - name: podSecurityStandard value: enforce: "restricted" enforce-version: "latest"
다음 예에서는 현재 포드 강화 모범 사례를 따르지 않지만 알려진 권한 에스컬레이션을 방지하는 최소한의 제한 정책("baseline")만 적용하는 워크로드를 식별하기 위한 감사 로그 및 주의를 제공합니다.... variables: - name: podSecurityStandard value: audit: "restricted" warn: "restricted" enforce: "baseline"
다음 예에서는 특정 네임스페이스를 제외하고 제한된 정책을 적용합니다.... variables: - name: podSecurityStandard value: audit: "restricted" warn: "restricted" enforce: "restricted" exemptions: namesaces: ["privileged-workload-ns"]
다음 예에서는 적용을 특정 TKr 버전으로 제한합니다.... variables: - name: podSecurityStandard value: audit-version: "v1.26" warn-version: "v1.26" enforce-version: "v1.26"
더 많은 예를 보려면 Kubernetes 설명서에서 포드 보안 표준을 참조하십시오.
- 클러스터 전체 PSA를 적용하려면 DEACTIVATED 값이
proxy
proxy
변수를 사용하여 클러스터에 대한 프록시 서버를 구성합니다.
- proxy
- 아웃바운드 클러스터 연결을 위해 프록시 서버를 참조하는 매개 변수가 있는 개체입니다.
storageClass
storageClass
변수를 사용하여 클러스터에 대한 스토리지 클래스를 구성합니다.
- storageClass
-
TKG 클러스터가 프로비저닝된
vSphere 네임스페이스에 할당된 vSphere 스토리지 프로파일의 이름인 문자열입니다.
... variables: - name: storageClass value: tkgs-storage-profile
storageClasses
storageClasses
변수를 사용하여 클러스터에 대한 스토리지 클래스 어레이를 구성합니다.
- storageClasses
-
하나 이상의 문자열 어레이이며,각 문자열은 TKG 클러스터가 프로비저닝된
vSphere 네임스페이스에 할당된 vSphere 스토리지 프로파일의 이름입니다.
... variables: - name: storageClasses value: [tkg2-storage-profile, tkg2-storage-profile-latebinding]
TKR_DATA
TKR_DATA
변수를 사용하여 TKR 정보를 지정합니다.
- TKR_DATA
- TKR 버전 및 기타 세부 정보를 지정하는 데 사용하는 개체입니다.
trust
trust
변수를 사용하여 클러스터에 대해 하나 이상의 신뢰할 수 있는 CA 인증서를 지정합니다.
- trust
- 클러스터에 TLS 인증서(추가 CA 또는 최종 인증서)를 추가하기 위한 개체입니다.
user
user
변수를 사용하여 클러스터 사용자 자격 증명을 지정합니다.
- user
- 이름 및 키 문자열과 sshAuthorizedKey 문자열이 있는 passwordSecret 개체를 포함하는 개체입니다. 이 변수를 사용하여 원격 SSH 액세스를 위해 사용자의 SSH 키를 클러스터 노드에 추가할 수 있습니다.
vmClass
vmClass
변수를 사용하여 클러스터 노드에 대한 VM 클래스를 구성합니다.
- vmClass
- TKG 클러스터가 프로비저닝된 vSphere 네임스페이스에 바인딩된 VM 클래스의 이름에 매핑되는 필수 문자열입니다.