CKA 공부 18일차
in Devops on Kubernetes
TLS in Kubernetes
쿠버네티스 내의 모든 노드간의 통신은 Secure 해야한다.
당연히 kube-apiserver로 들어오는 요청과 마스터 노드 내부 컴포넌트간의 통신도 Secure 해야한다.
k8s의 서버 컴포넌트들이 갖는 인증서와 key는 다음과 같다.
- kube-apiserver는 apiserver.crt, apiserver.key
- ETCD Server는 ectdserver.crt, etcdserver.ky
- Kubelet Server는 kubelet.crt, kubelet.key
k8s의 클라이언트 컴포넌트들이 갖는 인증서와 key는 다음과 같다.
- kubectl 명령을 사용하는 ADMIN(유저)가 사용하는 admin.crt, admin.key
- Kube-Scheduler가 사용하는 scheduler.crt, scheduler.key
- Kube-controller-manager가 사용하는 controller-manager.crt, controller-manager.key
- Kube-proxy가 사용하는 kube-proxy.crt, kube-proxy.key
TLS in Kuberenetes - Certificate Creation
우리는
OPENSSL
을 사용해 직접 CA Certificate를 만들어보자.키 생성 :
openssl genrsa -out ca.key 2048
-> ca.key 생성Certificate Siging 요청
openssl req -new -key ca.key -subj "/CN=KUBERNETES-CA" -out ca.csr
-> ca.csrSign Certificate :
openssl x509 -req -in ca.csr -signkey ca.key -out ca.crt
-> ca.crt (인증서)
View Certificate Details
kubeadm
을 사용하면 손쉽게 클러스터 설치와 설정이 가능하다.kubeadm
을 사용해 설치하면 각종 CA가 설정값에 잡혀있는 것을 볼 수 있다./etc/kubernetes/manifests/kube-apiserver.yaml을 보면 해당 CA 파일의 위치를 알 수 있다.
그리고
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -text -noout
으로 인증서 내용도 볼 수 있다.