์ฟ ๋ฒ๋คํฐ์ค์๋ ์ค์ ์ ์ํ ๋ฐฉ๋ฒ์ด 2๊ฐ์ง ์กด์ฌํ๋ค.
ConfigMap
- application.ymal์ด๋ .env์ฒ๋ผ ๋ณ๋์ ํ์ผ์ ๋ถ๋ฆฌํด์ ๊ด๋ฆฌํ์ฌ ์ ์ง๋ณด์์ ๊ฐ๋ฐ, ํ ์คํธ, ๋ฐฐํฌ๋ฅผ ์ฉ์ดํ๊ฒ ํ๋ค.
- ์์ ๋งํ ์ฌ๋ฌ๊ฐ์ง ์ค๋ธ์ ํธ๋ค์ฒ๋ผ ํ๊ฒฝ ๋ณ์๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ญํ ์ ๊ฐ์ง ์ค๋ธ์ ํธ๊ฐ ์กด์ฌํ๋ค.
- ํ๊ฒฝ๋ณ์ ๋ถ๋ฆฌ ์ค๋ธ์ ํธ
1. ConfigMap ๋งค๋ํ์คํธ ํ์ผ ์์ฑํ๊ธฐ
flask-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: flask-config # ConfigMap ์ด๋ฆ
data:
my-account: seongjju
my-password: 1234
- flask-config.yaml ํ์ผ์ ConfigMap์ ์์ฑ
- ์ฌ๊ธฐ์์ ํ๊ฒฝ๋ณ์๋ก ์ฌ์ฉํ my-account์ my-password ๊ฐ์ ์ ์
2. Deployment ๋งค๋ํ์คํธ ํ์ผ ์์ ํ๊ธฐ
flask-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: flask-deployment # Deployment ์ด๋ฆ
spec:
replicas: 3 # ์์ฑํ ํ๋์ ๋ณต์ ๋ณธ ๊ฐ์
selector:
matchLabels:
app: flask-app # ์๋์์ ์ ์ํ Pod ์ค 'app: flask-app'์ด๋ผ๋ ๊ฐ์ ๊ฐ์ง ํ๋๋ฅผ ์ ํ
template:
metadata:
labels:
app: flask-app
spec:
containers:
- name: flask-container # ์ปจํ
์ด๋ ์ด๋ฆ
image: flask-server # ์ปจํ
์ด๋๋ฅผ ์์ฑํ ๋ ์ฌ์ฉํ ์ด๋ฏธ์ง
imagePullPolicy: IfNotPresent # ๋ก์ปฌ์์ ์ด๋ฏธ์ง๋ฅผ ๋จผ์ ๊ฐ์ ธ์ด, ์์ผ๋ฉด ๋ ์ง์คํธ๋ฆฌ์์ ๊ฐ์ ธ์จ๋ค.
ports:
- containerPort: 5001 # Flask ์ปจํ
์ด๋์์ ์ฌ์ฉํ๋ ํฌํธ
env:
- name: MY_ACCOUNT
valueFrom:
configMapKeyRef:
name: flask-config # ConfigMap์ ์ด๋ฆ
key: my-account # ConfigMap์ ์ค์ ๋์ด ์๋ Key๊ฐ
- name: MY_PASSWORD
valueFrom:
configMapKeyRef:
name: flask-config
key: my-password
- flask-config.yaml์์ ์ ์ํ ConfigMap์ ์ฐธ์กฐํ์ฌ ํ๊ฒฝ๋ณ์ MY_ACCOUNT์ MY_PASSWORD๋ฅผ ์ค์
- containerPort๋ Flask ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฌ์ฉํ๋ ํฌํธ๋ฅผ ์ง์
3. ๋งค๋ํ์คํธ ํ์ผ ๋ฐ์
$ kubectl apply -f flask-config.yaml
$ kubectl apply -f flask-deployment.yaml
- kubectl apply ๋ช ๋ น์ด๋ก ConfigMap๊ณผ Deployment๋ฅผ ํด๋ฌ์คํฐ์ ์ ์ฉ
4. Deployment ์ฌ์์
$ kubectl rollout restart deployment flask-deployment
- ๋ณ๊ฒฝ ์ฌํญ์ด ์ ์ฉ๋๋๋ก Flask ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์์
์ ๋ฆฌํ๋ฉด
- ConfigMap์ ์ฌ์ฉํ์ฌ Flask ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๊ฒฝ๋ณ์๋ฅผ ์ธ๋ถ์์ ๊ด๋ฆฌํ ์ ์๋ค.
- Deployment์์ env ์น์ ์ ์ฌ์ฉํ์ฌ ConfigMap์์ ์ ์ํ ๊ฐ์ ํ๊ฒฝ๋ณ์๋ก Flask ์ปจํ ์ด๋์ ์ ๋ฌํ๋ค.
- ์ด๋ ๊ฒ ํ๋ฉด Flask ์ ํ๋ฆฌ์ผ์ด์ ์์ ํ๊ฒฝ๋ณ์๋ฅผ ๋ถ๋ฆฌํ์ฌ ์ฝ๋์ ๋ณ๊ฒฝ ์์ด๋ ConfigMap๋ง ์์ ํ์ฌ ์ค์ ์ ๋ฐ๊ฟ ์ ์๋ค.
Secret
์ด ๋ํ ํ๊ฒฝ๋ณ์ ๋ถ๋ฆฌ ๊ด๋ฆฌ ์ค๋ธ์ ํธ
์ํฌ๋ฆฟ์ ๋ณด์์ ์ํด ์กด์ฌ
Secret์ ์ฌ์ฉํ์ฌ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ , ConfigMap์ ์ฌ์ฉํ์ฌ ์ผ๋ฐ ์ค์ ๊ฐ์ ์ ์ฅํ๋ค.
1. Secret ๋งค๋ํ์คํธ ํ์ผ ์์ฑํ๊ธฐ
flask-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: flask-secret # Secret ์ด๋ฆ
stringData:
my-password: my-secret-password # Secret์ ์ ์ฅํ ๋ฏผ๊ฐํ ์ ๋ณด
โข flask-secret.yaml์์๋ Secret ๋ฆฌ์์ค๋ฅผ ์์ฑํ์ฌ my-password๋ผ๋ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ ์ฅ
2. ConfigMap ๋งค๋ํ์คํธ ํ์ผ ์์ฑํ๊ธฐ
flask-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: flask-config # ConfigMap ์ด๋ฆ
data:
my-account: seongjju
my-password: 1234
'๐ณ ์ธํ๋ผ > Kubernetes' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ฟ ๋ฒ๋คํฐ์ค ๋ก์ปฌ ์ค์ต (0) | 2025.03.31 |
---|---|
์ฟ ๋ฒ๋คํฐ์ค ๋ก๋๋ฐธ๋ฐ์ฑ ๋ฐ ํฌ์ค์ฒดํฌ (0) | 2025.03.22 |
์ฟ ๋ฒ๋คํฐ์ค ์๋น์ค์ ํ๋ผ๋ฌ (0) | 2025.03.19 |
์ฟ ๋ฒ๋คํฐ์ค (1) | 2024.09.11 |
์ฟ ๋ฒ๋คํฐ์ค์๋ ์ค์ ์ ์ํ ๋ฐฉ๋ฒ์ด 2๊ฐ์ง ์กด์ฌํ๋ค.
ConfigMap
- application.ymal์ด๋ .env์ฒ๋ผ ๋ณ๋์ ํ์ผ์ ๋ถ๋ฆฌํด์ ๊ด๋ฆฌํ์ฌ ์ ์ง๋ณด์์ ๊ฐ๋ฐ, ํ ์คํธ, ๋ฐฐํฌ๋ฅผ ์ฉ์ดํ๊ฒ ํ๋ค.
- ์์ ๋งํ ์ฌ๋ฌ๊ฐ์ง ์ค๋ธ์ ํธ๋ค์ฒ๋ผ ํ๊ฒฝ ๋ณ์๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ญํ ์ ๊ฐ์ง ์ค๋ธ์ ํธ๊ฐ ์กด์ฌํ๋ค.
- ํ๊ฒฝ๋ณ์ ๋ถ๋ฆฌ ์ค๋ธ์ ํธ
1. ConfigMap ๋งค๋ํ์คํธ ํ์ผ ์์ฑํ๊ธฐ
flask-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: flask-config # ConfigMap ์ด๋ฆ
data:
my-account: seongjju
my-password: 1234
- flask-config.yaml ํ์ผ์ ConfigMap์ ์์ฑ
- ์ฌ๊ธฐ์์ ํ๊ฒฝ๋ณ์๋ก ์ฌ์ฉํ my-account์ my-password ๊ฐ์ ์ ์
2. Deployment ๋งค๋ํ์คํธ ํ์ผ ์์ ํ๊ธฐ
flask-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: flask-deployment # Deployment ์ด๋ฆ
spec:
replicas: 3 # ์์ฑํ ํ๋์ ๋ณต์ ๋ณธ ๊ฐ์
selector:
matchLabels:
app: flask-app # ์๋์์ ์ ์ํ Pod ์ค 'app: flask-app'์ด๋ผ๋ ๊ฐ์ ๊ฐ์ง ํ๋๋ฅผ ์ ํ
template:
metadata:
labels:
app: flask-app
spec:
containers:
- name: flask-container # ์ปจํ
์ด๋ ์ด๋ฆ
image: flask-server # ์ปจํ
์ด๋๋ฅผ ์์ฑํ ๋ ์ฌ์ฉํ ์ด๋ฏธ์ง
imagePullPolicy: IfNotPresent # ๋ก์ปฌ์์ ์ด๋ฏธ์ง๋ฅผ ๋จผ์ ๊ฐ์ ธ์ด, ์์ผ๋ฉด ๋ ์ง์คํธ๋ฆฌ์์ ๊ฐ์ ธ์จ๋ค.
ports:
- containerPort: 5001 # Flask ์ปจํ
์ด๋์์ ์ฌ์ฉํ๋ ํฌํธ
env:
- name: MY_ACCOUNT
valueFrom:
configMapKeyRef:
name: flask-config # ConfigMap์ ์ด๋ฆ
key: my-account # ConfigMap์ ์ค์ ๋์ด ์๋ Key๊ฐ
- name: MY_PASSWORD
valueFrom:
configMapKeyRef:
name: flask-config
key: my-password
- flask-config.yaml์์ ์ ์ํ ConfigMap์ ์ฐธ์กฐํ์ฌ ํ๊ฒฝ๋ณ์ MY_ACCOUNT์ MY_PASSWORD๋ฅผ ์ค์
- containerPort๋ Flask ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฌ์ฉํ๋ ํฌํธ๋ฅผ ์ง์
3. ๋งค๋ํ์คํธ ํ์ผ ๋ฐ์
$ kubectl apply -f flask-config.yaml
$ kubectl apply -f flask-deployment.yaml
- kubectl apply ๋ช ๋ น์ด๋ก ConfigMap๊ณผ Deployment๋ฅผ ํด๋ฌ์คํฐ์ ์ ์ฉ
4. Deployment ์ฌ์์
$ kubectl rollout restart deployment flask-deployment
- ๋ณ๊ฒฝ ์ฌํญ์ด ์ ์ฉ๋๋๋ก Flask ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์์
์ ๋ฆฌํ๋ฉด
- ConfigMap์ ์ฌ์ฉํ์ฌ Flask ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๊ฒฝ๋ณ์๋ฅผ ์ธ๋ถ์์ ๊ด๋ฆฌํ ์ ์๋ค.
- Deployment์์ env ์น์ ์ ์ฌ์ฉํ์ฌ ConfigMap์์ ์ ์ํ ๊ฐ์ ํ๊ฒฝ๋ณ์๋ก Flask ์ปจํ ์ด๋์ ์ ๋ฌํ๋ค.
- ์ด๋ ๊ฒ ํ๋ฉด Flask ์ ํ๋ฆฌ์ผ์ด์ ์์ ํ๊ฒฝ๋ณ์๋ฅผ ๋ถ๋ฆฌํ์ฌ ์ฝ๋์ ๋ณ๊ฒฝ ์์ด๋ ConfigMap๋ง ์์ ํ์ฌ ์ค์ ์ ๋ฐ๊ฟ ์ ์๋ค.
Secret
์ด ๋ํ ํ๊ฒฝ๋ณ์ ๋ถ๋ฆฌ ๊ด๋ฆฌ ์ค๋ธ์ ํธ
์ํฌ๋ฆฟ์ ๋ณด์์ ์ํด ์กด์ฌ
Secret์ ์ฌ์ฉํ์ฌ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ , ConfigMap์ ์ฌ์ฉํ์ฌ ์ผ๋ฐ ์ค์ ๊ฐ์ ์ ์ฅํ๋ค.
1. Secret ๋งค๋ํ์คํธ ํ์ผ ์์ฑํ๊ธฐ
flask-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: flask-secret # Secret ์ด๋ฆ
stringData:
my-password: my-secret-password # Secret์ ์ ์ฅํ ๋ฏผ๊ฐํ ์ ๋ณด
โข flask-secret.yaml์์๋ Secret ๋ฆฌ์์ค๋ฅผ ์์ฑํ์ฌ my-password๋ผ๋ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ ์ฅ
2. ConfigMap ๋งค๋ํ์คํธ ํ์ผ ์์ฑํ๊ธฐ
flask-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: flask-config # ConfigMap ์ด๋ฆ
data:
my-account: seongjju
my-password: 1234
'๐ณ ์ธํ๋ผ > Kubernetes' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ฟ ๋ฒ๋คํฐ์ค ๋ก์ปฌ ์ค์ต (0) | 2025.03.31 |
---|---|
์ฟ ๋ฒ๋คํฐ์ค ๋ก๋๋ฐธ๋ฐ์ฑ ๋ฐ ํฌ์ค์ฒดํฌ (0) | 2025.03.22 |
์ฟ ๋ฒ๋คํฐ์ค ์๋น์ค์ ํ๋ผ๋ฌ (0) | 2025.03.19 |
์ฟ ๋ฒ๋คํฐ์ค (1) | 2024.09.11 |