Information in this document may be out of date
This document has an older update date than the original, so the information it contains may be out of date. If you're able to read English, see the English version for the most up-to-date information: Kubelet authentication/authorization
Kubelet ์ธ์ฆ/์ธ๊ฐ
๊ฐ์
kubelet์ HTTPS ์๋ํฌ์ธํธ๋ ๋ค์ํ ๋ฏผ๊ฐ๋์ ๋ฐ์ดํฐ์ ๋ํ ์ ๊ทผ์ ์ ๊ณตํ๋ API๋ฅผ ๋ ธ์ถํ๋ฉฐ, ๋ ธ๋์ ์ปจํ ์ด๋ ๋ด์์ ๋ค์ํ ์์ค์ ๊ถํ์ผ๋ก ์์ ์ ์ํํ ์ ์๋๋ก ํ์ฉํ๋ค.
์ด ๋ฌธ์๋ kubelet์ HTTPS ์๋ํฌ์ธํธ์ ๋ํ ์ ๊ทผ์ ์ธ์ฆํ๊ณ ์ธ๊ฐํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ค.
Kubelet ์ธ์ฆ
๊ธฐ๋ณธ์ ์ผ๋ก, ๋ค๋ฅธ ๊ตฌ์ฑ์ ์ธ์ฆ ๋ฐฉ๋ฒ์ ์ํด ๊ฑฐ๋ถ๋์ง ์์ kubelet์ HTTPS ์๋ํฌ์ธํธ์ ๋ํ ์์ฒญ์
์ต๋ช
์ ์์ฒญ์ผ๋ก ์ฒ๋ฆฌ๋๋ฉฐ, system:anonymous
์ ์ฌ์ฉ์ ์ด๋ฆ๊ณผ system:unauthenticated
์ ๊ทธ๋ฃน์ด ๋ถ์ฌ๋๋ค.
์ต๋ช
์ ์ ๊ทผ์ ๋นํ์ฑํํ๊ณ ์ธ์ฆ๋์ง ์์ ์์ฒญ์ 401 Unauthorized
์๋ต์ ๋ณด๋ด๋ ค๋ฉด ์๋๋ฅผ ์ฐธ๊ณ ํ๋ค.
--anonymous-auth=false
ํ๋๊ทธ๋ก kubelet์ ์์
kubelet์ HTTPS ์๋ํฌ์ธํธ์ ๋ํ X509 ํด๋ผ์ด์ธํธ ์ธ์ฆ์ ์ธ์ฆ์ ํ์ฑํํ๋ ค๋ฉด ์๋๋ฅผ ์ฐธ๊ณ ํ๋ค.
--client-ca-file
ํ๋๊ทธ๋ก kubelet์ ์์ํ๋ฉด ํด๋ผ์ด์ธํธ ์ธ์ฆ์๋ฅผ ํ์ธํ ์ ์๋ CA ๋ฒ๋ค์ ์ ๊ณต--kubelet-client-certificate
๋ฐ--kubelet-client-key
ํ๋๊ทธ๋ก apiserver๋ฅผ ์์- ์์ธํ ๋ด์ฉ์ apiserver ์ธ์ฆ ๋ฌธ์๋ฅผ ์ฐธ๊ณ
API bearer ํ ํฐ(์๋น์ค ๊ณ์ ํ ํฐ ํฌํจ)์ kubelet์ HTTPS ์๋ํฌ์ธํธ ์ธ์ฆ์ ์ฌ์ฉํ๋ ค๋ฉด ์๋๋ฅผ ์ฐธ๊ณ ํ๋ค.
- API ์๋ฒ์์
authentication.k8s.io/v1beta1
API ๊ทธ๋ฃน์ด ์ฌ์ฉ ๊ฐ๋ฅํ์ง ํ์ธ --authentication-token-webhook
๋ฐ--kubeconfig
ํ๋๊ทธ๋ก kubelet์ ์์- kubelet์ ๊ตฌ์ฑ๋ API ์๋ฒ์
TokenReview
API๋ฅผ ํธ์ถํ์ฌ bearer ํ ํฐ์์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๊ฒฐ์
Kubelet ์น์ธ
์ฑ๊ณต์ ์ผ๋ก ์ธ์ฆ๋ ๋ชจ๋ ์์ฒญ(์ต๋ช
์์ฒญ ํฌํจ)์ด ์น์ธ๋๋ค. ๊ธฐ๋ณธ ์ธ๊ฐ ๋ชจ๋๋ ๋ชจ๋ ์์ฒญ์ ํ์ฉํ๋ AlwaysAllow
์ด๋ค.
kubelet API์ ๋ํ ์ ๊ทผ์ ์ธ๋ถํํ๋ ๋ฐ๋ ๋ค์ํ ์ด์ ๊ฐ ์๋ค.
- ์ต๋ช ์ธ์ฆ์ ์ฌ์ฉํ ์ ์์ง๋ง, ์ต๋ช ์ฌ์ฉ์์ kubelet API ํธ์ถ ๊ธฐ๋ฅ์ ์ ํ๋์ด์ผ ํจ
- bearer ํ ํฐ ์ธ์ฆ์ ์ฌ์ฉํ ์ ์์ง๋ง, ์์์ API ์ฌ์ฉ์(API ๊ณ์ )์ kubelet API ํธ์ถ ๊ธฐ๋ฅ์ ์ ํ๋์ด์ผ ํจ
- ํด๋ผ์ด์ธํธ ์ธ์ฆ์ ์ฌ์ฉํ ์ ์์ง๋ง, ๊ตฌ์ฑ๋ CA์์ ์๋ช ํ ์ผ๋ถ ํด๋ผ์ด์ธํธ ์ธ์ฆ์๋ง kubelet API๋ฅผ ์ฌ์ฉํ๋๋ก ํ์ฉํด์ผ ํจ
kubelet API์ ๋ํ ์ ๊ทผ์ ์ธ๋ถํํ๋ ค๋ฉด API ์๋ฒ์ ๊ถํ์ ์์ํ๋ค.
authorization.k8s.io/v1beta1
API ๊ทธ๋ฃน์ด API ์๋ฒ์์ ์ฌ์ฉ ๊ฐ๋ฅํ์ง ํ์ธ--authorization-mode=Webhook
๋ฐ--kubeconfig
ํ๋๊ทธ๋ก kubelet์ ์์- kubelet์ ๊ตฌ์ฑ๋ API ์๋ฒ์
SubjectAccessReview
API๋ฅผ ํธ์ถํ์ฌ ๊ฐ๊ฐ์ ์์ฒญ์ด ์น์ธ๋์๋์ง ์ฌ๋ถ๋ฅผ ํ์ธ
kubelet์ API ์์ฒญ์ apiserver์ ๋์ผํ ์์ฒญ ์์ฑ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ์น์ธํ๋ค.
๋์ฌ๋ ๋ค์ด์ค๋ ์์ฒญ์ HTTP ๋์ฌ๋ก๋ถํฐ ๊ฒฐ์ ๋๋ค.
HTTP ๋์ฌ | ์์ฒญ ๋์ฌ |
---|---|
POST | create |
GET, HEAD | get |
PUT | update |
PATCH | patch |
DELETE | delete |
๋ฆฌ์์ค ๋ฐ ํ์ ๋ฆฌ์์ค๋ ๋ค์ด์ค๋ ์์ฒญ์ ๊ฒฝ๋ก๋ก๋ถํฐ ๊ฒฐ์ ๋๋ค.
Kubelet API | ๋ฆฌ์์ค | ํ์ ๋ฆฌ์์ค |
---|---|---|
/stats/* | nodes | stats |
/metrics/* | nodes | metrics |
/logs/* | nodes | log |
/spec/* | nodes | spec |
all others | nodes | proxy |
๋ค์์คํ์ด์ค์ API ๊ทธ๋ฃน ์์ฑ์ ํญ์ ๋น ๋ฌธ์์ด์ด๋ฉฐ,
๋ฆฌ์์ค ์ด๋ฆ์ ํญ์ kubelet์ Node
API ์ค๋ธ์ ํธ ์ด๋ฆ์ด๋ค.
์ด ๋ชจ๋๋ก ์คํํ ๋, --kubelet-client-certificate
๋ฐ --kubelet-client-key
ํ๋๊ทธ๋ก ์๋ณ๋ ์ฌ์ฉ์์๊ฒ
๋ค์ ์์ฑ์ ๋ํ ๊ถํ์ด ์๋์ง ํ์ธํ๋ค.
- verb=*, resource=nodes, subresource=proxy
- verb=*, resource=nodes, subresource=stats
- verb=*, resource=nodes, subresource=log
- verb=*, resource=nodes, subresource=spec
- verb=*, resource=nodes, subresource=metrics