Kubernetes 인증서란 무엇인가요? 왜 중요한가요?
Kubernetes는 클러스터 내 통신의 보안을 위해 다양한 인증서를 사용합니다. 이러한 인증서는 클라이언트와 서버 간의 신뢰를 보장하며, 주로 TLS(Transport Layer Security) 프로토콜을 통해 데이터를 암호화합니다. Kubernetes에서 사용되는 주요 인증서에는 API 서버, 컨트롤러 매니저, 스케줄러, ETCD, 그리고 클러스터 사용자들의 인증서가 포함됩니다 (Production-Grade Container Orchestration) (SoByte).
인증서를 10년짜리로 업데이트하는 이유는 무엇인가요?
Kubernetes의 기본 인증서 유효기간은 1년입니다. 하지만 인증서 갱신 작업의 빈도를 줄이고, 관리의 편리성을 높이기 위해 10년짜리 인증서를 사용할 수 있습니다. 이는 특히 자주 인증서를 갱신하기 어려운 상황에서 유용합니다. 다만 보안 유지 차원에서 필요한 경우에는 더 자주 갱신하는 것이 좋습니다 (SoByte) (Stack Overflow).
Kubernetes 인증서 업데이트를 위한 사전 준비는 무엇인가요?
- kubeconfig 파일 백업: 업데이트 과정에서 문제가 발생할 경우를 대비해
~/.kube/config파일을 안전한 위치에 백업해야 합니다 (Production-Grade Container Orchestration). - 실행 파일 권한 설정: 인증서 업데이트 스크립트를 실행하기 전에
chmod 755명령어를 사용하여 실행 권한을 부여해야 합니다 (Production-Grade Container Orchestration). - Containerd 환경 설정: Containerd를 사용하는 경우,
crictl설정 파일을 준비해야 합니다. 이를 위해/etc/crictl.yaml파일에 다음 내용을 추가합니다:이 설정은 Containerd와의 통신을 원활하게 하여 이미지 풀링과 컨테이너 런타임을 관리하는 데 필요합니다 (Production-Grade Container Orchestration) (Stack Overflow).
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
Docker와 Containerd 환경에서 인증서 업데이트 방법
Kubernetes에서 사용하는 주요 컨테이너 런타임은 Docker와 Containerd입니다. 각각의 환경에 맞는 명령어를 사용하여 인증서를 갱신해야 합니다.
- Docker 환경:
./k8s_expire_10y.sh all --cri docker
- Containerd 환경:
./k8s_expire_10y.sh all --cri containerd
위 명령어는 Kubernetes 마스터 노드와 ETCD의 인증서를 모두 갱신합니다 (SoByte) (Production-Grade Container Orchestration).
인증서 업데이트 후 추가 작업
인증서 업데이트가 완료된 후에는 클러스터의 주요 구성 요소를 다시 시작해야 합니다. 여기에는 kube-apiserver, kube-controller-manager, kube-scheduler, 그리고 etcd가 포함됩니다. 이 과정은 새로운 인증서가 적용되도록 보장합니다. 또한, kubelet의 경우 자동으로 인증서 갱신이 설정되어 있지 않다면, 수동으로 설정을 수정해야 할 수 있습니다 (Production-Grade Container Orchestration) (Stack Overflow).
아래에 shell-script 공유 하였으니 참고하시면 됩니다.