์ ํ๋ฆฌ์ผ์ด์
์ด ๋ค๋ฃจ๋ ์ค์ ๊ฐ ์ค์๋ SSH ํค, ๋น๋ฐ๋ฒํธ, ์ธ์ฆ ํ ํฐ์ฒ๋ผ ์ธ๋ถ์ ๋
ธ์ถ๋์ด์๋ ์ ๋๋ ๊ฐ๋ค์ด ์๋ค. ์ปจํผ๊ทธ๋งต๋ ๋ฌธ์์ด ๊ฐ์ ๋ด์ ํ๊ฒฝ ๋ณ์๋ ๋ณผ๋ฅจ ํ์ผ๋ก ํ๋์ ์ ๋ฌํ ์ ์์ง๋ง, ์ปจํผ๊ทธ๋งต์ ์ ์ด์ ๋
ธ์ถ๋์ด๋ ๋ฌธ์ ์๋ ์ผ๋ฐ ์ค์ ์ ๋ค๋ฃจ๊ธฐ ์ํ ์ค๋ธ์ ํธ๋ค.
์ฟ ๋ฒ๋คํฐ์ค๋ ์ด๋ฐ ๋ฏผ๊ฐ ์ ๋ณด๋ฅผ ๋ณ๋๋ก ๋ค๋ฃจ๊ธฐ ์ํด ์ํฌ๋ฆฟ(Secret)์ด๋ผ๋ ์ค๋ธ์ ํธ๋ฅผ ๋๋ค. ์ํฌ๋ฆฟ์ ์ปจํผ๊ทธ๋งต๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ค์์คํ์ด์ค์ ์ํ๊ณ , ํ๋์ ๊ฐ์ ์ ๋ฌํ๋ ๋ฐฉ์๋ ํ๊ฒฝ ๋ณ์์ ๋ณผ๋ฅจ ํ์ผ ๋ ๊ฐ์ง๋ก ๋์ผํ๋ค.
๋ค๋ง ์ปจํผ๊ทธ๋งต๊ณผ ๋ค๋ฅธ ๋ถ๋ถ์ ์ํฌ๋ฆฟ์ ๊ฐ์ ์กฐํํ๋ฉด base64๋ก ์ธ์ฝ๋ฉ๋์ด ๋
ธ์ถ๋๋ค๋ ์ ์ด๊ณ , ์ฌ์ฉ ๋ชฉ์ ์ ๋ฐ๋ผ ์ฌ๋ฌ ์ข
๋ฅ์ ํ์
์ผ๋ก ๋๋๋ค๋ ์ ์ด๋ค.
์ปจํผ๊ทธ๋งต๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ช
๋ น ํ ์ค๋ก ์ํฌ๋ฆฟ์ ๋ง๋ค ์ ์๋ค. ๋จ์ ๋ฌธ์์ด ๊ฐ์ --from-literal ์ต์
์ผ๋ก ํค-๊ฐ์ ์ง์ ํ๋ค.
kubectl create secret generic password \
--from-literal=password=1q2w3e4r
--from-file, --from-env-file ์ต์
๋ ์ปจํผ๊ทธ๋งต๊ณผ ๋์ผํ๊ฒ ์ฌ์ฉํ ์ ์๋ค. ํ์ผ ํ๋๋ฅผ ํต์งธ๋ก ๊ฐ์ผ๋ก ๋ด๊ณ ์ถ์ผ๋ฉด --from-file์, key=value ํ์์ ์ค์ด ์ฌ๋ฌ ๊ฐ ๋ด๊ธด ํ์ผ์ ์ฌ๋ฌ ํค-๊ฐ์ผ๋ก ํ์ด ๋ฃ๊ณ ์ถ์ผ๋ฉด --from-env-file์ ์ฐ๋ฉด ๋๋ค.
์ฌ๊ธฐ์ ์ด generic์ ์ํฌ๋ฆฟ์ ์ข
๋ฅ๋ฅผ ๋ปํ๋ค. ์ปจํผ๊ทธ๋งต๊ณผ ๋ฌ๋ฆฌ ์ํฌ๋ฆฟ์ ์ฌ์ฉ ๋ชฉ์ ์ ๋ฐ๋ผ ๋ช ๊ฐ์ง ํ์
์ผ๋ก ๋๋๋๋ฐ, generic์ผ๋ก ๋ง๋ ์ํฌ๋ฆฟ์ ํน์ ๋ชฉ์ ์์ด ์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ Opaque ํ์
์ผ๋ก ์๋ ์ค์ ๋๋ค.
์ํฌ๋ฆฟ๋ ๋ค๋ฅธ ๋ฆฌ์์ค์ฒ๋ผ get์ผ๋ก ๋ชฉ๋ก์ ์กฐํํ๋ค.
kubectl get secrets๋ชฉ๋ก์ ํ์ธํ๋ฉด ์์ฑํ password ์ธ์ default-token-...์ผ๋ก ์์ํ๋ ์ํฌ๋ฆฟ๋ ํ์ธํ ์ ์๋๋ฐ, ์ด๋ ServiceAccount์ ์ํด ๋ค์์คํ์ด์ค๋ง๋ค ์๋์ผ๋ก ์์ฑ๋๋ ์ํฌ๋ฆฟ์ด๋ค.
์ํฌ๋ฆฟ์ ๋ด๊ธด ๊ฐ์ describe๋ -o yaml๋ก ํ์ธํ๋ค.
kubectl describe secret password
kubectl get secret password -o yaml
์ปจํผ๊ทธ๋งต๊ณผ ๋ฌ๋ฆฌ, ํค-๊ฐ ์์์ ๊ฐ์ด base64๋ก ์ธ์ฝ๋ฉ๋์ด ์ถ๋ ฅ๋๋ค. base64๋ ์ํธํ๊ฐ ์๋๋ผ ์ธ์ฝ๋ฉ์ด๋ฏ๋ก ๋๊ตฌ๋ ๋์ฝ๋ฉํด ์๋ ๊ฐ์ ๋ณต์ํ ์ ์๋ค.
์ํฌ๋ฆฟ์ ์์ ํ๊ฒ ๋ง๋๋ ๊ฒ์ ์ด ์ธ์ฝ๋ฉ์ด ์๋๋ผ ์ฟ ๋ฒ๋คํฐ์ค์ RBAC์ ๊ฐ์ ์ ๊ทผ ์ ์ด์ด๋ฉฐ, base64๋ ๊ฐ์ ๊ฐํ์ด๋ ํน์๋ฌธ์๊ฐ ์์ฌ ์์ด๋ YAML ์์ ์์ ํ๊ฒ ๋ด๊ธฐ ์ํ ์ฅ์น์ ๊ฐ๊น๋ค.
์ํฌ๋ฆฟ๋ ์ปจํผ๊ทธ๋งต์ฒ๋ผ YAML๋ก ์ ์ํ๊ณ ํ๋์์ ์ฐธ์กฐํ๋ ๋ฐฉ์์ผ๋ก ๊ด๋ฆฌํ๋ ํธ์ด ๋ซ๋ค.
apiVersion: v1
kind: Secret
metadata:
name: password
type: Opaque
data:
password: ...
data ์๋์ ๊ฐ์ base64๋ก ์ธ์ฝ๋ฉ๋ ๊ฐ์ ๊ทธ๋๋ก ์ ์ด ๋ฃ๋๋ค. ์ด ์ํฌ๋ฆฟ์ ํ๋์์ ๋ณผ๋ฅจ ํ์ผ๋ก ๋ง์ดํธํ๋ ค๋ฉด, ์ปจํผ๊ทธ๋งต๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก spec.volumes์ ์ํฌ๋ฆฟ์ ์ฐธ์กฐํ๋ ๋ณผ๋ฅจ์ ์ ์ํ๊ณ volumeMounts๋ก ๋ง์ดํธ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ๋ค.
apiVersion: v1
kind: Pod
metadata:
name: secret-volume-pod
spec:
containers:
- name: my-container
image: busybox
args: ['tail', '-f', '/dev/null']
volumeMounts:
- name: secret-volume
mountPath: /etc/secret
volumes:
- name: secret-volume
secret:
secretName: password
์ฌ๊ธฐ์ ์ค์ํ ์ ์, YAML์ base64๋ก ์ธ์ฝ๋ฉํ ๊ฐ์ ์
๋ ฅํด ์ํฌ๋ฆฟ์ ๋ง๋ค์๋๋ผ๋ ํ๋๊ฐ ์ด ๊ฐ์ ํ๊ฒฝ ๋ณ์๋ ๋ณผ๋ฅจ ํ์ผ๋ก ๊ฐ์ ธ์ค๋ฉด ๋์ฝ๋ฉ๋ ์๋ ๊ฐ์ ์ฌ์ฉํ๊ฒ ๋๋ค๋ ๊ฒ์ด๋ค. ์ ์์์ /etc/secret/password ํ์ผ์ ์ด์ด ๋ณด๋ฉด 1q2w3e4r์ด ๊ทธ๋๋ก ๋ค์ด ์๋ค.
๋ํ๋ก์ด๋จผํธ ๋ฑ์ผ๋ก ํ๋๋ฅผ ์์ฑํ ๋, YAML์ ์ ์๋ ์ด๋ฏธ์ง๊ฐ ๋
ธ๋ ๋ก์ปฌ์ ์์ผ๋ฉด ์ฟ ๋ฒ๋คํฐ์ค๋ ์๋์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ๋ฐ์์จ๋ค. ์ด๋ฏธ์ง๊ฐ ํ๋ผ์ด๋น ๋ ์ง์คํธ๋ฆฌ์ ์๋ค๋ฉด ์ธ์ฆ ์ ์ฐจ๊ฐ ํ์ํ๋ฐ, ์ฟ ๋ฒ๋คํฐ์ค๋ ์ด๋ docker login ๋ช
๋ น์ด ๋์ ์ํฌ๋ฆฟ์ ์ฌ์ฉํ๋ค.
*๋์ปค ์์ง์ docker login์ ์ฑ๊ณตํ๋ฉด ์ธ์ฆ ์ ๋ณด๋ฅผ ~/.docker/config.json ํ์ผ์ ์ ์ฅํด ๋๋ค๊ฐ ์ดํ ์ด๋ฏธ์ง๋ฅผ ๋ฐ์์ฌ ๋ ์๋์ผ๋ก ์ฌ์ฉํ๋ค. ์ฟ ๋ฒ๋คํฐ์ค๋ ์ด ์ธ์ฆ ์ ๋ณด๋ฅผ ์ปจํ
์ด๋ ๋ด๋ถ๊ฐ ์๋๋ผ ์ํฌ๋ฆฟ์ด๋ผ๋ ํด๋ฌ์คํฐ ์ค๋ธ์ ํธ๋ก ์ฎ๊ฒจ์ ๊ด๋ฆฌํ๋ค๋ ์ ์ด ๋ค๋ฅด๋ค.
๋ ์ง์คํธ๋ฆฌ ์ธ์ฆ ์ํฌ๋ฆฟ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง๋ค.
์ด๋ฏธ docker login์ผ๋ก ๋ก๊ทธ์ธํด ~/.docker/configs.json์ด ๋ง๋ค์ด์ ธ ์๋ค๋ฉด, ๊ทธ ํ์ผ์ ๊ทธ๋๋ก ์ํฌ๋ฆฟ์ ๋ฐ์ดํฐ๋ก ๊ฐ์ ธ์ฌ ์ ์๋ค.
kubectl create secret generic registry-auth \
--from-file=.dockerconfigjson=/root/.docker/config.json \
--type=kubernetes.io/dockerconfigjson
docker-registry๋ผ๋ ์ ์ฉ ์ข
๋ฅ๋ฅผ ์ฐ๋ฉด ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ช
๋ น์ด์ ์ง์ ๋ช
์ํด ์ํฌ๋ฆฟ์ ๋ง๋ค ์ ์๋ค.
kubectl create secret docker-registry registry-auth-by-cmd \
--docker-username=admin \
--docker-password=1q2w3e4r
--docker-server๋ ํ์ ์ต์
์ด ์๋๋ฉฐ, ์ง์ ํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ์ธ ๋์ปค ํ๋ธ๋ฅผ ์ฌ์ฉํ๋ค. ์ฌ์ค ๋ ์ง์คํธ๋ฆฌ๋ฅผ ์ด๋ค๋ฉด ์๋ฒ ์ฃผ์๋ฅผ ํจ๊ป ์ง์ ํ๋ค.
kubectl create secret docker-registry registry-auth-registry \
--docker-username=admin \
--docker-password=1q2w3e4r \
--docker-server=bluecool.registry.com
๋ ๋ฐฉ๋ฒ ์ค ์ด๋ ์ชฝ์ ์ฐ๋ , ์์ฑ๋ ์ํฌ๋ฆฟ์ kubernetes.io/dockerconfigjson์ด๋ผ๋ ๋์ผํ ํ์
์ผ๋ก ์ค์ ๋๋ค.
kubectl get secrets๋ง๋ค์ด์ง ์ํฌ๋ฆฟ์ ํ๋ YAML์ imagePullSecrets์ ์ด๋ฆ์ ์ง์ ํด ์ฌ์ฉํ๋ค.
spec:
containers:
- name: my-app
image: bluecool.registry.com/my-app:1.0
imagePullSecrets:
- name: registry-auth-registry
์ด๋ฏธ์ง๋ฅผ ๋ฐ์์ค๋ ์์ ์ imagePullPolicy๋ก ์กฐ์ ํ๋ค. Always๋ ํ๋๊ฐ ์์ฑ๋ ๋๋ง๋ค ๋ ์ง์คํธ๋ฆฌ์์ ์ด๋ฏธ์ง๋ฅผ ๋ค์ ํ์ธํด ๋ฐ์์ค๊ณ , IfNotPresent๋ ๋
ธ๋์ ๊ฐ์ ์ด๋ฏธ์ง๊ฐ ์์ ๋๋ง ๋ฐ์์จ๋ค. Never๋ ๋ ์ง์คํธ๋ฆฌ ์กฐํ ์์ด ๋
ธ๋์ ์๋ ์ด๋ฏธ์ง๋ง ์ฌ์ฉํ๋ฉฐ, ์์ผ๋ฉด ์คํจํ๋ค.
ํ๊ทธ๋ฅผ latest๋ก ์ง์ ํ๋ฉด ๊ธฐ๋ณธ๊ฐ์ด Always๊ฐ ๋๊ณ , ๊ทธ ์ธ์ ํ๊ทธ๋ฅผ ๋ช
์ํ๋ฉด IfNotPresent๊ฐ ๊ธฐ๋ณธ๊ฐ์ด ๋๋ค.
์ธ์ฆ์์ ๊ฐ์ธ ํค ์์ ๋ค๋ฃจ๋ kubernetes.io/tls ํ์
๋ ์๋ค. ํ
์คํธ์ฉ์ผ๋ก ์์ฒด ์๋ช
์ธ์ฆ์๋ฅผ ๋ง๋ค์ด ๋ณด์.
openssl req -new -newKey rsa:4096 -days 365 -nodes \
-x509 -subj "/CN=example.com" -keyout cert.key -out cert.crt
์์ฑ๋ cert.crt, cert.key ํ์ผ๋ก TLS ์ํฌ๋ฆฟ์ ๋ง๋ ๋ค.
kubectl create secret tls my-tls-secret \
--cert cert.crt --key cert.key
cert.crt์ cert.key ํ์ผ์ ๋ด์ฉ์ ๊ฐ๊ฐ tls.crt, tls.key๋ผ๋ ํค๋ก ์ํฌ๋ฆฟ์ ์ ์ฅ๋๋ฉฐ, ๋ค๋ฅธ ์ํฌ๋ฆฟ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ์ base64๋ก ์ธ์ฝ๋ฉ๋๋ค.
kubectl get secrets my-tls-secret์ด๋ ๊ฒ ๋ช
๋ น์ด๋ก ๋ง๋ ์ํฌ๋ฆฟ์ YAML๋ก ๋ฐฐํฌํ๋ ค๋ฉด, ์ธ์ฆ์์ ํค ๋ฐ์ดํฐ๋ฅผ YAML ํ์ผ์ ํจ๊ป ์ ์ฅํด ๋ฌ์ผ ํ๋ค. ์ปจํผ๊ทธ๋งต์ ๋ง๋ค ๋์ฒ๋ผ --dry-run=client -o yaml๋ก ์ํฌ๋ฆฟ ์ ์๋ฅผ ๋ฝ์๋ด ํ์ผ๋ก ์ ์ฅํด ๋๋ฉด ๋๋ค.
์ํฌ๋ฆฟ์ ๋ฐ์ดํฐ๊ฐ ๋ง์์ง์๋ก base64๋ก ์ธ์ฝ๋ฉ๋ ๊ฐ์ YAML ํ์ผ์ ์ง์ ์ ์ฅํด ๋๋ ๋ฐฉ์์ ๋ค๋ฃจ๊ธฐ ๋ฒ๊ฑฐ๋ก์์ง๋ค. ์ด๋ด ๋๋ kubectl์ ๋ด์ฅ๋ kustomize ๊ธฐ๋ฅ์ ์ธ ์ ์๋ค.
kustomize๋ ์์ฃผ ์ฐ๋ YAML ์์ฑ์ ๋ณ๋๋ก ์ ์ํด ์ฌ์ฌ์ฉํ๊ฑฐ๋, ์ฌ๋ฌ YAML ํ์ผ์ ํ๋๋ก ๋ฌถ๋ ๋ฑ ๋ค์ํ ์ฉ๋๋ก ์ฐ์ด๋ ๊ธฐ๋ฅ์ด๋ค.
์ํฌ๋ฆฟ์ kustomization.yaml์์ secretGenerator๋ก ์ ์ํ๋ค.
secretGenerator:
- name: password
literals:
- password=1q2w3e4r
์ปจํผ๊ทธ๋งต์ kustomize๋ก ์์ฑํ๊ณ ์ถ๋ค๋ฉด configMapGenerator๋ฅผ ์ด๋ค. ๋ค๋ง ์ปจํผ๊ทธ๋งต์ ์ํฌ๋ฆฟ๊ณผ ๋ฌ๋ฆฌ ์ข
๋ฅ๊ฐ ์์ผ๋ฏ๋ก type์ ์ ์ํ์ง ์๋๋ค๋ ์ฐจ์ด๊ฐ ์๋ค.
์์ฑ๋ ๊ฒฐ๊ณผ๋ฌผ์ ์ ์ฉ ์ ์ ๋ฏธ๋ฆฌ ํ์ธํ ์ ์๋ค.
kubectl kustomize ./kustomization.yaml์ด ์์นํ ๋๋ ํ ๋ฆฌ์์๋ apply -k ๋ช
๋ น์ด๋ก ์ ์๋ ๋ฆฌ์์ค๋ฅผ ํ ๋ฒ์ ๋ฐฐํฌํ๋ค.
kubectl apply -k ./
kubectl delete -k ./
kustomize๋ก ์์ฑ๋ ์ปจํผ๊ทธ๋งต์ด๋ ์ํฌ๋ฆฟ์ ์ด๋ฆ ๋ค์๋ ๋ด์ฉ์ ํด์ํ ๊ฐ์ด ์๋์ผ๋ก ๋ถ๋๋ค. kubectl create configmap์ด๋ kubectl create secret์ --append-hash ์ต์
์ ์ค๋ ๊ฐ์ ํจ๊ณผ๋ฅผ ์ป์ ์ ์๋ค.
์ด๋ฆ์ ํด์๊ฐ ํฌํจ๋๋ฉด ๋ด์ฉ์ด ๋ฐ๋ ๋๋ง๋ค ์ ์ด๋ฆ์ ์ค๋ธ์ ํธ๊ฐ ์์ฑ๋๋ฏ๋ก, ์ด๋ฅผ ์ฐธ์กฐํ๋ ๋ํ๋ก์ด๋จผํธ์ ํ๋ ์คํ๋ ํจ๊ป ๋ฐ๋์ด ๋กค๋ง ์
๋ฐ์ดํธ๊ฐ ์์ฐ์ค๋ฝ๊ฒ ํธ๋ฆฌ๊ฑฐ๋๋ค.
์ด๋ฏธ ๋ฐฐํฌ๋ ์ํฌ๋ฆฟ์ ๊ฐ์ ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ง๋ค. kubectl edit์ผ๋ก ๋ฐ๋ก ์์ ํ๊ฑฐ๋, YAML ํ์ผ์ ๊ณ ์น ๋ค kubectl apply๋ก ๋ฐ์ํ๊ฑฐ๋, kubectl patch๋ก ์ผ๋ถ ํ๋๋ง ๋ฐ๊ฟ ์๋ ์๋ค.
๋ฌธ์ ๋ ์ด๋ ๊ฒ ๊ฐ์ ๋ฐ๊ฟ๋ ํ๋์ ํญ์ ์ฆ์ ๋ฐ์๋์ง๋ ์๋๋ค๋ ์ ์ด๋ค. ์ํฌ๋ฆฟ์ด๋ ์ปจํผ๊ทธ๋งต์ ํ๊ฒฝ ๋ณ์๋ก ํ๋์ ์ ๊ณตํ ๊ฒฝ์ฐ, ๊ฐ์ ๋ฐ๊ฟ๋ ์ด๋ฏธ ๋ ์๋ ํ๋์ ํ๊ฒฝ ๋ณ์์๋ ๋ฐ์๋์ง ์๋๋ค. ํ๊ฒฝ ๋ณ์๋ ์ปจํ
์ด๋๊ฐ ์์๋ ๋ ํ ๋ฒ ์ฃผ์
๋๊ณ ๋์ด๊ธฐ ๋๋ฌธ์, ์ ๊ฐ์ ์ ์ฉํ๋ ค๋ฉด ํ๋๋ฅผ ์ฌ์์ํด์ผ ํ๋ค.
๋ฐ๋ฉด ๋ณผ๋ฅจ ํ์ผ๋ก ๋ง์ดํธํ ๊ฒฝ์ฐ์๋ ๊ฐ์ด ๋ฐ๋๋ฉด ๋ง์ดํธ๋ ํ์ผ์ ๋ด์ฉ๋ ์๋์ผ๋ก ๊ฐฑ์ ๋๋ค. ๋ค๋ง ํ์ผ ๋ด์ฉ์ด ๊ฐฑ์ ๋๋ค๊ณ ํด์ ํ๋ ๋ด๋ถ์ ํ๋ก์ธ์ค๊ฐ ์ด๋ฅผ ์๋์ผ๋ก ๋ค์ ์ฝ์ด ๋ค์ด๋ ๊ฒ์ ์๋๋ค.
ํ๋ก์ธ์ค๊ฐ ๊ฐฑ์ ๋ ๊ฐ์ ์ค์ ๋ก ๋ฐ์ํ๋ ค๋ฉด ๋ณ๋์ ๋ก์ง์ด ํ์ํ๋ค. ์๋ฅผ ๋ค์ด ํ์ผ ๋ณ๊ฒฝ์ ๊ฐ์งํด ์๋ ํ๋ก์ธ์ค์ ๋ฆฌ๋ก๋ ์๊ทธ๋์ ๋ณด๋ด๋ ์ฌ์ด๋์นด ์ปจํ
์ด๋๋ฅผ ํ๋์ ํจ๊ป ๋๊ฑฐ๋, ์ ํ๋ฆฌ์ผ์ด์
์ฝ๋ ์์ค์์ ์ฟ ๋ฒ๋คํฐ์ค API๋ก ์ปจํผ๊ทธ๋งต, ์ํฌ๋ฆฟ ๋ณ๊ฒฝ ์๋ฆผ(Watch)์ ๋ฐ์ ์ค์ค๋ก ๋ค์ ์ฝ์ด ๋ค์ด๊ฒ ๋ง๋๋ ๋ฐฉ๋ฒ์ด ์๋ค.
์ฐธ๊ณ ๋ก ์์ ์ดํด๋ณธ default-token-... ์ํฌ๋ฆฟ์ฒ๋ผ ServiceAccount์ ์ฐ๊ฒฐ๋ ์ํฌ๋ฆฟ์ ์กฐ๊ธ ํน๋ณํ๊ฒ ๋์ํ๋ค. ์ด๋ฐ ์ํฌ๋ฆฟ์ ์ค์๋ก ์ญ์ ํ๋๋ผ๋ ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ๊ฐ์งํด ์๋์ผ๋ก ๋ค์ ๋ง๋ค์ด ์ค๋ค.
ServiceAccount๊ฐ ํด๋ฌ์คํฐ API์ ์ ๊ทผํ๊ธฐ ์ํ ํ์ ์ธ์ฆ ์๋จ์ด๋ฏ๋ก, ์ด๋ฅผ ์์ด๋ฒ๋ฆฌ์ง ์๋๋ก ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ์ง์ ๋ณด์ฅํด ์ฃผ๋ ์
์ด๋ค.
