[CKA] Kubernetes 인증서 정보 확인

Kubernetes 인증서 정보 확인의 핵심 개념과 구성 방법, 실습 풀이를 정리합니다.

기존 클러스터에서 인증서를 보는 방법을 알아봅니다.

인증서의 상태를 확인

우선 클러스터가 어떻게 구성되었는지 확인해야합니다.
kubeadm같은 툴에 의존하여 생성되었는지 아닌지가 중요하며 각 구성한 방식에 따라 확인하는 방법의 차이가 발생합니다. kubeadm같은 경우 모두 pod로 배포하며 어디를 확인해봐야하는지 아는게 중요합니다.

kubeadm

kubeadm이 셋업한 환경에서 apiserver 정의 파일을 확인합니다.

apiserver를 시작하는 명령에서는 모든 인증서에 대한 정보를 가지고 있으니 용도로 사용되는 인증서 파일을 확인합니다.

apiserver에서 조회된 인증서 파일 위치에서 해당 파일을 디코드하여 인증서 정보를 확인할 수 있습니다.

openssl x509 -in /etc/kubernetes/pki/apiserver.crt -text -noout

출력에서 인증서의 Subject, Issuer, Subject Alternative Name과 유효 기간을 확인합니다. 인증서 요구 사항은 쿠버네티스 문서 페이지에서 확인할 수 있습니다.

apiserver 혹은 etcd같은 핵심 서버가 동작하지 않는 경우 docker 레벨로 내려가 조회가 필요합니다.

kubectl logs etcd-master
docker ps -a

watch kubectl get pods -n kube-system

2379로 연결 중 문제가 발생했습니다. 일반적으로 2379의 경우 etcd를 의미하며 apiserver에서 etcd ca파일들을 확인해봤을 때 경로가 잘못되어 수정하였습니다.

W0916 14:19:44.771920       1 clientconn.go:1331] [core] grpc: addrConn.createTransport failed to connect to {127.0.0.1:2379 127.0.0.1 <nil> 0 <nil>}. Err: connection error: desc = "transport: authentication handshake failed: x509: certificate signed by unknown authority". Reconnecting...
  1. -etcd-cafile=/etc/kubernetes/pki/etcd/ca.crt:
    • 이 파일은 Kubernetes API 서버가 etcd 서버의 인증서를 검증할 때 사용하는 신뢰할 수 있는 CA 인증서입니다.
    • Kubernetes API 서버는 etcd 서버에 연결을 시도할 때 etcd 서버로부터 인증서를 받습니다. 이 인증서가 신뢰할 수 있는지 확인하려면, API 서버는 -etcd-cafile로 지정된 CA 인증서를 사용하여 검증합니다. 이 CA 인증서는 etcd 서버의 인증서가 올바른 인증 기관에 의해 서명되었는지 확인하는 데 사용됩니다.
  2. -etcd-certfile=/etc/kubernetes/pki/apiserver-etcd-client.crt:
    • 이 파일은 Kubernetes API 서버의 클라이언트 인증서입니다.
    • 이 인증서는 etcd** 서버가 Kubernetes API 서버를 신뢰할 수 있는 클라이언트로 인증하기 위해 필요합니다**. etcd 서버는 클라이언트(여기서는 API 서버)로부터 인증서를 받고, 그 인증서가 신뢰할 수 있는 CA(여기서 etcd 서버가 신뢰하는 CA에 의해 서명된 경우)인지 확인합니다.
  3. -etcd-keyfile=/etc/kubernetes/pki/apiserver-etcd-client.key:
    • 이 파일은 클라이언트 인증서(apiserver-etcd-client.crt)의 개인 키입니다.
    • 개인 키는 인증서와 함께 사용되어 클라이언트가 자신이 인증서의 소유자임을 증명할 수 있도록 합니다. 즉, 이 키는 클라이언트(API 서버)가 자신의 신원을 증명하고, etcd 서버와의 TLS 연결을 설정할 때 사용됩니다.

정리

API 서버와 etcd 서버(비밀 클럽)의 관계를 비밀 클럽 입장으로 생각해 봅시다: