๋ชฉ์ฐจ
ย API Groups
์ฟ ๋ฒ๋คํฐ์ค API๋ ๋ชฉ์ ์ ๋ฐ๋ผ ์ฌ๋ฌ ๊ทธ๋ฃน์ผ๋ก ๋๋์ด ์์ผ๋ฉฐ, ๊ฐ๊ฐ์ ๊ทธ๋ฃน์ ํน์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
โข
/version - ํด๋ฌ์คํฐ์ ๋ฒ์ ์ ์กฐํ
โข
/healthz - ํด๋ฌ์คํฐ์ health๋ฅผ ๋ชจ๋ํฐ๋ง
โข
/metrics - ํด๋ฌ์คํฐ์ ๋ฉํธ๋ฆญ์ ์์งํ๊ณ ํ์ธ
โข
/logs - ์๋ํํฐ ๋ก๊น
์ ํ๋ฆฌ์ผ์ด์
๊ณผ ํตํฉ
API๋ ํด๋ฌ์คํฐ ๊ธฐ๋ฅ์ ์ฑ
์์ง๋ ์ญํ ์ ๋ง์ถฐ ๋ ๊ฐ์ง๋ก ๋ถ๋ฅํ ์ ์๋ค: Core & Named
ย Core Group
์ฝ์ด ๊ทธ๋ฃน์๋ Kubernetes์ ๋ชจ๋ ํต์ฌ ๊ธฐ๋ฅ์ด ํฌํจ๋์ด ์๋ค.
ย Named Group
๋ช
๋ช
๊ทธ๋ฃน์ ๋ ์กฐ์งํ๋ ํํ๋ก ์ ๊ณต๋๋ฉฐ, ์๋ก์ด ๊ธฐ๋ฅ์ ๋ช
๋ช
๊ทธ๋ฃน์ ํตํด ์ ๊ณต๋๋ค. ๊ฐ API ๊ทธ๋ฃน์๋ ์ฌ๋ฌ ๋ฆฌ์์ค๊ฐ ์์ผ๋ฉฐ, ์ด๋ฌํ ๋ฆฌ์์ค์๋ ํน์ ์์
์ ์ํํ ์ ์๋ ์์
๋ค์ด ์ฐ๊ฒฐ๋์ด ์๋ค. ์ด๋ฌํ ์์
๋ค์ Verbs๋ผ๊ณ ํ๋ฉฐ, Kubernetes API๋ฅผ ํตํด ๋ฆฌ์์ค๋ฅผ ์กฐ์ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์ฑ ๊ทธ๋ฃน ๋ด์ ๋ฐฐํฌ ๋ฆฌ์์ค์ ๋ํ Verbs๋ ๋ค์๊ณผ ๊ฐ๋ค:
โข
list, get, create, delete, update, watch
ย Access API Server
ํด๋ฌ์คํฐ์ API ์๋ฒ์ ์ ๊ทผํ๋ฉด ์ฌ์ฉ ๊ฐ๋ฅํ API ๊ทธ๋ฃน ๋ฆฌ์คํธ๋ฅผ ์ป์ ์ ์๋ค
curl https://localhost:6443 -k
{
"path": [
"/api",
"/api/v1",
"/apis",
"/apis/",
"/healthz",
...
}
Bash
๋ณต์ฌ
Named API Group ๋ด์์ ์ง์๋๋ ๋ชจ๋ ๋ฆฌ์์ค ๊ทธ๋ฃน์ ํ์ธํ ์๋ ์๋ค.
curl https://localhost:6443/apis -k | grep "name"
{
...
"name": "extensions",
"name": "apps",
"name": "events.k8s.io",
"name": "authentication.k8s.io",
"name": "authorization.k8s.io",
...
}
Bash
๋ณต์ฌ
ย With Certificates
์ด๋ curl์ ํตํ API์ ๋ํ ์ง์ ์ ์ธ ์ก์ธ์ค๋ apiVersion ๊ฐ์ ํน์ API๋ฅผ ์ ์ธํ๊ณค ์ก์ธ์ค๋์ง ์๋๋ค. ์ธ์ฆ์ ํ์ผ์ ํตํด API์ ๋ํ ์ธ์ฆ์ ๊ฑฐ์ณ์ผ ์ก์ธ์ค๊ฐ ๊ฐ๋ฅํ๋ค.
curl https://localhost:6443 -k \
--key admin.key --cert admin.crt --cacert ca.crt
Bash
๋ณต์ฌ
ย kubectl proxy
๋ค๋ฅธ ๋ฐฉ๋ฒ์ kubectl proxy client๋ฅผ ์์ํ๋ ๊ฒ์ด๋ค. kubectl proxy ๋ช
๋ น์ ๋ก์ปฌ์์ 8001 ํฌํธ์ ํ๋ก์ ์๋น์ค๋ฅผ ์์ํ๋ฉฐ, kubeconfig ํ์ผ์ ์๊ฒฉ ์ฆ๋ช
๊ณผ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ฌ์คํฐ์ ์ ๊ทผํ๋ค. ์ด๋ฅผ ํตํด curl ๋ช
๋ น์์ ์ธ์ฆ์๋ฅผ ์ง์ ํ ํ์๊ฐ ์๋ค.
# kubectl proxy client ์์
$ kubectl proxy
Starting to serve on 127.0.0.1:8001
# ์ธ์ฆ์ ๋ช
์ํ ํ์ ์์ด ์ก์ธ์ค ๊ฐ๋ฅ
$ curl https://localhost:6443 -k
{
"path": [
"/api",
"/api/v1",
"/apis",
"/apis/",
"/healthz",
...
}
Bash
๋ณต์ฌ
์ฐธ๊ณ : kube proxy โ kubectl proxy
โข
kube proxy: ํด๋ฌ์คํฐ Pod์ Service ๊ฐ์ ๋คํธ์ํฌ ํธ๋ํฝ์ ๊ด๋ฆฌํ๋ Component
โข
kubectl proxy: HTTP Proxy ์๋น์ค๋ก, kubectl ์ด kube-apiserver์ ์ ๊ทผ ๊ฐ๋ฅํ๊ฒ ํจ
ย Summary
Kubernetes๋ ๋ฆฌ์์ค๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด ๋ค์ํ API ๊ทธ๋ฃน์ผ๋ก ๋ฆฌ์์ค๋ฅผ ๋ถ๋ฅํ๋ค.
API Group
โข
Core API Group: Kubernetes์ ๊ธฐ๋ณธ ๋ฆฌ์์ค ํฌํจ
โข
Named API Group: ํน์ ๊ธฐ๋ฅ์ด๋ ์๋น์ค์ ๋ง์ถฐ ๊ตฌ์ฑ๋ ๋ฆฌ์์ค ํฌํจ
Resources & Verbs
API Group ๋ด์๋ ๋ค์ํ ๋ฆฌ์์ค๊ฐ ์กด์ฌํ๋ฉฐ, ๊ฐ ๋ฆฌ์์ค๋ CRUD ์์
์ ํฌํจํ ์ฌ๋ฌ ๋์(Verbs)์ ์ํํ ์ ์๋ค.