144. Certificates API
certificate를 관리하는 방법과 certificate API가 무엇인지 다룸.
나는 이미 admin으로서 인증서가 있는 상태인데,
우리 부서에 새로운 직원이 오면, 클러스터에 어떻게 접근을 할까?
1. 그 사람을 위한 인증서 & key pair
- creates her own private key using CSR(Certificate Signing Req) to admin
- admin takes CSR and send it to his CA server
- hers certificate signed by CA server using CA servers private key/root certificate
- now she has her own valid pair of certificate and key
(use to access to cluster)
* certificate는 validated pariod가 있고, 이게 종료되면 다시 동일한 CSR 절차를 통해 CA로부터 인증서를 승인받는다.
- 그래서 계속 certificate file을 순환시키고 CA와 통신하는데 CA Server가 뭐고, k8s의 어디에 셋업이 될까?
- 여러 인증서를 발급하다보니 안전한 환경에 있어야 한다.
- 인증서들은 master node에 있고, 이건 곧 CA Server다.
- 그런데 관리하는 인증서가 많아진다면? 매번 많은 작업이 요구된다.
- 그래서 K8s는 자체적인 Certificate API를 제공한다.
* Certificate API
CSR을 k8s로 direct하게 보낼 수 있다.
admin이 master node에 로긴하는 대신 CSR을 받으면, CSR이라는 K8s API object를 생성한다.
object가 생성되면, 모든 CSR은 cluster의 admin에 보이게 된다.
- 그럼 CSR은 k8s cmd를 통해 Review되고, Approved 된다.
- 그리고 인증서는 유저와 공유된다.
- 다시 절차를 정리해보자
1) A user creates a key
# openssl genrsa -out jane.key 2048
2) generates CSR using the key with her name in it.
3) sends CSR to admin
# openssl req -new -key jane.key -subj "/CN=jane" -out jane.csr
4) admin create a CSR object
jane.csr -> object
5) CSR object의 definition file엔 key를 일일이 입력할 필요 없고,
base64 명령어를 통해 jane.csr의 key를 jane-csr.yaml의 spec>request:에 복붙 하면 된다.
# cat jane.csr | base64
6) CSR object를 조회해본다
# kubectl get csr
7) new Request / approved Req를 확인해본다
# kubectl certificate approve jane
8) certificate는 YAML file으로도 확인할 수 있다. (base64)
# kubectl get csr jane -o yaml
그럼 생성은 다 됐으니, 어떻게 동작할까?
kube-api server, scheduler, controller manager이 certificate와 모두 관련있다.
그리고, 관련된 동작은 controller manager에 의해 캐리된다.
controller mgr에 csr-appriving, csr-signing 이라는 task가 있는데, 다음 강의에서 더 자세히 알아보자.
출처: Udemy 사이트의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의