이 항목에서는 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 패키지 구성 파일을 다운로드합니다.
클러스터를 생성하는 데 사용한 TKr(Tanzu Kubernetes 릴리스)에서 antrea
버전 태그를 찾습니다. 관리 클러스터에 대해 kubectl get tkr
명령을 실행하여 TKr을 검색할 수 있습니다.
kubectl get clusters CLUSTER-NAME -n CLUSTER-NAMESPACE --show-labels
를 실행합니다.
출력에서 tanzuKubernetesRelease
값을 찾습니다. 예: tanzuKubernetesRelease=v1.23.10---vmware.1-tkg.1
.
kubectl get tkr TKR-VERSION
을 실행합니다. 여기서 TKR-VERSION
은 위에서 검색한 값입니다. 예:
kubectl get tkr v1.23.10---vmware.1-tkg.1 -o yaml
출력에서 packages/core/antrea
아래에 버전 태그를 찾습니다.
또는 ~/.config/tanzu/tkg/bom/YOUR-TKR-BOM-FILE
에서 TKr을 검토하여 버전 태그를 찾을 수 있습니다.
패키지 구성 파일을 다운로드합니다. 예:
imgpkg pull -b projects.registry.vmware.com/tkg/packages/core/antrea:v1.2.3_vmware.4-tkg.1-advanced -o antrea
antrea
로 이동하여 파일을 검토합니다.
Antrea 컨테이너 네트워킹 기능에 대한 자세한 내용은 antrea 1.4.0 릴리스 정보 VMware Container Networking을 참조하십시오. Antrea 컨테이너 클러스터를 VMware NSX 통합하는 방법에 대한 자세한 내용은 Antrea 컨테이너 클러스터의 통합을 참조하십시오.
아래 리소스를 검토하고 수정하여 자동 관리 패키지의 구성을 업데이트하고 문제를 해결할 수 있습니다. 자동 관리 패키지는 Tanzu Kubernetes Grid 의해 관리되기 때문에 일반적으로 해당 구성을 업데이트할 필요가 없습니다.
유형 | 리소스 | 설명 |
---|---|---|
구성 업데이트 | 추가 기능 구성 요소 Secret |
자동 관리 패키지에 의해 설치된 추가 기능 구성 요소의 기본 구성을 업데이트하려면 다음을 수행할 수 있습니다.
|
문제 해결 | PackageInstall 사용자 지정 리소스(CR) 및 추가 기능 구성 요소 Secret |
위와 동일합니다. 또한 패키지 구성에 임시 변경 내용을 적용해야 하는 경우 다음을 할 수 있습니다.
이렇게 하면 패키지의 수명 주기 관리가 비활성화됩니다. 따라서 주의해서 사용하십시오. 자세한 내용은 아래 자동 관리 패키지에 대한 수명 주기 관리 일시 중지를 참조하십시오. |
추가 기능 구성 요소 암호 및 PackageInstall
CR에 대한 자세한 내용은 아래 키 용어를 참조하십시오.
추가 기능 구성 요소 암호의 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의 서비스 유형에 따라 포트 번호를 포함해야 할 수도 있습니다.
|
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 로 설정됩니다. |
* dex.
로 시작하는 Pinniped 설정을 업데이트할 경우 관리 클러스터 배포 후 Dex 설정 업데이트를 참조하십시오.
추가 기능 구성 요소 암호의 values.yaml
섹션을 수정하려면:
관리 클러스터에 대해 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
values.yaml
섹션을 업데이트합니다. 위 표에 나열된 값을 업데이트할 수 있습니다.
편집된 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
암호를 업데이트한 후 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
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 노드를 참조하십시오.
경우에 따라 추가 기능 구성 요소 암호에 오버레이를 추가할 수 있습니다. 이를 통해 패키지 구성 파일에 정의된 기본 구성을 사용자 지정할 수 있습니다. 아래 예에서는 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
오버레이를 추가하는 방법:
관리 클러스터에 대해 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
stringData
아래에 overlays.yaml
섹션을 추가합니다.
편집된 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
암호를 업데이트한 후 values.yaml 섹션 업데이트에 설명된 대로 kubectl get packageinstall
및 kubectl get app
명령을 실행하여 패키지의 상태를 확인합니다.
자동 관리 패키지 문제를 해결하기 전에 다음 섹션을 검토하십시오.
Tanzu Kubernetes Grid 다음 리소스를 사용하여 자동 관리 패키지의 수명 주기를 관리합니다.
관리 클러스터에 설치된 구성 요소:
kapp-controller
, 로컬 패키지 관리자: 관리 클러스터를 배포하면 Tanzu CLI가 클러스터에 kapp-controller
를 설치합니다. kapp-controller
는 tanzu-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을 조정하고 패키지를 설치합니다.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-controller
는 PackageInstall
및 해당하는 App
CR 조정을 중지합니다.
추가 기능 구성 요소의 리소스를 임시로 수정하려면 먼저 암호 조정을 일시 중지한 다음 PackageInstall
CR 조정을 일시 중지합니다. 수명 주기 관리를 일시 중지한 후 tanzu-addons-manager
및 kapp-controller
는 암호를 재개하고 PackageInstall
CR 조정을 다시 시작합니다.
암호 조정을 일시 중지 해제하려면 암호 주석에서 tkg.tanzu.vmware.com/addon-paused
를 제거합니다.
PackageInstall
CR 조정을 해제하려면 PackageInstall
CR을 {"spec":{"paused":false}}
로 업데이트하거나 변수를 제거합니다.