Devops/Kubernetes

[Kubernetes] 쿠버네티스 컴포넌트(Controlplane) 인증서 재발급

dev_ss 2024. 5. 2. 00:24

 

 

쿠버네티스 클러스터를 구축하면 Api-server는 모든 통신을 함에 있어 기본적으로 Https 통신을 한다.

 

이로 인하여 각 쿠버네티스 컴포넌트는 Api-server와 통신을 할 때, 클러스터의 초기화 및 합류하는 시점에서 인증서와 개인 키를 발급하고 통신에 사용한다.

 

기본적으로 인증서의 유효 기간은 1년이며, 이번 내용은 발급된 인증서의 유효 기간 확인 및 재발급에 대하여 다룰 것이다.


Kubeadm으로 쿠버네티스 클러스터를 구축하고, Controlplane의 /etc/kubernetes 경로의 하위 파일들을 보면 아래와 같다.

 

[/etc/kubernetes 하위 디렉토리 및 파일]

 

 

 

이는 각 쿠버네티스 컴포넌트의 설정 값이 포함된 파일들이 있고, 그 내용은 아래 양식과 같다.

[scheduler.conf의 내용]

 

여기서 각 컴포넌트들의 인증서와 개인 키 값이 conf 파일에 내장되어 있는 것을 볼 수가 있는데, 이는 kubeadm을 초기화(init)할 때, 생성되는 설정 값으로 기한이 최대 1년인 인증서가 만들어진다.

 

 

 

그 외에도 api-server와 etcd 등에 이용되는 인증서 및 개인 키 파일은 /etc/kubernetes/pki에 생성이 된 것을 확인할 수 있다.

[/etc/kubernetes/pki 하위 디렉토리 및 파일]

 

 

 

쿠버네티스 클러스터를 아래 깃허브에서 설명해 주는 것처럼 end-to-end로 구축을 한다면, 앞서 본 인증서와 개인 키들을 수동으로 각각 발급하고, 각 컴포넌트 별로 수동으로 설정해야 한다.

 

https://github.com/kelseyhightower/kubernetes-the-hard-way

 

GitHub - kelseyhightower/kubernetes-the-hard-way: Bootstrap Kubernetes the hard way. No scripts.

Bootstrap Kubernetes the hard way. No scripts. Contribute to kelseyhightower/kubernetes-the-hard-way development by creating an account on GitHub.

github.com

 

 

※ 1.15 버전보다 낮을 경우 수동 발급할 필요가 있다.

(https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/)

 

 

최근 버전은 이러한 기능이 kubeadm에 내포되어 있다.


유효 기간 확인

 

1.29 버전 기준

 

Controlplane 노드에서 아래 명령어를 실행하면, 각 컴포넌트의 유효 기간을 확인할 수 있다.

# 인증서 만료기간 확인
kubeadm certs check-expiration

 

 

명령어를 실행하면 아래처럼 확인이 가능하다.

 

[인증서 만료기간 정보]

 

 

 

 

admin.conf부터, 각 컴포넌트와 통신을 하기 위한 인증서 등의 잔존 기간을 확인할 수 있다.

 

또는 이전에서 보았던 /etc/kubernetes/pki 하위의 crt 파일을 직접 확인할 수도 있다.

 

아래는 api-server의 인증서의 유효 기간을 확인하는 명령어다.

 

# api-server 인증서 위치로 이동
/etc/kubernetes/pki

# api-server 유효 기간 확인
openssl x509 -in apiserver.crt -noout -dates

 

 

[단일 인증서(api-server)의 만료기간 확인]

 

 

이전의 kubeadm에서 확인한 것과 같은 만료 시간이다.

 


인증서 재발급

 

인증서 유효 기간을 확인했으면, 이제는 새로 발급할 부분을 알아볼 것이다.

 

kubeadm에서 제공되기에 어렵지 않게 재발급을 할 수 있다.

 

# 모든 인증서 재발급
kubeadm certs renew all

 

한 줄의 명령어를 통하여 모든 인증서의 재발급이 가능하다.

 

[재발급되는 인증서의 과정 확인]

 

 

위 사진처럼, 각 인증서들이 재발급되는 과정을 볼 수 있고, 이전의 각 인증서 확인하는 명령어를 통하여 유효 기간을 재 확인할 수 있다.

 

※ 재발급 후 각 컴포넌트 파드는 재시작해주어야 한다.

 

# 인증서 만료기간 확인
kubeadm certs check-expiration

 

[새로 발급된 인증서의 만료기간 확인]

 

위 사진을 기반으로, 인증서들은 만료기간이 연장된 것을 확인할 수 있다.

 

하지만 admin.conf는 kubeadm의 초기화 시 .kube에 복사했던 파일과 다르기에 아래 명령어를 통해 복사해줘야 한다.

# admin.conf 복사
cp /etc/kubernetes/admin.conf ~/.kube/config

 

 

※ /var/lib/kubelet/pki에 존재하는 crt는 업데이트되지 않으니 별도 작업을 통하여 재발급을 해야 하고, /etc/kubernetes 하위에 재발급되지 않은 인증서는 기본 10년 유효기간이니 참고해야 할 것이다.

 

 

 

반응형