반응형

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 강의
  

반응형

+ Recent posts