Devops 엔지니어 솔렐레 IT

[도커/쿠버네티스 기초] Kubernetes Accessing API 본문

Devops 엔지니어가 알려주는 클라우드 지식/Docker, Kubernetes

[도커/쿠버네티스 기초] Kubernetes Accessing API

솔렐레_ 2020. 11. 29. 09:00


Master Node에 쿠버 네티스 API 서버가 있는데 이 API 서버를 통해서 자원을 만들거나 조회를 할 수 있습니다. 이는 
User Account와 Service Account로 구분하여 접근할 수 있습니다.

USER 입장에서 API 서버에 접근을 하는 방법으로 User Account라고 합니다. 외부에서 API 서버로 접근을 하려면 인증서를 가지고 있는 사람만 https로 보안 접근을 할 수 있습니다. 하지만 Proxy를 열어주었다면 인증서 없이 API 서버로 접근이 가능합니다. 또한 외부에 kubectl을 설치하여 config 기능을 사용하면 여러 노드를 간단한 명령어를 통해 컨트롤할 수 있고 해당 클러스터에 연결된 Pod 정보를 가져올 수 있습니다.

Pod 입장에서 API 서버에 마음대로 접근이 불가합니다. 따라서 쿠버네티스에서는 Service Account를 통해 접근이 가능합니다. Service Account는 외부에서도 접근하여 사용이 가능합니다.

1. Authentication
쿠버네티스 API에 접근하는 방법은 X509 Certs, kubectl, ServiceAccount 이렇게 세 가지가 있습니다.
 1) X509 Certs
kubeconfig 내에 CA crt, Client key, Client crt 인증서 내용이 있고 이를 User가 Client key, Client crt를 통해 인증하여 https 접근을 할 수 있습니다. 

 2) kubectl
외부 서버에 kubectl을 설치해서 각 클러스터에서 가지고 있는 kubeconfig를 나의 kubectl 에도 가지고 있어야 하며 이를 통해서 원하는 클러스터의 자원을 접근하여 조회를 할 수 있습니다. kubeconfig 안에는 clusters, users, contexts 내용이 들어가 있습니다.

 3) ServiceAccount
Kubernetes API 서버가 있고 그 안에 Namespace를 만들게 되면 default라는 ServiceAccount가 자동으로 생성이 됩니다. ServiceAccount 에는 Sevret이 포함되어 있는데 CA crt와 토큰 정보를 가지고 있습니다. Pod를 만들면 이 ServiceAccount 와 연결이 되고 Pod는 토큰 값을 통해서 API 서버에 접근을 할 수 있습니다. 사용자 또한 토큰 값을 통해 API 서버에 접근이 가능합니다.

 

2. Authorization
- RBAC
역할 기반으로 권한을 부여하는 방법으로 ServiceAccount에 Role, RoleBinding를 부여할 수 있습니다. 이를 통해 Namespace 내에 있는 Pod, Svc에 접근할 수 있고 클러스터 내에 있는 Node, PV, Namespace에 접근할 수도 있습니다. Role은 Read, Write 등의 권한을 줄 수 있고 여러 개의 권한을 줄 수도 있습니다. RoleBinding은 RoleServiceAccount를 연결해주는 역할을 합니다. Role은 하나만 지정할 수 있고 ServiceAccount는 여러 개를 지정할 수 있습니다. 따라서 Namespace를 관리할 때 Role, RoleBinding을 여러 개 만들어서 관리할 수 있습니다.
클러스터 자원에 접근하기 위해서는 ClursterRole과 ClursterRoleBinding 이 만들어져야 합니다. ClursterRole은 클러스터 단위의 오브젝트를 지정해서 사용하는 것으로 ClursterRoleBinding 을 통해 ServiceAccount와 연결할 수 있습니다. 또한 RoleBinding은 ClursterRole과 연결할 수도 있는데 이를 사용하는 이유는 전역으로 두어 여러 Namespace에서 동일한 Role을 사용할 경우 ClursterRole을 이용해서 한 번에 관리하기 위해서 사용합니다.

Comments