커스텀 리소스 정의(CRD)는 Kubernetes 기능을 확장하는 강력한 도구입니다.
그러나 CRD의 전환 웹훅 구성 spec.conversion.webhook.clientConfig.caBundle
내에 잘못되거나 형식이 잘못된 인증 기관 (CA) 번들이 포함되어 있으면 클러스터 작업이 중단될 수 있습니다. 이는 리소스 생성, 업데이트 또는 삭제 중에 오류로 표시될 수 있습니다. Google Kubernetes Engine (GKE)은 클러스터를 모니터링하고 추천자 서비스를 사용하여 플랫폼 사용량을 최적화하는 방법을 안내합니다.
클러스터의 안정성과 성능을 유지하려면 작동하지만 잘못된 CA 번들이 있는 CRD에 관한 GKE의 권장사항을 참고하세요. 이 안내에 따라 잘못 구성되었을 수 있는 CRD를 확인하고 필요한 경우 업데이트합니다. 통계 및 추천을 관리하는 방법에 대한 자세한 내용은 통계 및 추천으로 GKE 사용 최적화를 참조하세요.
영향을 받는 클러스터 식별
잘못된 CA 번들이 포함된 CRD의 영향을 받는 클러스터를 식별하는 통계를 확인하려면 하위유형 K8S_CRD_WITH_INVALID_CA_BUNDLE
의 통계 및 추천 보기 안내를 따르세요. 다음과 같은 방법으로 통계를 확인할 수 있습니다.
- Google Cloud 콘솔 사용
- Google Cloud CLI 또는 Recommender API를 사용하여 하위유형
K8S_CRD_WITH_INVALID_CA_BUNDLE
로 필터링합니다.
통계를 사용하여 CRD를 식별한 후 안내에 따라 구성이 잘못된 CA 번들 문제를 해결합니다.
GKE에서 잘못 구성된 CRD를 감지하는 경우
GKE 클러스터에 spec.conversion.webhook.clientConfig
의 웹훅 클라이언트 구성에 잘못 구성된 caBundle
를 보고하는 CRD가 하나 이상 있는 경우 GKE는 K8S_CRD_WITH_INVALID_CA_BUNDLE
하위유형으로 통계 및 권장사항을 생성합니다.
구성이 잘못된 CA 번들로 CRD를 확인하려면 안내를 따르세요.
감지된 CRD 문제 해결
다음 섹션에는 GKE가 잘못 구성되었을 수 있는 CRD의 문제 해결을 위한 안내가 포함되어 있습니다.
안내를 구현하고 CRD가 올바르게 구성되면 24시간 이내에 권장사항이 해소되어 더 이상 콘솔에 표시되지 않습니다. 권장사항의 안내를 구현하고 24시간이 지나지 않았으면 권장사항을 해결됨으로 표시할 수 있습니다. 권장사항을 구현하지 않으려면 무시하기를 선택하세요.
클러스터에서 영향을 받는 CRD 식별
하위유형
K8S_CRD_WITH_INVALID_CA_BUNDLE
의 통계 및 추천 보기를 통해 한 번에 한 통계씩 선택하여 문제를 해결합니다. GKE는 손상된 CRD가 있는 클러스터당 하나의 통계를 생성합니다.다음 명령어를 실행하여 서비스를 설명하여 문제가 있을 수 있는 CA 번들이 포함된 CRD를 찾습니다.
kubectl get crd -o custom-columns=NAME:.metadata.name,CABUNDLE:.spec.conversion.webhook.clientConfig.caBundle
출력은 다음과 같습니다.
- 이름: CRD의 이름입니다.
- CaBundle: CRD의 변환 웹훅과 연결된 CA 번들(있는 경우)입니다. 출력을 검토합니다. 전환 Webhook을 사용하는 것으로 확인된 CRD의 caBundle 열이 비어 있으면 caBundle에 잠재적인 문제가 있음을 나타냅니다.
CRD 다시 만들기
이 오류를 해결하려면 유효한 CA 번들로 영향을 받는 CRD를 다시 만듭니다.
문제가 있는 CRD와 연결된 기존 맞춤 리소스(있는 경우)를 백업합니다. 다음 명령어를 실행하여 기존 리소스를 내보냅니다.
kubectl get <crd-name> -o yaml > backup.yaml
기존 CRD를 삭제합니다.
kubectl delete crd <crd-name>
CRD의
caBundle
필드에 올바른 형식의 base64로 인코딩된 PEM 인증서가 포함되어 있는지 확인합니다. CRD를 직접 수정하거나 작성자에게 문의하여 이 작업을 할 수 있습니다.CRD YAML 정의를 수정하여
spec.conversion.webhook.clientConfig.caBundle
필드를 유효한 CA 번들 데이터로 업데이트합니다. 다음과 같은 결과가 표시됩니다.spec: conversion: webhook: clientConfig: caBundle: <base64-encoded-ca-bundle>
수정된 CRD를 적용합니다.
kubectl apply -f <corrected-crd-file.yaml>
커스텀 리소스를 복원합니다.
kubectl apply -f backup.yaml