상세 컨텐츠

본문 제목

Kubernetes(쿠버네티스) 인증서 교체하기 (x509: certificate has expired)

DevOps/Kubernetes

by Hoonjo 2023. 6. 16. 19:00

본문

Kubernetes(쿠버네티스) 내부 인증서 교체하기

(unable to connect to the server: x509: certificate has expired or is not yet valid:)

 

 

 

사내 쿠버네티스에 ArgoCD로 어플리케이션 배포중 x.509 certificate 관련 에러 발발 💣

 

에러 내용 :
unable to connect to the server: x509: certificate has expired or is not yet valid: current time...

 

 

 

어..? 이건 또 뭔....

어플리케이션에서 사용하는 SSL 인증서만 교체해주면 되는지 알았더니

쿠버네티스가 사용하는 인증서가 별도로 있었고...

인증서가 만료가 된 것이다.

 

잠깐 혹시.. 서비스에 영향이 있을까?

접속해보니 서비스는 잘 된다.

다만 kubectl 명령어가 안되더이다. 그러니 배포도 안되지

 

다행히 운영 K8s에는 아직 만료되지 않았고, 개발 K8s에 먼저 교체 후 운영에도 빠른 조치를 진행했다.


 

1. 인증서 기간 확인

 

기존 인증서 기간 확인 해보자

 

명령어:

kubeadm certs check-expiration

kubeadm certs check-expiration
kubeadm certs check-expiration 결과

- 2023년 07월 07일 만료 예정이다.

바꿔 바꾸라고

 

 


 

2. 기존 인증서 백업

 

혹시 잘못될 경우 롤백 해야한다 백업은 생활화 하자

/etc/kubernetes 경로에 쿠버네티스 설정파일과 인증서들이 존재한다.

 

명령어:

cp -pr /etc/kubernetes/ /etc/kubernetes_backup

 


 

3. 인증서 갱신

 

명령어로 간단히 갱신이 가능하다.

 

명령어:

kubeadm certs renew all

kubeadm certs renew all 결과

- 맨 아랫줄에 인증서가 갱신되었으니, 변경된 인증서 적용을 위해 kube-apiserver, kube-controller-manager, kube-scheduler, etcd 서비스를 반드시 재기동 하라한다.

 


 

4. config 파일 변경

 

/etc/kubernetes 폴더에서 ll (또는 ls -l) 명령어로 확인하면 admin.conf 파일이 수정된 것이 보인다.

ls -l 결과

- 날짜가 바뀌어 있다. 파일을 열어보면 인증서의 값들이 들어가있는 파일이다.

이 인증서를 $HOME/.kube 경로에 존재하는 config 파일에 덮어씌워야 한다.

 

왜?
실제 admin.conf 파일과 config 파일을 열어보면 양식이 일치한다.
기본적으로 kubectl 명령어를 사용하면 $HOME/.kube 경로에 존재하는 config 파일을 먼저 찾게된다.
그래서 config 파일을 교체해줘야 하더이다.

 

명령어:

\cp /etc/kubernetes/admin.conf /root/.kube/config

- 맨 앞에 '\' 특수문자 오타 아닙니다. (없으면 덮어씌울때 y버튼 한번 더 눌러야함)

 


 

5. 서비스 재기동 (인증서 적용)

 

kube-apiserver, kube-controller-manager, kube-scheduler, kubelet, daemon 재기동 및 설정 적용해보자.

 

명령어:

kill -s SIGHUP $(pidof kube-apiserver)
kill -s SIGHUP $(pidof kube-controller-manager)
kill -s SIGHUP $(pidof kube-scheduler)
systemctl restart kubelet
systemctl daemon-reload

- 모두 입력하고 나면 kubectl 명령어가 정상동작 한다.

 

kubeadm certs check-expiration 결과

- 2024년 6월 11일로 바뀌었다.

 

 

 

앞으로 만료되기 전에 교체해주자 😂

 

관련글 더보기