๋์๋ณด๋ ๋ฒ์ : 1.1
์ฟ ๋ฒ๋คํฐ์ค ๋ฒ์ : 1.3.6
์ด์ ์ฒด์ : ubuntu14.04
์ด๋ ๋ฒ์ :1.6.2
http://kubernetes.io/docs/getting-started-guides/ubuntu/ ๋ก kubernetes ๋ฐ ๋์๋ณด๋ ๋ฐฐํฌ
๋์๋ณด๋์ ์ก์ธ์คํ ์ ์์ต๋๋ค. http://master-ip :8080/
https://master-ip :6443/์ ์ก์ธ์คํ๋ฉด "Unauthorized"๊ฐ ๋ฐํ๋ฉ๋๋ค.
์์?
๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๊ฐ๊ฐ ์์ง ๊ณ ๋ คํ์ง ์์์ ์๋ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
https://github.com/kubernetes/dashboard/issues/1116
ํด๋ฌ์คํฐ๊ฐ HTTPS๋ฅผ ํตํ ๋ณด์ ํต์ ์ ์ํด ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ฌ๊ธฐ์ 2๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
Unauthorized
๋ฅผ ๋ฐํํฉ๋๋ค.ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ์ ๊ณตํ ์ ์๊ธฐ ๋๋ฌธ์ curl๋ก ์ฝ๊ฒ ๊ถํ์ ๋ถ์ฌํ ์ ์์ต๋๋ค.
curl https://<MASTER_IP>/version --cacert ca.crt --cert admin.crt --key admin.key
curl https://<MASTER_IP>/version --header "Authorization: Bearer $TOKEN"
๋ธ๋ผ์ฐ์ ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ทธ๋ณด๋ค ๋ ๋ณต์กํฉ๋๋ค. ๋์๋ณด๋์ ์ก์ธ์คํ๋ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
<MASTER_IP>:<NODE_PORT>
๋ก ์ก์ธ์คํ ์ ์์ต๋๋ค. (์์ ํ์ง ์์)kubectl proxy
๋ฅผ ์ฌ์ฉํ๊ณ http://127.0.0.1:8001/
๋ก ์ด๋ํฉ๋๋ค(๋ฐ์ธ๋ ์ฃผ์๋ ๋ณ๊ฒฝ ๊ฐ๋ฅ). kubeconfig
ํ์ผ์ด ๋ณด์ ์ฐ๊ฒฐ์ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ SSL ํฐ๋๋ง์ ์ฒ๋ฆฌํฉ๋๋ค.๋ ๋ฒ์งธ ์ต์ ์ ๋ํด. ํ์ด์ดํญ์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ์ํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
Your Certificates
๋ก ๊ฐ์ ธ์ต๋๋ค. crt
๋ฐ key
2๊ฐ์ ๋ณ๋ ์ธ์ฆ์๊ฐ ์๋ ๊ฒฝ์ฐ ๋ธ๋ผ์ฐ์ ์ธ์ฆ์ ์ ์ฅ์๋ก ์ง์ ๊ฐ์ ธ์ค๊ธฐ ์ฝ๊ธฐ ๋๋ฌธ์ PFX/PKCS#12
์ธ์ฆ์๋ก ๋ณํฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค. ์ด ํ์ด์ง ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ openssl
๋ฅผ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ์ํํ ์ ์์ต๋๋ค.์ธ์ฆ์๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์์ฑ๋๋ฉด ๋ค์์ HTTPS๋ฅผ ํตํด API ์๋ฒ์ ์ก์ธ์คํ๋ ค๊ณ ํ ๋ ํ์
์ด ํ์๋ฉ๋๋ค. ๋ธ๋ผ์ฐ์ ์บ์๋ฅผ ์ง์์ผ ํ ์๋ ์์ต๋๋ค.
์ด์ ๋์๋ณด๋๊ฐ โโํ์๋์ด์ผ ํฉ๋๋ค. :)
๋ธ๋ผ์ฐ์ ์์ ๋ฌด๊ธฐ๋ช ํ ํฐ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. API ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ธฐ ์ ์ HTTP ํค๋์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด ์ฝ๊ฐ์ ์๋ ์์ ์ด ํ์ํ ์ ์์ต๋๋ค.
๋ฌผ๋ก ์ฌ์ฉ์์๊ฒ ๊ถํ์ ๋ถ์ฌํ๋ ๋ค๋ฅธ ์ต์ ์ด ์์ต๋๋ค. Kubernetes๋ ABAC, RBAC ๋ฑ์ ์ง์ํฉ๋๋ค.
๋ธ๋ผ์ฐ์ ๋ ๋ณด์ API ์๋ฒ ํฌํธ์ ์ ๊ทผํ ๋ ์ธ์ฆ์ด ํ์ํฉ๋๋ค. https://github.com/kubernetes/kubernetes/issues/31665#issuecomment -247342834์์ ์ ์ ์๋ฏ์ด ์ธ์ฆ์ ๊ธฐ๋ฐ ์ธ์ฆ์ผ๋ก ์ํํ ์ ์์ต๋๋ค.
ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ์ ๊ฒฝ์ฐ ๋ธ๋ผ์ฐ์ ๋ ์์ฒญ๊ณผ ํจ๊ป ์ ๋ฌ์ ํ ํฐ์ ์๋์ผ๋ก ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
๋์๋ณด๋๋ ์ธ์ฆ ์๊ฒฉ ์ฆ๋ช
์ ์ถ๊ฐํ๊ณ ํ๋ก์๋ฅผ ํตํด ๋ก์ปฌ๋ก ๋์๋ณด๋์ ์ก์ธ์คํ ์ ์๋ kubectl proxy
๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํฉ๋๋ค( https://github.com/kubernetes/dashboard#usage ).
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
ํด๋ฌ์คํฐ๊ฐ HTTPS๋ฅผ ํตํ ๋ณด์ ํต์ ์ ์ํด ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ฌ๊ธฐ์ 2๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
Unauthorized
๋ฅผ ๋ฐํํฉ๋๋ค.ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ์ ๊ณตํ ์ ์๊ธฐ ๋๋ฌธ์ curl๋ก ์ฝ๊ฒ ๊ถํ์ ๋ถ์ฌํ ์ ์์ต๋๋ค.
`
curl https://<MASTER_IP>/version --cacert ca.crt --cert admin.crt --key admin.key
curl https://<MASTER_IP>/version --header "Authorization: Bearer $TOKEN"
๋ธ๋ผ์ฐ์ ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ทธ๋ณด๋ค ๋ ๋ณต์กํฉ๋๋ค. ๋์๋ณด๋์ ์ก์ธ์คํ๋ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
<MASTER_IP>:<NODE_PORT>
๋ก ์ก์ธ์คํ ์ ์์ต๋๋ค. (์์ ํ์ง ์์)kubectl proxy
๋ฅผ ์ฌ์ฉํ๊ณhttp://127.0.0.1:8001/
๋ก ์ด๋ํฉ๋๋ค(๋ฐ์ธ๋ ์ฃผ์๋ ๋ณ๊ฒฝ ๊ฐ๋ฅ).kubeconfig
ํ์ผ์ด ๋ณด์ ์ฐ๊ฒฐ์ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ SSL ํฐ๋๋ง์ ์ฒ๋ฆฌํฉ๋๋ค.๋ ๋ฒ์งธ ์ต์ ์ ๋ํด. ํ์ด์ดํญ์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ์ํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
Your Certificates
๋ก ๊ฐ์ ธ์ต๋๋ค.crt
๋ฐkey
2๊ฐ์ ๋ณ๋ ์ธ์ฆ์๊ฐ ์๋ ๊ฒฝ์ฐ ๋ธ๋ผ์ฐ์ ์ธ์ฆ์ ์ ์ฅ์๋ก ์ง์ ๊ฐ์ ธ์ค๊ธฐ ์ฝ๊ธฐ ๋๋ฌธ์PFX/PKCS#12
์ธ์ฆ์๋ก ๋ณํฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค. ์ด ํ์ด์ง ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋openssl
๋ฅผ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ์ํํ ์ ์์ต๋๋ค.์ธ์ฆ์๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์์ฑ๋๋ฉด ๋ค์์ HTTPS๋ฅผ ํตํด API ์๋ฒ์ ์ก์ธ์คํ๋ ค๊ณ ํ ๋ ํ์ ์ด ํ์๋ฉ๋๋ค. ๋ธ๋ผ์ฐ์ ์บ์๋ฅผ ์ง์์ผ ํ ์๋ ์์ต๋๋ค.
์ด์ ๋์๋ณด๋๊ฐ โโํ์๋์ด์ผ ํฉ๋๋ค. :)
๋ธ๋ผ์ฐ์ ์์ ๋ฌด๊ธฐ๋ช ํ ํฐ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. API ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ธฐ ์ ์ HTTP ํค๋์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด ์ฝ๊ฐ์ ์๋ ์์ ์ด ํ์ํ ์ ์์ต๋๋ค.
๋ฌผ๋ก ์ฌ์ฉ์์๊ฒ ๊ถํ์ ๋ถ์ฌํ๋ ๋ค๋ฅธ ์ต์ ์ด ์์ต๋๋ค. Kubernetes๋ ABAC, RBAC ๋ฑ์ ์ง์ํฉ๋๋ค.