CNI(Container Network Interface), 프록시 서버 및 TLS 인증서를 포함한 v1alpha3 API를 사용하여 프로비저닝된 TKG 클러스터에 대해 TKG 서비스 구성을 사용자 지정할 수 있습니다.
TkgServiceConfiguration 사용자 지정 정보
TkgServiceConfiguration을 편집하여 Tanzu Kubernetes 클러스터에 대한 글로벌 설정을 구성할 수 있습니다. 이 구성을 통해 기본 CNI를 설정하고, 글로벌 프록시 서버를 추가하고, 하나 이상의 신뢰할 수 있는 TLS 인증서를 추가할 수 있습니다.
TkgServiceConfiguration
개체를 변경하면 해당 서비스에서 프로비저닝된 모든 TKG 클러스터에 적용됩니다. 롤링 업데이트가 시작되면(수동으로 또는 업그레이드를 통해) 변경된 서비스 규격에 따라 클러스터가 업데이트됩니다.
TkgServiceConfiguration 규격
TkgServiceConfiguration
규격은
Tanzu Kubernetes Grid 인스턴스 구성을 위한 필드를 제공합니다.
key-name
), 밑줄(예:
KEY_NAME
) 또는 점(예:
key.name
)으로만 구성되어야 합니다. 키 이름에는 공백을 사용할 수 없습니다.
apiVersion: run.tanzu.vmware.com/v1alpha3 kind: TkgServiceConfiguration metadata: name: tkg-service-configuration-spec spec: defaultCNI: string proxy: httpProxy: string httpsProxy: string noProxy: [string] trust: additionalTrustedCAs: - name: string data: string defaultNodeDrainTimeout: time
주석이 달린 TkgServiceConfiguration 규격
TkgServiceConfiguration
규격 매개 변수에 대해 구성 가능한 필드를 나열하고 설명합니다.
apiVersion: run.tanzu.vmware.com/v1alpha3 kind: TkgServiceConfiguration #valid config key must consist of alphanumeric characters, '-', '_' or '.' metadata: name: tkg-service-configuration-spec spec: #defaultCNI is the default CNI for all Tanzu Kubernetes #clusters to use unless overridden on a per-cluster basis #supported values are antrea, calico, antrea-nsx-routed #defaults to antrea defaultCNI: string #proxy configures a proxy server to be used inside all #clusters provisioned by this TKGS instance #if implemented all fields are required #if omitted no proxy is configured proxy: #httpProxy is the proxy URI for HTTP connections #to endpionts outside the clusters #takes the form http://<user>:<pwd>@<ip>:<port> httpProxy: string #httpsProxy is the proxy URI for HTTPS connections #to endpoints outside the clusters #takes the frorm http://<user>:<pwd>@<ip>:<port> httpsProxy: string #noProxy is the list of destination domain names, domains, #IP addresses, and other network CIDRs to exclude from proxying #must include from Workload Network: [Namespace Netowrk, Ingress, Egress] noProxy: [string] #trust configures additional trusted certificates #for the clusters provisioned by this TKGS instance #if omitted no additional certificate is configured trust: #additionalTrustedCAs are additional trusted certificates #can be additional CAs or end certificates additionalTrustedCAs: #name is the name of the additional trusted certificate #must match the name used in the filename - name: string #data holds the contents of the additional trusted cert #PEM Public Certificate data encoded as a base64 string data: string #defaultNodeDrainTimeout is the total amount of time the #controller spends draining a node; default is undefined #which is the value of 0, meaning the node is drained #without any time limitations; note that `nodeDrainTimeout` #is different from `kubectl drain --timeout` defaultNodeDrainTimeout: time
TkgServiceConfiguration
에 글로벌 프록시가 구성된 경우 이 프록시 정보는 클러스터의 초기 배포 후 클러스터 매니페스트로 전파됩니다. 글로벌 프록시 구성은 클러스터를 생성할 때 프록시 구성 필드가 없는 경우에만 클러스터 매니페스트에 추가됩니다. 다시 말해, 클러스터별 구성이 우선하며 글로벌 프록시 구성을 덮어씁니다.
TkgServiceConfiguration 규격 예시
다음 YAML은 각 TkgServiceConfiguration
규격 매개 변수에 대해 구성 가능한 필드를 나열하고 설명합니다.
apiVersion: run.tanzu.vmware.com/v1alpha3 kind: TkgServiceConfiguration metadata: name: tkgserviceconfiguration_example spec: defaultCNI: calico proxy: #supported format is `http://<user>:<pwd>@<ip>:<port>` httpProxy: http://admin:[email protected]:80 httpsProxy: http://admin:[email protected]:80 #noProxy vaulues are from Workload Network: [Namespace Network, Ingress, Egress] noProxy: [10.246.0.0/16,192.168.144.0/20,192.168.128.0/20] trust: additionalTrustedCAs: #name is the name of the public cert - name: CompanyInternalCA-1 #data is base64-encoded string of a PEM encoded public cert data: LS0tLS1C...LS0tCg== #where "..." is the middle section of the long base64 string - name: CompanyInternalCA-2 data: MTLtMT1C...MT0tPg== defaultNodeDrainTimeout: 0
TkgServiceConfiguration 편집
- Kubectl 편집을 구성합니다. Kubectl용 텍스트 편집기 구성의 내용을 참조하십시오.
- 감독자로 인증합니다.
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- 컨텍스트를 대상 vSphere 네임스페이스로 전환합니다.
kubectl config use-context vSphere-Namespace
- TkgServiceConfiguration 규격을 가져옵니다.
kubectl get tkgserviceconfigurations
- TkgServiceConfiguration 규격을 편집하기 위해 로드합니다.
kubectl edit tkgserviceconfigurations tkg-service-configuration
KUBE_EDITOR 또는 EDITOR 환경 변수로 정의된 기본 텍스트 편집기에서
tkg-service-configuration
규격이 열립니다. - 요구 사항에 따라 TkgServiceConfiguration을 편집합니다.
- 변경 내용을 적용하려면 텍스트 편집기에서 파일을 저장합니다. 취소하려면 저장하지 않고 편집기를 닫습니다.
텍스트 편집기에서 변경 내용을 저장하면 kubectl은
tkg-service-configuration
서비스 규격을 업데이트합니다. - TkgServiceConfiguration 규격이 업데이트되었는지 확인합니다.
kubectl get tkgserviceconfigurations
글로벌 구성 변경을 기존 클러스터에 전파
TkgServiceConfiguration
의 글로벌 수준에서 지정한 설정은 기존 클러스터에 자동으로 전파되지 않을 수 있습니다. 예를 들어 TkgServiceConfiguration
에서 proxy
또는 trust
설정을 변경하는 경우 이미 프로비저닝된 클러스터에는 이러한 변경 사항이 영향을 주지 않을 수 있습니다.
기존 클러스터에 글로벌 변경 내용을 수동으로 전파하려면 Tanzu Kubernetes 클러스터에 패치를 적용하여 TkgServiceConfiguration
에 대한 변경 내용을 클러스터가 상속하도록 해야 합니다.
kubectl patch tkc <CLUSTER_NAME> -n <NAMESPACE> --type merge -p "{\"spec\":{\"settings\":{\"network\":{\"proxy\": null}}}}"
kubectl patch tkc <CLUSTER_NAME> -n <NAMESPACE> --type merge -p "{\"spec\":{\"settings\":{\"network\":{\"trust\": null}}}}"