Search

[CKA] 40. TLS in Kubernetes

Date
2025/01/13
Category
Devops
Tag
Kubernetes
CKA
Security
๋ชฉ์ฐจ

ย Certificates

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋…ธ๋“œ ๊ฐ„์— ํ†ต์‹ ๊ณผ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ„์˜ ํ†ต์‹ , ๋ชจ๋“  ํ†ต์‹ ์€ ๋ณด์•ˆ์ด ํ•„์š”ํ•˜๊ณ  ์•”ํ˜ธํ™”๋˜์–ด์•ผ ํ•œ๋‹ค.
๋”ฐ๋ผ์„œ ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ์š”๊ตฌ ์‚ฌํ•ญ์€ ์„œ๋ฒ„๊ฐ€ ์„œ๋ฒ„ ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•œ ์„œ๋กœ์˜ ์‹ ์› ํ™•์ธ์ด๋‹ค.
โ€ข
Server Certificates for Servers
โ€ข
Client Certificates for Clients

ย Server Certificates for Servers

Kube-API Server

API Server๋Š” ๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ์™€ ์™ธ๋ถ€ ์‚ฌ์šฉ์ž๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” HTTPS ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋Š” ์„œ๋ฒ„์ด๋ฉฐ, ํด๋ผ์ด์–ธํŠธ์™€์˜ ๋ชจ๋“  ํ†ต์‹ ์„ ๋ณด์•ˆํ•˜๊ธฐ ์œ„ํ•œ ์ธ์ฆ์„œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

ETCD Server

etcd ์„œ๋ฒ„๋Š” ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ž์ฒด์ ์œผ๋กœ ์ธ์ฆ์„œ์™€ ํ‚ค ํŽ˜์–ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

Kubelet Server

kublet์€ kube-apiserver๊ฐ€ ์›Œ์ปค ๋…ธ๋“œ์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ธฐ ์œ„ํ•ด ํ†ต์‹ ํ•˜๋Š” HTTPS API Endpoint๋ฅผ ๋…ธ์ถœํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ธ์ฆ์„œ์™€ ํ‚ค ํŽ˜์–ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
Certification(Public Key)
Private Key
kube-apiserver
apiserver.crt
apiserver.key
etcd server
etcdserver.crt
etcdserver.key
kublet
kubelet.crt
kubelet.key

ย Client Certificates for Clients

To Kube-API Server

kube-apiserver์— ์•ก์„ธ์Šคํ•˜๋Š” ๊ตฌ์„ฑ ์š”์†Œ๋“ค์€ kube-scheduler, kube-controller-manager, kube-proxy์ด๋‹ค. ์ถ”๊ฐ€๋กœ kubectl REST API๋ฅผ ํ†ตํ•ด ์•ก์„ธ์Šคํ•˜๋Š” ๊ด€๋ฆฌ์ž, ์ฆ‰ ์šฐ๋ฆฌ๊ฐ€ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ kube-apiserver์— ์ธ์ฆํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ ์ธ์ฆ์„œ์™€ ํ‚ค ํŽ˜์–ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค
Certification(Public Key)
Private Key
Admin
admin.crt
admin.key
kube-scheduler
scheduler.crt
scheduler.key
kube-controller-manager
controller-manager.crt
controller-manager.key
kube-proxy
kube-proxy.crt
kube-proxy.key

To ETCD Server

ETCD ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๋Š” ์œ ์ผํ•œ ์„œ๋ฒ„๋Š” kube-apiserver์ด๋‹ค. ๋”ฐ๋ผ์„œ kube-apiserver๋Š” etcd server์˜ ํด๋ผ์ด์–ธํŠธ์ด๋‹ค. etcd์— ์ธ์ฆํ•˜๊ธฐ ์œ„ํ•ด kube-apiserver๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋˜ ์ธ์ฆ์„œ, ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋œ๋‹ค. etcd์˜ ์ธ์ฆ์„ ์œ„ํ•œ ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ์„œ๋ฅผ ๋”ฐ๋กœ ์ƒ์„ฑํ•ด ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค.
Certification(Public Key)
Private Key
kube-apiserver
apiserver.crt
apiserver.key
apiserver-etcd-client.crt
apiserver-etcd-client.key

To Kubelet Server

๊ฐœ๋ณ„ ๋…ธ๋“œ์— ์žˆ๋Š” kubelet ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜์—ฌ ์›Œ์ปค ๋…ธ๋“œ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๊ฒƒ์€ kube-apiserver์ด๋‹ค. etcd์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ kube-apiserver๋Š” ์›๋ณธ ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋˜๊ณ , ์ƒˆ ์ธ์ฆ์„œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
Certification(Public Key)
Private Key
kube-apiserver
apiserver.crt
apiserver.key
kubelet-client.crt
kubelet-client.key

ย Certificate Authority

๋ชจ๋“  ์ธ์ฆ์„œ์— ์„œ๋ช…ํ•˜๊ธฐ ์œ„ํ•ด CA๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•ด ์ตœ์†Œ ํ•˜๋‚˜์˜ ์ธ์ฆ ๊ธฐ๊ด€์ด ํ•„์š”ํ•˜๋‹ค.
CA ๋˜ํ•œ ์ธ์ฆ์„œ์— ๋Œ€ํ•œ ํ‚ค ํŽ˜์–ด๋ฅผ ๊ฐ€์ง„๋‹ค.
Certification(Public Key)
Private Key
certificate authority
ca.crt
ca.key