[k8s] proxy์™€ Rest API

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ œ์–ดํ•  ์ผ์ด ์žˆ๋‹ค๋ฉด ํ”ํžˆ kubectl ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณค ํ•œ๋‹ค.

๊ทผ๋ฐ ์‚ฌ์‹ค ์ €๊ฑด ๊ทธ๋ƒฅ API๋ฅผ ๋Œ€์‹  ์ด์ฃผ๋Š” ์—ญํ• ์ผ ๋ฟ์ด๊ณ , ์‹ค์ œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ œ์–ด๋Š” HTTP Restful API๋ฅผ ํ†ตํ•ด์„œ ์ด๋ฃจ์–ด์ง„๋‹ค.

์ด๋ ‡๊ฒŒ ๋ง์ด๋‹ค.
kubectl์€ ์ธ์ฆ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ๋‹ค๊ฐ€ api๋ฅผ ์ ๋‹นํžˆ ๊พธ๋ฉฐ์„œ ์˜๊ณ  ์‘๋‹ต์„ ์ ๋‹นํžˆ ๋ฟŒ๋ ค์ฃผ๋Š” ์šฉ๋„์— ์ง€๋‚˜์ง€ ์•Š๋Š”๋‹ค.




ํ”„๋ก์‹œ ์—ด์–ด๋ณด๊ธฐ

k8s api์— ๊ฐ„ํŽธํ•˜๊ฒŒ ์ ‘๊ทผํ•ด์„œ ์‚ฌ์šฉ์„ ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด, ์ž์ฒด์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ํ”„๋ก์‹œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

kubectl proxy

์ด ๊ธฐ๋Šฅ์€ ์ฆ‰์‹œ ์ธ์ฆ ์—†์ด ์ ‘๊ทผํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋ก์‹œ ์„œ๋ฒ„๋ฅผ ์—ด์–ด์ค€๋‹ค.
๋‹ค๋งŒ, ๋ณด์•ˆ์ƒ์˜ ์ด์œ ์—์„œ์ธ์ง€ localhost ๋ฃจํ”„๋ฐฑ์—์„œ๋งŒ ๋™์ž‘ํ•˜๊ฒŒ ์—ด์–ด์ฃผ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ”๋กœ ์ฐ”๋Ÿฌ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ๋ณธ ๊ฒฝ๋กœ๋กœ ์ฐŒ๋ฅด๋ฉด ์กด์žฌํ•˜๋Š” ๋ชจ๋“  api์˜ ๊ฒฝ๋กœ๋ฅผ ๋ฟŒ๋ ค์ค€๋‹ค.


์ด๊ฑฐ๋Š” ๋ฒ„์ „ ํ™•์ธ์ด๊ณ 


์ด๊ฑฐ๋Š” pod list ์กฐํšŒ๋‹ค.





swagger ๋ฝ‘์•„๋ณด๊ธฐ

k8s api ์„œ๋ฒ„๋Š” ์˜์™ธ๋กœ api์— ๋Œ€ํ•œ openapi ๊ทœ๊ฒฉ๋„ ๋ฐ”๋กœ ์ œ๊ณต์„ ํ•œ๋‹ค.
๋ฌธ์„œ ์„œ๋น™๊นŒ์ง€ ํ•ด์ฃผ์ง€๋Š” ์•Š๊ณ , ์ด๋ ‡๊ฒŒ openapi ํŒŒ์ผ ๋ฝ‘์•„์„œ

kubectl get --raw /openapi/v2  > k8s-openapi-v2.json

docker ๊ฐ™์€๊ฑธ ํ™œ์šฉํ•ด์„œ ์Šค์›จ๊ฑฐ ์„œ๋ฒ„๋ฅผ ๋„์šฐ๋ฉด

docker run \
  -v $PWD/k8s-openapi-v2.json:/app/swagger.json \
  -p 8081:8080 \
  swaggerapi/swagger-ui

๋ฐ”๋กœ ํ™•์ธํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ ‡๋‹ค.



์ฐธ์กฐ
https://kubernetes.io/docs/reference/kubectl/generated/kubectl_proxy/
https://trylhc.tistory.com/entry/Kubectl-%EB%AA%85%EB%A0%B9%EC%96%B4%EC%9D%98-Proxy-Port-Forward-%EA%B8%B0%EB%8A%A5
https://kubernetes.io/docs/concepts/cluster-administration/proxies/
https://stackoverflow.com/questions/63070522/how-to-show-swagger-ui-for-kubernetes-api