Kubernetes

Kubernetes PKI Certificate

JungGwig 2019. 10. 2. 13:12

Kubernetes는 TLS 위에 인증을 위해 PKI 인증서가 필요하다. kubeadm으로 cluster를 구축하였다면, 클러스터에 필요한 인증서는 자동으로 생성된다. ( /etc/kubernetes/pki )

 

클러스터에서 인증서 이용

- kubelet에서 API Server 인증서를 인증시 사용하는 클라이언트 인증서

- API 서버 엔드포인트를 위한 서버 인증서

- API 서버에 클러스터 관리자 인증을 위한 클라이언트 인증서

- API 서버에서 kubelet과 통신을 위한 클라이언트 인증서

- API 서버에서 etcd 간의 통신을 위한 클라이언트 인증서

- 컨트롤러 매니저와 API 서버 간의 통신을 위한 클라이언트 인증서 / kubeconfig

- Scheduler와 API Server간 통신을 위한 클라이언트 인중서 / kubeconfig

- front-proxy를 위한 클라이언트와 서버 인증서

 

 

kubectl -> API Server 설정

기본적으로 사용할 수 있는 kubectl은 가장 높은 권한(cluster-admin)으로서 API 서버에 접근할 수 있도록 설정되어 있다. 이러한 설정은 ~/.kube/config에서 확일 할 수 있다. 

 

 

REST API에 직접 접근

[ curl, wget, web browser -> REST API ]

 

  • kubectl을 proxy 모드로 실행
    • 권장하는 접근 방식
    • 저장된 apiserver 위치를 사용
    • self-signed 인증서를 사용하여 apiserver의 identity를 검증. MITM은 불가능
    • apiserver 인증
    • 클라이언트 측의 지능형 load balancing과 failover가 될 것이다.
  • 직접적으로 http client에 위치정보와 인증정보를 제공
    • 대안적인 접근 방식
    • proxy 사용과 혼동되는 몇 가지 타입의 클라이언트 code들과 같이 동작한다.
    • MITM로부터 보호를 위해 root 인증서를 사용자의 브라우저로 import해야 한다.