CNI(Container Network Interface), 프록시 서버 및 TLS 인증서를 포함한 v1alpha3 API를 사용하여 프로비저닝된 TKG 클러스터에 대해 TKG 서비스 구성을 사용자 지정할 수 있습니다.

TkgServiceConfiguration 사용자 지정 정보

TkgServiceConfiguration을 편집하여 Tanzu Kubernetes 클러스터에 대한 글로벌 설정을 구성할 수 있습니다. 이 구성을 통해 기본 CNI를 설정하고, 글로벌 프록시 서버를 추가하고, 하나 이상의 신뢰할 수 있는 TLS 인증서를 추가할 수 있습니다.

경고: TkgServiceConfiguration 사용자 지정은 글로벌 작업입니다. TkgServiceConfiguration 개체를 변경하면 해당 서비스에서 프로비저닝된 모든 TKG 클러스터에 적용됩니다. 롤링 업데이트가 시작되면(수동으로 또는 업그레이드를 통해) 변경된 서비스 규격에 따라 클러스터가 업데이트됩니다.
참고: TkgServiceConfiguration 사용자 지정은 v1alpha3 API로 프로비저닝된 Tanzu Kubernetes 클러스터에 적용됩니다. v1beta1 API로 프로비저닝된 클러스터에는 적용되지 않습니다.

TkgServiceConfiguration 규격

TkgServiceConfiguration 규격은 Tanzu Kubernetes Grid 인스턴스 구성을 위한 필드를 제공합니다.
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 규격

다음 YAML은 각 TkgServiceConfiguration 규격 매개 변수에 대해 구성 가능한 필드를 나열하고 설명합니다.
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: TkgServiceConfiguration
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
그림 1. 필수 noProxy 값
필수 noProxy 값
참고: 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:PaSsWoRd@10.66.100.22:80
    httpsProxy: http://admin:PaSsWoRd@10.66.100.22: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 편집

TkgServiceConfiguration 규격을 편집하려면 다음 절차를 참조하십시오.
  1. Kubectl 편집을 구성합니다. Kubectl용 텍스트 편집기 구성의 내용을 참조하십시오.
  2. 감독자로 인증합니다.
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  3. 컨텍스트를 대상 vSphere 네임스페이스로 전환합니다.
    kubectl config use-context vSphere-Namespace
  4. TkgServiceConfiguration 규격을 가져옵니다.
    kubectl get tkgserviceconfigurations
  5. TkgServiceConfiguration 규격을 편집하기 위해 로드합니다.
    kubectl edit tkgserviceconfigurations tkg-service-configuration

    KUBE_EDITOR 또는 EDITOR 환경 변수로 정의된 기본 텍스트 편집기에서 tkg-service-configuration 규격이 열립니다.

  6. 요구 사항에 따라 TkgServiceConfiguration을 편집합니다.
  7. 변경 내용을 적용하려면 텍스트 편집기에서 파일을 저장합니다. 취소하려면 저장하지 않고 편집기를 닫습니다.

    텍스트 편집기에서 변경 내용을 저장하면 kubectltkg-service-configuration 서비스 규격을 업데이트합니다.

  8. 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}}}}"