https://kubernetes.io/ko/docs/setup/best-practices/certificates/
쿠버네티스는 TLS 인증을 위해서 PKI 인증서가 필요하다
kuberadm 으로 설치한다면 전부 인증서를 자동으로 설치된다.
/etc/kubernetes/pki/apiserver.crt
/etc/kubernetes/pki/apiserver-etcd-client.crt
/etc/kubernetes/pki/apiserver-kubelet-client.key
와 같이 대부분의 인증서의 위치는 /etc/kubernetes/pki
이다
root@controlplane:/etc/kubernetes/pki# ls
apiserver-etcd-client.crt apiserver.key front-proxy-ca.key
apiserver-etcd-client.key ca.crt front-proxy-client.crt
apiserver-kubelet-client.crt ca.key front-proxy-client.key
apiserver-kubelet-client.key etcd(디렉토리임) sa.key
apiserver.crt front-proxy-ca.crt sa.pub
루트 CA 란?
: 일반적으로 인증서는 최상위 Root 인증서, Intermediate(중간 인증서), Leaf(서버 인증서, SSL 인증서) 로 구성되어 인증서 체인(certificate chain) 을 구성한다. 인증서 체인은 하위 인증서인 서버 인증서로 시작하여 ROOT 인증서로 끝나며, 우리가 알고 있는 SSL 인증서는 서버 인증서이다. 여기서 루트 CA 인증서는 CA 자체에서 서명한 인증서로 우리가 알고 있는 https 의 TLS 인증을 할때 사용하는 ca의 인증서이다.
따라서 여기서 단일 루트 인증서란 쿠버네티스 오브젝트를 생성할때 사용하는 최상위 인증서이다.
이런 인증서는 다음과 같이 있다.
경로 | 기본 CN | 설명 |
---|---|---|
ca.crt,key | kubernetes-ca | 쿠버네티스 일반 CA |
etcd/ca.crt,key | etcd-ca | 모든 etcd 관련 기능을 위해서 |
front-proxy-ca.crt,key | kubernetes-front-proxy-ca | front-end proxy 위해서 |
또한 ETCD 의 인증서는 다른 곳에서 관리한다.
/etc/kubernetes/pki/etcd/server.crt
root@controlplane: /etc/kubernetes/pki/etcd# ls
ca.crt healthcheck-client.crt peer.crt server.crt
ca.key healthcheck-client.key peer.key server.key
ETCD server CA Root Certificate file : /etc/kubernetes/pki/etcd/ca.crt
인증서 내용 보기
openssl x509 -in file- ./apiserver.crt -text
/etc/kubernetes/manifests
root@controlplane:/etc/kubernetes/manifests# ls
etcd.yaml kube-controller-manager.yaml
kube-apiserver.yaml kube-scheduler.yaml