커스텀 리소스 정의(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
에 대한 통계 및 추천 보기 안내를 따르세요. 다음과 같은 방법으로 통계를 확인할 수 있습니다.
- Trusted 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 번들입니다(해당하는 경우). 출력을 검토합니다. 변환 웹훅을 사용하는 것으로 알려진 CRD의 caBundle 열이 비어 있으면 caBundle에 문제가 있을 수 있습니다.
CRD 다시 만들기
이 오류를 해결하려면 유효한 CA 번들로 영향을 받는 CRD를 다시 만드세요.
문제가 있는 이 CRD와 연결된 기존 커스텀 리소스가 있는 경우 이를 백업합니다. 다음 명령어를 실행하여 기존 리소스를 내보냅니다.
kubectl get <crd-name> -o yaml > backup.yaml
기존 CRD를 삭제합니다.
kubectl delete crd <crd-name>
CRD의
caBundle
필드에 올바른 형식의 base-64로 인코딩된 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