자동 관리 패키지 구성 보기 및 업데이트

이 항목에서는 tanzu-core 저장소에서 설치된 자동 관리 패키지의 구성을 보고, 사용자 지정하고, 문제를 해결하는 방법을 설명합니다. 또한 사용자 지정할 수 있는 Antrea, Pinniped, Calico, vSphere CPI, vSphere CSI 구성 설정도 나열합니다.

패키지 구성 보기

tanzu-core 저장소에 있는 자동 관리 패키지에는 Antrea 또는 Calico 컨테이너 네트워크 인터페이스 및 Pinniped 인증 구성 요소와 같은 기본 클러스터 기능을 지원하는 구성 요소가 포함되어 있습니다. 경우에 따라 내부 Tanzu Kubernetes Grid 및 Kubernetes 리소스는 이러한 구성 요소를 addons로 참조합니다.

자동 관리 패키지의 구성과 포함된 추가 기능 구성 요소를 보려면 다음을 수행할 수 있습니다.

  • 관리 클러스터에 대해 kubectl get secret CLUSTER-NAME-PACKAGE-NAME-addon -n CLUSTER-NAMESPACE 명령을 실행하여 설치된 추가 기능 구성 요소에 대한 Kubernetes 암호를 검색합니다. 여기서:

    • CLUSTER-NAME은 대상 클러스터의 이름입니다. 워크로드 클러스터에 설치된 추가 기능 구성 요소에 대한 암호를 검색하려는 경우 CLUSTER-NAME은 워크로드 클러스터의 이름입니다.
    • PACKAGE-NAME은 패키지의 이름입니다.
    • CLUSTER-NAMESPACE은 대상 클러스터의 네임스페이스입니다.
  • projects.registry.vmware.com/tkg/packages/core에서 패키지 구성 파일을 다운로드합니다.

예를 들어 Antrea의 구성을 보려면 다음을 수행합니다.

  • 관리 클러스터에 대해 다음 명령을 실행하여 Antrea 암호를 검색합니다.

    kubectl get secret CLUSTER-NAME-antrea-addon -n CLUSTER-NAMESPACE
    
  • Antrea 패키지 구성 파일을 다운로드합니다.

    1. 클러스터를 생성하는 데 사용한 TKr(Tanzu Kubernetes 릴리스)에서 antrea 버전 태그를 찾습니다. 관리 클러스터에 대해 kubectl get tkr 명령을 실행하여 TKr을 검색할 수 있습니다.

      1. kubectl get clusters CLUSTER-NAME -n CLUSTER-NAMESPACE --show-labels를 실행합니다.

      2. 출력에서 tanzuKubernetesRelease 값을 찾습니다. 예: tanzuKubernetesRelease=v1.23.10---vmware.1-tkg.1.

      3. kubectl get tkr TKR-VERSION을 실행합니다. 여기서 TKR-VERSION은 위에서 검색한 값입니다. 예:

        kubectl get tkr v1.23.10---vmware.1-tkg.1 -o yaml
        
      4. 출력에서 packages/core/antrea 아래에 버전 태그를 찾습니다.

        또는 ~/.config/tanzu/tkg/bom/YOUR-TKR-BOM-FILE에서 TKr을 검토하여 버전 태그를 찾을 수 있습니다.

    2. 패키지 구성 파일을 다운로드합니다. 예:

      imgpkg pull -b projects.registry.vmware.com/tkg/packages/core/antrea:v1.2.3_vmware.4-tkg.1-advanced -o antrea
      
    3. antrea로 이동하여 파일을 검토합니다.

Antrea 컨테이너 네트워킹 기능에 대한 자세한 내용은 antrea 1.4.0 릴리스 정보 VMware Container Networking을 참조하십시오. Antrea 컨테이너 클러스터를 VMware NSX 통합하는 방법에 대한 자세한 내용은 Antrea 컨테이너 클러스터의 통합을 참조하십시오.

패키지 구성 사용자 지정

자동 관리 패키지는 Tanzu Kubernetes Grid 의해 관리되기 때문에 일반적으로 워크로드 클러스터에서 자동 관리 패키지의 구성을 사용자 지정할 필요가 없습니다.

하지만 필요한 경우 이러한 설정을 사용자 지정할 수 있습니다. 자동 관리 패키지 설정을 사용자 지정하는 방법은 클러스터 유형에 따라 다릅니다.

계획 또는 TKC 기반 클러스터의 경우 구성 요소 암호의 values.yaml 섹션을 수정하고 패치를 적용하여 values.yaml 설정 사용자 지정에 설명된 대로 기존 클러스터를 개별적으로 사용자 지정할 수 있습니다.

계획 또는 TKC 기반 클러스터의 경우 오버레이로 사용자 지정에 설명한 대로 클러스터를 생성하기 전에 관리 클러스터의 패키지 구성 암호에 오버레이를 추가하여 클러스터를 사용자 지정할 수 있습니다.

클래스 기반 클러스터의 경우 클래스 기반 클러스터 생성에 설명된 2단계 프로세스의 1단계에서와 같이 클러스터 매니페스트를 생성한 다음, 2단계에서 클러스터를 생성하기 전에 매니페스트에 사용자 지정 개체 정의를 추가하여 클러스터를 생성하기 전에 클러스터를 사용자 지정할 수 있습니다. 예를 들어 클래스 기반 매니페스트 사용자 지정을 참조하십시오.

자동 관리 패키지 values.yaml 설정

자동 관리 패키지에서 다음 구성 설정을 사용자 지정할 수 있습니다. 이러한 값은 패키지 구성 요소 암호의 values.yaml 섹션에 설정됩니다.

패키지 설정 설명
Antrea antrea.config.defaultMTU 기본적으로 null로 설정됩니다.
Antrea antrea.config.tlsCipherSuites 기본적으로 FIPS 지원 암호 그룹을 포함합니다. 다른 암호 그룹으로 전환하려면 tlsCipherSuites 필드의 값을 업데이트합니다.
Calico calico.config.vethMTU 기본값은 “0”이며, Calico가 MTU(최대 전송 크기) 설정을 자동으로 감지하도록 합니다. 이 매개 변수를 설정하여 문자열로 최대 패킷 크기(바이트)를 지정합니다.
Calico calico.config.skipCNIBinaries 기본값은 클러스터 생성 중에 Calico가 기존 CNI 플러그인의 설정을 덮어쓰지 못하도록 제한하는 true입니다. 클러스터를 업그레이드할 때 덮어쓰기를 방지하려면 calico.config.skipCNIBinaries=true를 설정합니다.
Pinniped pinniped.supervisor_svc_external_dns OIDC IDP 클라이언트에서 콜백 URL로 사용되는 Pinniped Supervisor와 연결된 FQDN입니다. Pinniped의 서비스 유형에 따라 포트 번호를 포함해야 할 수도 있습니다.
  • LoadBalancer의 경우, NSX가 있는 vSphere, AWS 또는 Azure에서 vSphere 포트 번호는 포함하지 마십시오. https://hr.tkg.example.com.
  • NodePort의 경우 NSX ALB가 없는 vSphere 포트 번호를 포함합니다. https://hr.tkg.example.com:31234.
Pinniped pinniped.upstream_oidc_client_id OIDC 제공자의 클라이언트 ID입니다.
Pinniped pinniped.upstream_oidc_client_secret OIDC 제공자의 클라이언트 암호입니다.
Pinniped pinniped.upstream_oidc_issuer_url OIDC 제공자의 URL입니다.
Pinniped pinniped.upstream_oidc_tls_ca_data OIDC 제공자에 대한 TLS 연결을 확인하는 데 사용되는 base64로 인코딩된 CA 번들 데이터입니다.
Pinniped pinniped.upstream_oidc_additional_scopes 토큰 응답에서 요청할 추가 범위의 목록입니다.
Pinniped pinniped.upstream_oidc_claims OIDC 클레임 매핑입니다.
Pinniped dex.config.ldap.host* LDAP 서버의 IP 또는 DNS 주소입니다. 기본 포트 636을 다른 포트로 변경하려면 “host:port”를 지정합니다.
Pinniped dex.config.ldap.bindDN*dex.config.ldap.BIND_PW_ENV_VAR* 애플리케이션 서비스 계정의 DN과 암호입니다.
Pinniped dex.config.ldap.userSearch* 사용자의 속성을 검색합니다. 스키마는 Dex 설명서를 참조하십시오.
Pinniped dex.config.ldap.groupSearch* 그룹의 속성을 검색합니다. 스키마는 Dex 설명서를 참조하십시오.
vSphere CSI vsphereCSI.provisionTimeout 기본적으로 300s로 설정됩니다.
vSphere CSI vsphereCSI.attachTimeout 기본적으로 300s로 설정됩니다.
vSphere CSI vsphereCSI.netPermissions 기본적으로 null로 설정됩니다.

* dex.로 시작하는 Pinniped 설정을 업데이트할 경우 관리 클러스터 배포 후 Dex 설정 업데이트를 참조하십시오.

values.yaml 설정 사용자 지정

이미 실행 중인 계획 또는 TKC 기반 클러스터에서 추가 기능 구성 요소 암호의 values.yaml 섹션을 사용자 지정하려면 다음을 수행합니다.

  1. 관리 클러스터에 대해 kubectl get secret CLUSTER-NAME-PACKAGE-NAME-addon -n CLUSTER-NAMESPACE 명령을 실행하여 암호를 검색합니다. 예:

    kubectl get secret example-workload-cluster-antrea-addon -n example-workload-cluster-namespace -o jsonpath="{.data.values\.yaml}" | base64 -d > values.yaml
    
  2. values.yaml 섹션을 업데이트합니다. 위 표에 나열된 값을 업데이트할 수 있습니다.

  3. 편집된 values.yaml 파일을 클러스터 암호로 교체하여 base64로 업데이트를 적용합니다. 이 명령은 환경 OS에 따라 다릅니다. 예:

    Linux:

    kubectl patch secret/example-workload-cluster-antrea-addon -n example-workload-cluster-namespace -p "{\"data\":{\"values.yaml\":\"$(base64 -w 0 < values.yaml)\"}}" --type=merge
    

    macOS:

    kubectl patch secret/example-workload-cluster-antrea-addon -n example-workload-cluster-namespace -p "{\"data\":{\"values.yaml\":\"$(base64 < values.yaml)\"}}" --type=merge
    
  4. 암호를 업데이트한 후 kubectl get packageinstall 명령을 실행하여 패키지 상태를 확인합니다. 예:

    $ kubectl get packageinstall antrea -n tkg-system
    NAMESPACE    NAME                   PACKAGE NAME                      PACKAGE VERSION                 DESCRIPTION                  AGE
    tkg-system   antrea                 antrea.tanzu.vmware.com           0.13.3+vmware.1-tkg.1           Reconcile succeeded          7d14h
    

    반환된 상태가 Reconcile failed이면 다음 명령을 실행하여 실패 세부 정보를 가져옵니다.

    kubectl get packageinstall antrea -n tkg-system -o yaml
    
  5. kubectl get app 명령을 실행합니다. 예:

    $ kubectl get app antrea -n tkg-system
    NAME           DESCRIPTION             SINCE-DEPLOY    AGE
    antrea         Reconcile succeeded     3m23s           7h50m
    

    반환된 상태가 Reconcile failed이면 다음 명령을 실행하여 실패 세부 정보를 가져옵니다.

    kubectl get app antrea -n tkg-system -o yaml
    

아래 예에서는 Antrea에 대한 기본 MTU(최대 전송 단위)를 업데이트합니다.

stringData:
  values.yaml: |
    #@data/values
    #@overlay/match-child-defaults missing_ok=True
    ---
    infraProvider: vsphere
    antrea:
      config:
        defaultMTU: 8900
참고

클러스터의 모든 노드에 대해 동일한 MTU 설정을 구성해야 합니다. 방화벽 설정은 구성된 MTU 크기의 패킷을 허용해야 합니다. 클러스터의 노드에서 다른 MTU 설정으로 인해 발생하는 문제를 해결하려면 일치하지 않는 MTU로 인해 NotReady 상태의 클러스터 Worker 노드를 참조하십시오.

오버레이를 사용하여 사용자 지정

경우에 따라 추가 기능 구성 요소 암호에 오버레이를 추가하여 계획 또는 TKC 기반 클러스터가 생성되기 전에 자동 관리 패키지 구성을 사용자 지정할 수 있습니다.

아래 예에서는 Pinniped가 LoadBalancer 서비스 유형을 대신 NodePort를 사용하도록 지시합니다. 이는 ALB(NSX Advanced Load Balancer)가 제어부 끝점 역할을 하지 않을 때 vSphere 기본값입니다.

...
stringData:
 overlays.yaml: |
   #@ load("@ytt:overlay", "overlay")
   #@overlay/match by=overlay.subset({"kind": "Service", "metadata": {"name": "pinniped-supervisor", "namespace": "pinniped-supervisor"}})
   ---
   #@overlay/replace
   spec:
     type: LoadBalancer
     selector:
       app: pinniped-supervisor
     ports:
       - name: https
         protocol: TCP
         port: 443
         targetPort: 8443
 values.yaml: |
   #@data/values
   #@overlay/match-child-defaults missing_ok=True
   ---
   infrastructure_provider: vsphere
   tkg_cluster_role: management

오버레이를 추가하는 방법:

  1. 관리 클러스터에 대해 kubectl get secret CLUSTER-NAME-PACKAGE-NAME-addon -n CLUSTER-NAMESPACE 명령을 실행하여 암호를 검색합니다. 예:

    kubectl get secret example-workload-cluster-pinniped-addon -n example-workload-cluster-namespace -o jsonpath="{.data.values\.yaml}" | base64 -d > values.yaml
    
  2. stringData 아래에 overlays.yaml 섹션을 추가합니다.

  3. 편집된 values.yaml 파일을 클러스터 암호로 교체하여 base64로 업데이트를 적용합니다. 이 명령은 환경 OS에 따라 다릅니다. 예:

    Linux:

    kubectl patch secret/example-workload-cluster-pinniped-addon -n example-workload-cluster-namespace -p "{\"data\":{\"values.yaml\":\"$(base64 -w 0 < values.yaml)\"}}" --type=merge
    

    macOS:

    kubectl patch secret/example-workload-cluster-pinniped-addon -n example-workload-cluster-namespace -p "{\"data\":{\"values.yaml\":\"$(base64 < values.yaml)\"}}" --type=merge
    
  4. 암호를 업데이트한 후 자동 관리 패키지 values.yaml 설정에 설명된 대로 kubectl get packageinstallkubectl get app 명령을 실행하여 패키지의 상태를 확인합니다.

클래스 기반 매니페스트 사용자 지정

클래스 기반 클러스터의 경우 클래스 기반 클러스터 생성에 설명된 2단계 프로세스의 1단계에서와 같이 클러스터 매니페스트를 생성한 다음, 2단계에서 클러스터를 생성하기 전에 매니페스트에 사용자 지정 개체 정의를 추가하여 클러스터를 생성하기 전에 클러스터를 사용자 지정할 수 있습니다.

예를 들어 vSphere CSI에 대해 netPermissions 값을 사용자 지정하려면 tanzu cluster create --dry-run 개체의 netPermissions 정의 블록에 다음과 같은 VSphereCSIConfig 블록을 추가하여 spec.vsphereCSI으로 생성된 매니페스트를 수정합니다.

apiVersion: csi.tanzu.vmware.com/v1alpha1
kind: VSphereCSIConfig
[...]
spec:
  vsphereCSI:
    mode: vsphereCSI
    config:
      [...]
      provisionTimeout: 33s
      attachTimeout: 77s
      resizerTimeout: 99s
      netPermissions:
        PERM-1:
          ips: "*"
          permissions: READ_WRITE
          rootsquash: false
        PERM-2:
          ips: "10.20.20.0/24"
          permissions: READ_ONLY
          rootsquash: true
        PERM-3:
          ips: "10.30.30.0/24"
          permissions: NO_ACCESS

여기서:

  • PERM-*은 사용 권한 설정의 해당 섹션에 제공하는 이름이며, vSphere 구성 암호에서 [NetPermissions "PERM-1"] 등으로 변환됩니다.
  • ips: 값은 섹션이 사용 권한을 설정하는 파일 볼륨의 주소 범위입니다.
  • permissions: 값은 해당 섹션에 대해 설정된 사용 권한입니다.

매니페스트를 수정한 후 클래스 기반 클러스터 생성의 2단계에서 클러스터를 생성할 수 있습니다.

패키지 구성 문제 해결

클러스터에서 자동 관리 패키지 구성 문제를 해결하려면 패키지의 PackageInstall CR(사용자 지정 리소스) 및 구성 요소 Secret를 검토하고 수정합니다.

패키지 구성에 임시 변경 내용을 적용하려면 아래의 자동 관리 패키지에 대한 자동 관리 패키지용 수명 주기 관리 일시 중지에 설명된 대로 PackageInstallSecret 개체의 조정을 일시 중지해야 할 수 있습니다. 이 절차는 패키지에 대한 수명 주기 관리를 비활성화하며 주의해서 사용해야 합니다.

주요 용어

Tanzu Kubernetes Grid 다음 리소스를 사용하여 자동 관리 패키지의 수명 주기를 관리합니다.

관리 클러스터에 설치된 구성 요소:

  • kapp-controller, 로컬 패키지 관리자: 관리 클러스터를 배포하면 Tanzu CLI가 클러스터에 kapp-controller를 설치합니다. kapp-controllertanzu-addons-manager 및 기타 자동 관리 패키지를 설치합니다. 또한 해당 관리 클러스터에서 배포하는 각 워크로드 클러스터에 kapp-controller를 설치하고 관리합니다.
  • tanzu-addons-manager: 관리 클러스터에서 배포하는 관리 클러스터 및 워크로드 클러스터에 자동 관리 패키지로 설치된 추가 기능 구성 요소를 관리합니다.
  • tkr-controller: 관리 클러스터에서 TKr 및 BoM ConfigMaps를 생성합니다.

워크로드 클러스터에 설치된 구성 요소:

kapp-controller는 실행되는 워크로드 클러스터에 자동 관리 패키지를 설치합니다.

개체:

  • Secret: Tanzu CLI는 클러스터별로 각 추가 기능 구성 요소에 대해 Secret를 생성합니다. 이러한 암호는 추가 기능 구성 요소의 구성을 정의합니다. tanzu-addons-manager는 암호를 읽고 여기에 포함된 구성 정보를 사용하여 추가 기능 구성 요소를 구성합니다. 모든 암호는 관리 클러스터에 생성됩니다.
  • PackageRepository CR: tanzu-addons-manager는 모든 추가 기능 구성 요소 Package CR을 참조하는 PackageRepository CR을 생성합니다(아래 참조).
  • Package CR: PackageRepository의 각 추가 기능 구성 요소에 대해 kapp-controller 대상 클러스터에 Package CR을 생성합니다.
  • PackageInstall CR: 각 추가 기능 구성 요소 Package의 경우, tanzu-addons-manager는 대상 클러스터에 PackageInstall CR을 생성하여 설치해야 하는 자동 관리 패키지에 대해 kapp-controller를 알려줍니다.
  • App CR: 각 PackageInstall에 대해 kapp-controller 대상 클러스터에 App CR을 생성합니다. 그런 다음 kapp-controller는 CR을 조정하고 패키지를 설치합니다.
  • BoM ConfigMap: 이미지 위치와 같은 추가 기능 구성 요소에 대한 메타데이터 정보를 tanzu-addons-manager에 제공합니다.

다음 명령을 사용하여 이러한 리소스의 상태를 모니터링할 수 있습니다.

명령 설명
kubectl get packageinstall PACKAGE-NAME -n tkg-system -o yaml 대상 클러스터에서 PackageInstall CR을 확인합니다. 예: kubectl get packageinstall antrea -n tkg-system -o yaml.
kubectl get app PACKAGE-NAME -n tkg-system -o yaml 대상 클러스터에서 App CR을 확인합니다. 예: kubectl get app antrea -n tkg-system -o yaml.
kubectl get cluster CLUSTER-NAME -n CLUSTER-NAMESPACE -o jsonpath={.metadata.labels.tanzuKubernetesRelease} 관리 클러스터에서 대상 클러스터의 TKr 레이블이 올바른 TKr을 가리키는지 확인합니다.
kubectl get tanzukubernetesrelease TKR-NAME TKr이 관리 클러스터에 있는지 확인합니다.
kubectl get configmaps -n tkr-system -l ‘tanzuKubernetesRelease=TKR-NAME’ TKr에 해당하는 BoM ConfigMap이 관리 클러스터에 있는지 확인합니다.
kubectl get app CLUSTER-NAME-kapp-controller -n CLUSTER-NAMESPACE 워크로드 클러스터의 경우 관리 클러스터에 kapp-controller App CR이 있는지 확인합니다.
kubectl logs deployment/tanzu-addons-controller-manager -n tkg-system 관리 클러스터에서 tanzu-addons-manager 로그를 확인합니다.
kubectl get configmap -n tkg-system | grep ADD-ON-NAME-ctrl 추가 기능 암호에 대한 업데이트가 적용되었는지 확인합니다. 동기화 시간은 5분입니다.

자동 관리 패키지에 대한 수명 주기 관리 일시 중지

중요

이 섹션의 명령은 패키지 수명 주기 관리를 비활성화합니다. 가능하면 위의 패키지 구성에 설명된 절차를 대신 사용하십시오.

자동 관리 패키지에 대한 수명 주기 관리를 일시적으로 일시 중지해야 하는 경우 아래 명령을 사용할 수 있습니다.

  • 비밀 조정을 일시 중지하려면 관리 클러스터에 대해 다음 명령을 실행합니다.

    kubectl patch secret/CLUSTER-NAME-ADD-ON-NAME-addon -n CLUSTER-NAMESPACE -p '{"metadata":{"annotations":{"tkg.tanzu.vmware.com/addon-paused": ""}}}' --type=merge
    

    이 명령을 실행하면 tanzu-addons-manager 암호 조정을 중지합니다.

  • PackageInstall CR 조정을 일시 중지하려면 대상 클러스터에 대해 다음 명령을 실행합니다.

    kubectl patch packageinstall/PACKAGE-NAME -n tkg-system -p '{"spec":{"paused":true}}' --type=merge
    

    이 명령을 실행하면 kapp-controllerPackageInstall 및 해당하는 App CR 조정을 중지합니다.

추가 기능 구성 요소의 리소스를 임시로 수정하려면 먼저 암호 조정을 일시 중지한 다음 PackageInstall CR 조정을 일시 중지합니다. 수명 주기 관리를 일시 중지한 후 tanzu-addons-managerkapp-controller는 암호를 재개하고 PackageInstall CR 조정을 다시 시작합니다.

  • 암호 조정을 일시 중지 해제하려면 암호 주석에서 tkg.tanzu.vmware.com/addon-paused를 제거합니다.

  • PackageInstall CR 조정을 해제하려면 PackageInstall CR을 {"spec":{"paused":false}}로 업데이트하거나 변수를 제거합니다.

check-circle-line exclamation-circle-line close-line
Scroll to top icon