CKA 준비과정 - Security (5) / API Groups
앞서 학습을 하면서, 클러스터 내에서 어떤 작업을 하든 모든 명령은 kube-apiserver를 타고 간다는 것을 알았다.
쿠버네티스 API는 사용 목적에 따라 그룹화된다.
/version : 클러스터 버전 확인
/metrics, healthz : 클러스터 상태 모니터링
/logs : 다른 로그와 통합할 때 사용
위 4 그룹을 제외하고, /api, /apis가 중요하기 때문에 별개로 학습한다.
해당 api는 core 그룹과 named 그룹 2가지로 분류된다.
여기서 핵심적인 기능들은 core 그룹에 속한다.
namespaces, pods, nodes 등 중요 리소스들이 여기에 들어간다.
named 그룹은 좀더 조직화 되어있고, 새로 추가되는 기능들은 named 그룹에 속하게 된다.
API Groups > Resources > Verbs 순으로 조직화가 되어 있음을 알 수 있다.
쿠버네티스의 공식 문서 중 API 가이드 페이지를 통해, 각 개체에 대한 API 그룹을 알 수 있다.
또한 쿠버네티스 클러스터 내에서도 api 그룹 리스트를 확인할 수 있다.
curl 명령어로 kube-apiserver의 6443 포트에 접근하면 사용 가능한 API 그룹 리스트가 출력된다.
추가로 /apis 에 접근하게 되면 apis 그룹 내 리소스 그룹까지 확인할 수 있다.
다만 해당 방법으로는 api에 직접 접근할수는 없다. apiVersion 과 같은 단순 정보 획득 외엔 불가하다.
이는 보안상으로 막혀있기 대문으로 인증서를 통해 kube-apiserver에게 인증을 받아야 한다.
다른 방법으로 api그룹을 확인하는 방법은, kubectl proxy 클라이언트를 활용한다.
kubectl proxy
curl localhost:8001
kubectl proxy 명령어로 8001 포트에서 동작하는 프록시 서비스를 실행한다.
kubectl 이 kubeconfig 의 인증을 자동으로 활용하기 때문에 별도로 인증 방법을 지정할 필요가 없다.
다음으로 8001포트에 접근하여 proxy 서비스에 접속한다. 접속하면 사용 가능한 모든 api가 출력된다.
이때 주의할 점은, kube-proxy와 kubeclt proxy가 다르다는 것을 인지해야 한다.
kube-proxy는 파드와 서비스 간 연결을 가능하게 하는 서비스이다.
kubectl proxy 명령어는 kubectl 이 kube-apiserver에 접근할 수 있도록 하는 명령어이다.