profile image

L o a d i n g . . .

API 서버 배경 - 클러스터 안 통신은 API 서버를 통한다

API 서버가 가지고 있는 경로는 API 서버에 접근하여 알 수 있거나, 쿠버네티스 공식 문서 API 문서 에도 나와있다.
아래 명령어를 통해 API 서버의 주소를 알 수 있다.

$ kubernetes cluster-info

Kubenetes master is running at https://192.168.99.100:8443

서버는 https 를 사용하여, 인증이 필요하다. 이 때, kubectl proxy 명령을 이용할 수 있다. kubectl proxy 는 프록시 서버를 실행해, 로컬 컴퓨터에서 HTTP 연결을 수신하고, 이 연결을 관리하면서 API 서버로 전달하기 때문에, 요청할 때마다 인증 토큰을 전달할 필요가 없다. 

$ kubectl proxy
Starting to serve on 127.0.0.1:8001
$ curl http://localhost:8001
{
  "paths": [
    "/api",
    "/api/v1",
    "/apis",
    "/apis/apps",
    "/apis/apps/v1beta1",
    ...
    "/apis/batch",
    "/apis/batch/v1",
    "/apis/batch/v2alpha1",
    ...

API Groups

쿠버네티스 안 모든 Resource 들은 api 그룹 중 하나로 그룹화되어 있다. 
가장 top 레벨에는 core api 그룹과 named apis 그룹이 있다. 

core api 그룹은 /api/v1 으로 시작하며, 대부분의 리소스 타입을 여기서 확인할 수 있다. 
namespaces, pods, nodes, binidngs, PV, PVC, configmaps, secrets, services, rc, evenets, endpoints 의 리소스를 확인할 수 있다.

named api 그룹은 /apis 로 시작한다. 추후의 추가될 k8s 리소스 타입은 여기에 추가된다고 한다. 

API 그룹 아래에 Resource 들이 있으며, 각 resource들은 각 resource 들과 관련된 action을 관련한 verbs 들이 있다.

verbs(동사)는 HTTP 메소드와 아래와 같이 매핑이 된다. 

HTTP methodVerb for single resourceVerb for collection

GET, HEAD get (and watch for watching) list (and watch)
POST create n/a
PUT update n/a
PATCH patch n/a
DELETE delete deletecollection

이 내용은 다음에 나올 인가 Authoriazation 관련된 내용이니 숙지하자.


인가 Authoriazation - 무엇을 할 수 있는가?

 

 


참고

쿠버네티스 인 액션(마르코 룩샤) 12장

아래 쿠버네티스 공식 문서에서 쿠버네티스 api 를 확인할 수 있다.
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#-strong-api-groups-strong-

 

Kubernetes API Reference Docs

 

kubernetes.io

API - pod
API - Pod

 

복사했습니다!