설명
kubelet 서버 인증서를 제때 갱신하지 않으면 만료 후 API 서버의 노드 연결이 실패할 수 있습니다. 자동 갱신 기능을 사용하려면 RotateKubeletServerCertificate와 serverTLSBootstrap: true 및 정상적인 CSR 승인·서명 절차가 필요합니다.
Kubernetes의 기본 승인기는 kubelet 서버 인증서 CSR을 자동 승인하지 않습니다. 검증된 별도 승인기나 수동 절차가 필요하며, 클라이언트 인증서 갱신과 구분해야 합니다.
잠재적 영향
- 서버 인증서 만료로 로그 조회 등 노드 관리 작업이 중단될 수 있습니다.
- 검증 없이 CSR을 승인하면 다른 노드를 사칭하는 서버 인증서가 발급될 수 있습니다.
해결 방법
- 지원되는 kubelet 구성에서 해당 기능과
serverTLSBootstrap: true를 활성화하세요. - CSR의 노드 신원과 DNS·IP 주소를 검증하는 승인·서명 절차를 구성하세요. 모든 요청을 일괄 승인하지 마세요.
- 실제 서버 인증서 교체와 API 서버의 CA 검증을 시험하고 만료 경보를 운영하세요.
예시
기능 게이트만 비교하는 KubeletConfiguration 발췌입니다. 전체 갱신 설정이나 CSR 승인 절차를 포함하지 않습니다.
변경 전
yaml
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
featureGates:
RotateKubeletServerCertificate: false
서버 인증서 갱신 기능이 꺼져 있습니다. 인증서를 별도 절차로 관리하지 않으면 만료 시 연결이 실패할 수 있습니다.
변경 후
yaml
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
featureGates:
RotateKubeletServerCertificate: true
기능 게이트를 켰습니다. 이것만으로 갱신이 시작되는 것은 아니며 serverTLSBootstrap과 승인·발급 절차도 필요합니다.