CA 번들이 잘못된 CRD 문제 해결

커스텀 리소스 정의 (CRD)Kubernetes 기능을 확장하는 강력한 도구입니다. 하지만 CRD의 변환 웹훅 구성 spec.conversion.webhook.clientConfig.caBundle에 유효하지 않거나 형식이 잘못된 인증 기관(CA) 번들이 포함되어 있으면 클러스터 작업이 중단될 수 있습니다. 이 문제는 리소스 생성, 업데이트 또는 삭제 중에 오류로 나타나 클러스터의 안정성과 성능에 영향을 미칠 수 있습니다.

이 문제를 방지하기 위해 Google Kubernetes Engine (GKE)은 잘못된 CA 번들이 있는 CRD를 자동으로 감지하고 추천을 생성합니다. 이 문서를 사용하여 권장사항을 확인하고, 잘못 구성된 CRD를 식별하고, 업데이트하세요.

이 정보는 GKE에서 CRD와 커스텀 리소스를 관리하는 플랫폼 관리자 및 운영자와 기타 사용자에게 중요합니다.

영향을 받는 클러스터 식별

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 식별

  1. 하위 유형 K8S_CRD_WITH_INVALID_CA_BUNDLE통계 및 추천 보기를 통해 한 번에 한 통계씩 선택하여 문제를 해결합니다. GKE는 깨진 CRD가 있는 클러스터당 하나의 통계를 생성합니다.

  2. 다음 명령어를 실행하여 서비스를 설명하고 문제가 있을 수 있는 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를 다시 만드세요.

  1. 문제가 있는 이 CRD와 연결된 기존 커스텀 리소스가 있는 경우 이를 백업합니다. 다음 명령어를 실행하여 기존 리소스를 내보냅니다.

      kubectl get <crd-name> -o yaml > backup.yaml
    
  2. 기존 CRD를 삭제합니다.

      kubectl delete crd <crd-name>
    
  3. CRD의 caBundle 필드에 올바른 형식의 base-64로 인코딩된 PEM 인증서가 포함되어 있는지 확인합니다. CRD를 직접 수정하거나 작성자에게 문의하면 됩니다.

  4. CRD YAML 정의를 수정하여 spec.conversion.webhook.clientConfig.caBundle 필드를 유효한 CA 번들 데이터로 업데이트합니다. 다음과 같은 결과가 표시됩니다.

        spec:
          conversion:
            webhook:
              clientConfig:
                caBundle: <base64-encoded-ca-bundle>
    
  5. 수정된 CRD를 적용합니다.

        kubectl apply -f <corrected-crd-file.yaml>
    
  6. 맞춤 리소스를 복원합니다.

        kubectl apply -f backup.yaml
    

다음 단계