• Master Node에는 Kubernats API Server가 존재한다. 이 API 서버를 통해서만 쿠버네티스의 자원을 만들거나 조회할 수 있다. (Worker Node에는 Kubernats API Server 존재 X)
  • kubectl을 통해 CLI로 자원을 조회하거나 만드는 것도 모두 API 서버에 접근하는 것이다.
    • kubectl 사용하면 내부적으로는 쿠버네티스 API 서버와 REST 프로토콜로 통신한다.
    • 내부(master node 자체)에서 접근할 때 사용하는 방법이다.
  • 외부에서 API 서버에 접근하는 방법은 아래와 같다. - 유저 입장에서 API 서버에 접근하는 방법으로, User Account라고 한다.
    • 외부에서 API 서버로 접근하려면 인증서를 가지고 있는 사람만 HTTPS로 보안 접근을 할 수 있다.
      • 만약 kubectl 명령으로 kubectl에 대해 프록시를 열어줬다면 인증서 없이 HTTP로 API 서버로 접근할 수 있다.
    • kubectl은 외부 PC에서도 설치할 수 있는데, config 기능을 활용하면 만약 쿠버네티스 클러스터가 여러 대가 있을 때 간편한 명령을 통해서 내가 접근할 수 있는 클러스터의 연결 상태를 유지할 수 있고, 이 연결이 된 상태에서는 kubectl get 명령으로 클러스터 내부에 있는 파드 정보를 가져올 수 있다.
    • 파드들이 API 서버에 접근하기 위한 Service Account가 있는데, Service Account도 사용 방법을 알면 외부에서 접근하는 방법으로 사용할 수 있다. (밑에 내용 참고)
  • Pod가 API 서버에 마음껏 접근하게 한다면 Pod를 만들기만 하면 누구나 이 Pod를 통해서 API 서버에 접근이 가능하기 때문이다.
  • 이를 해결하기 위해 쿠버네티스에서는 Service Account라고 해서 파드가 API 서버로 접근하는 방법이 있다.
  • 위의 내용들은 모두 쿠버네티스 API 서버에 접근하는 Authentication에 대한 내용이다.
  • 이후 쿠버네티스 API 서버에 접근해도 특정 네임스페이스 안에 파드에 접근할 수 있는지에 대한 여부를 결정하는 권한을 다루는 Authroziation이 있다.
  • 마지막으로 현재는  프록시를 통해 API 서버에 접근하여 Dashboard에 접근하며 로그인도 스킵하고 있는데, 이는 보안적으로 좋지 않은 방법으로 인증서를 가지고 직접 API 서버를 통해 Dashboard에 접근하고 로그인하는 방법에 대해 설명하겠다.

+ Recent posts