๋ชฉ์ฐจ
ย Add Admin
ํด๋ฌ์คํฐ์ ์๋ก์ด Admin User๋ฅผ ์ถ๊ฐํด์ผํ ๋ ์ด๋ป๊ฒ ํด์ผํ ๊น?
โข
๋จผ์ ์๋ก์ด ์ ์ ๋ ๊ฐ์ธํค์ CSR์ ์์ฑํ์ฌ ๊ด๋ฆฌ์์๊ฒ CSR์ ์ ๋ฌํ๋ค
โฆ
CSR์ CA ์๋ฒ๊ฐ ์๋ ๊ด๋ฆฌ์์๊ฒ ๋ณด๋ด๋ ๊ฒ์ ๊ด๋ฆฌ์๋ง CA ์๋ฒ์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ด๋ค
โฆ
์๋ก์ด ์ ์ ๋ ์์ง ํด๋ฌ์คํฐ์ ์ ์ ๋ก ๋ฑ๋ก๋ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ CA ์๋ฒ๋ก์ ์ก์ธ์ค๊ฐ ๋ถ๊ฐ๋ฅํ๋ค
โข
๊ด๋ฆฌ์๋ ์ ๋ฌ๋ฐ์ CSR์ CA์๋ฒ๋ก ๊ฐ์ ธ๊ฐ CA ์๋ฒ์ ๊ฐ์ธ ํค์ ๋ฃจํธ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ์ฌ ์๋ช
์ ๋ฐ๋๋ค
โข
์๋ช
๋ ์ธ์ฆ์๋ฅผ ์์ฑํ ํ, ์ธ์ฆ์๋ฅผ ์ ์ ์ ์๊ฒ ๋ณด๋ธ๋ค
โฆ
์ ์ ์ ๊ฐ ๊ด๋ฆฌ์๋ก ๋ฑ๋ก๋์ด ํด๋ฌ์คํฐ์ ์ ๊ทผ์ด ๊ฐ๋ฅํด์ก๋ค
์ธ์ฆ์์๋ ์ ํจ ๊ธฐ๊ฐ์ด ์กด์ฌํ๋๋ฐ, ๋ง๋ฃ๋ ๋๋ง๋ค ์๋ก์ด CSR์ ์์ฑํ๊ณ CA์ ์๋ช
์ ๋ฐ๋ ํ๋ก์ธ์ค๋ฅผ ์ํํด์ผํ๋ค. ์ด๋ ์ธ์ฆ์ ํ์ผ์ ๊ณ์ ๋ฐ๋๋ค.
ย CA Server
CA๋ ํค์ ์ธ์ฆ์ ํ์ผ ์์ ๋ถ๊ณผํ๋ค. ์ด ํ์ผ์ ์ ๊ทผ ๊ฐ๋ฅํ ์ฌ๋์ ์ฟ ๋ฒ๋คํฐ์ค ํ๊ฒฝ์ ๋ํ ์ด๋ค ์ธ์ฆ์๋ ์๋ช
ํ ์ ์๋ค. ๋ฐ๋ผ์ ํด๋น ํ์ผ๋ค์ ๋ณดํธ๋์ด์ผ ํ๋ฉฐ, ์์ ํ ํ๊ฒฝ์ ์ ์ฅ๋์ด์ผ ํ๋ค.
CA Server๋ CA ์ธ์ฆ์ ํค ํ์ผ์ด ์์นํ ์๋ฒ์ด๋ค. ์ธ์ฆ์์ ์๋ช
์ ์ํ ๋๋ง๋ค, ๊ทธ ์๋ฒ์ ๋ก๊ทธ์ธํ์ฌ ์๋ช
ํด์ผ ํ๋ค. ์ธ์ฆ์๋ฅผ ์ฟ ๋ฒ๋คํฐ์ค ๋ง์คํฐ ๋
ธ๋์ ๋ฐฐ์นํ๋ค๋ฉด ๋ง์คํฐ ๋
ธ๋๊ฐ CA ์๋ฒ ์ญํ ์ ํ๋ค.
kubeadm ๋ ๋์ผํ๊ฒ ์๋ํ๋ค. ํค ํ์ด ํ์ผ์ ์์ฑํ๊ณ , ์ด๋ฅผ ๋ง์คํฐ ๋
ธ๋์ ์ ์ฅํ๋ค.
ย Certificates API
์์์ ์ค๋ช
ํ ํ๋ก์ธ์ค๋ ์๋์ผ๋ก ์์ฒญ์ ๋ํด ์๋ช
ํ๋ ๋ฐฉ์์ด์๋ค. ์ฌ์ฉ์๊ฐ ์ฆ๊ฐํ์ฌ, ์ธ์ฆ์ ์๋ช
์์ฒญ์ด ๋์ด๋๊ฑฐ๋ ๋ง๋ฃ์ผ์ ๊ฐฑ์ ํ๋ ์ผ์ ์๋ํํ๋ ๋ฐฉ๋ฒ์ด ํ์ํ๋ค.
์ฟ ๋ฒ๋คํฐ์ค๋ ๋ด์ฅ๋์ด ์๋ ์ธ์ฆ์ API๊ฐ ์์ด ์ด๋ฅผ ์๋ํํ ์ ์๋ค.
ย Create CertificateSigningRequest Object
๊ด๋ฆฌ์๊ฐ ์ธ์ฆ์ ์๋ช
์์ฒญ์ ๋ฐ์ ๋, ๋ง์คํฐ ๋
ธ๋์ ๋ก๊ทธ์ธํ์ฌ ์ง์ ์ธ์ฆ์์ ์๋ช
ํ๋ ๋์ CertificateSigningRequest๋ผ๋ ์ฟ ๋ฒ๋คํฐ์ค API ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
1.
์ ์ ์ ๊ฐ ์์ ์ ๋ํ key์ CSR์ ์์ฑํ๊ณ , ๊ทธ ์์ฒญ์ ๊ด๋ฆฌ์์๊ฒ ์ ๋ฌํ๋ค.
openssl genrsa -out bal1oon.key 2048
openssl req -new -key bal1oon.key -subj "/CN=<username>" -out bal1oon.csr
Bash
๋ณต์ฌ
2.
๊ด๋ฆฌ์๋ ํค๋ฅผ ๊ฐ์ง๊ณ CertificateSigningRequest ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
# bal1oon-csr.yaml
apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:
name: bal1oon
spec:
expirationSeconds: 600 # seconds
usages:
- digital signature
- key encipherment
- server auth
requests:
LNJDFNJKEWNKNVDLSNEKJFNLKSNKDFNKNSLKDF
YAML
๋ณต์ฌ
โข
request ํ๋๋ ์ฌ์ฉ์๊ฐ ๋ณด๋ธ ์ธ์ฆ์ ์๋ช
์์ฒญ์ ๋ช
์ํ๋ ๊ณณ์ด๋ค.
โข
request๋ PlaneText๊ฐ ์๋ Base64๋ก ์ธ์ฝ๋ฉ๋ ํ
์คํธ๋ฅผ ์ฌ์ฉํ๋ค.
$ cat bal1oon.csr | base64
LNJDFNJKEWNKNVDLSNEKJFNLKSNKDFNKNSLKDF
Bash
๋ณต์ฌ
ย Review Requests
โข
๊ฐ์ฒด๊ฐ ์์ฑ๋๋ฉด ๋ชจ๋ CSR์ ํด๋ฌ์คํฐ์ ๊ด๋ฆฌ์๋ค์ด ํ์ธํ ์ ์๋ค
kubectl get csr
Bash
๋ณต์ฌ
ย Approve Requests
โข
kubectl ๋ช
๋ น์ผ๋ก ์ธ์ฆ์๋ฅผ ์น์ธํ ์ ์๋ค
kubectl certificate approve bal1oon
Bash
๋ณต์ฌ
ย Share Certs to Users
โข
์์ฑ๋ ์ธ์ฆ์๋ฅผ ์ถ์ถํ์ฌ ๋ค๋ฅธ ์ฌ์ฉ์์ ๊ณต์ ํ ์ ์๋ค
โข
์ธ์ฆ์๋ yaml ํฌ๋งท์ผ๋ก ํ์ธํ ์ ์๋ค
kubectl get csr bal1oon -o yaml
Bash
๋ณต์ฌ
โฆ
์ธ์ฆ์๋ base64๋ก ์ธ์ฝ๋ฉ๋ ํ
์คํธ๊ฐ ํ์ธ๋๋๋ฐ ๋์ฝ๋ฉํ์ฌ ์ต์ข
์ฌ์ฉ์์ ๊ณต์ ํ๋ค
ย Kube-Controller-Manager
๋ชจ๋ ์ธ์ฆ์ ๊ด๋ จ ์์
์ Controller Manager์ ์ํด ์ด๋ค์ง๋ค. Controller Manager์๋ CSR-Approving, CSR-Signing ๋ฑ์ ์ปจํธ๋กค๋ฌ๊ฐ ์กด์ฌํ๋ค. ์ด๋ฌํ ์ปจํธ๋กค๋ฌ๋ก ํน์ ์์
์ ์ํํ ์ ์๋ค.
์ธ์ฆ์์ ์๋ช
์ ํ ๋๋ฉด, CA ์๋ฒ์ Root Certificate์ ๊ฐ์ธ ํค๊ฐ ํ์ํ๋ค. Controller Manager์ ์๋น์ค ๊ตฌ์ฑ์๋ ์ด ๋ ๊ฐ์ง๋ฅผ ์ง์ ํ ์ ์๋ ์ต์
์ด ์๋ค.
cat /etc/kubernetes/manifests/kube-controller-manager.yaml
Bash
๋ณต์ฌ