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


커스텀 리소스 정의(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 식별

  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 번들(있는 경우)입니다. 출력을 검토합니다. 전환 Webhook을 사용하는 것으로 확인된 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 필드에 올바른 형식의 base64로 인코딩된 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
    

다음 단계