04C. Nginx ๋ํ๋ก์ด๋จผํธ์ ์๋น์ค์ ๊ตฌ์กฐ ์ดํด๋ณด๊ธฐ
04C. Nginx ๋ํ๋ก์ด๋จผํธ์ ์๋น์ค์ ๊ตฌ์กฐ ์ดํด๋ณด๊ธฐ ๊ด๋ จ
๋ํ๋ก์ด๋จผํธ์ ์๋น์ค๋ฅผ YAML ํ์ผ๋ก ์์ฑํ์ฌ Nginx ์น ์๋ฒ๋ฅผ ์คํํด๋ณด์์ต๋๋ค. ์ด๋ฒ์๋ ๋ํ๋ก์ด๋จผํธ์ ์๋น์ค์ ๊ตฌ์กฐ๋ฅผ ์์๋ณด๊ฒ ์ต๋๋ค.
์ฟ ๋ฒ๋คํฐ์ค๋ ๋งค๋ํ์คํธ ํ์ผ(์ค์ ํ์ผ)์ด ๋ค์ ๋ณต์กํ์ฌ ์ต์ํด์ง๋๋ฐ ์๊ฐ์ด ์กฐ๊ธ ๊ฑธ๋ฆฝ๋๋ค. ํ์ง๋ง, ํต์ฌ๋ง ์ดํดํ๋ฉด ํฌ๊ฒ ์ด๋ ต์ง ์์ต๋๋ค.
๋จผ์ ์ฟ ๋ฒ๋คํฐ์ค ๋งค๋ํ์คํธ ํ์ผ์ ํ์ ๊ตฌ์ฑ์์๋ apiVersion
, kind
, metadata
, spec
์
๋๋ค.
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-nginx
spec:
replicas: 1
selector:
matchLabels:
app: hello-nginx
template:
metadata:
labels:
app: hello-nginx
spec:
containers:
- name: hello-nginx
image: nginx:latest
ports:
- containerPort: 80
.apiVersion
: ํ์ฌ ๋ฆฌ์์ค์ API ๋ฒ์ ์ ๋๋ค. ์ด ๋ฒ์ ์ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๊ณ์ ๋ฐ๋๋๋ค(์: v1, v1beta1 ๋ฑ). ์ฌ๊ธฐ์๋apps/v1
๋ฅผ ์ง์ ํฉ๋๋ค..kind
: ํ์ฌ ๋ฆฌ์์ค์ ์ข ๋ฅ๋ฅผ ์ง์ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ํ๋ก์ด๋จผํธ๋ฅผ ์์ฑํ๋ฏ๋กDeployment
๋ฅผ ์ง์ ํฉ๋๋ค..metadata
: ํ์ฌ ์ค๋ธ์ ํธ์ ์ด๋ฆ๊ณผ ๊ฐ์ข ์ค์ ์ ๋ณด๊ฐ ๋ค์ด๊ฐ๋๋ค. ๋์ค์metadata
๋ ๋ฆฌ์์ค์ ๋ฐ๋ผ ์ค์ํ๊ฒ ์ฌ์ฉ๋๊ธฐ๋ ํ๋ฏ๋ก ๋์ฌ๊ฒจ ๋ณด๋๊ฒ ์ข์ต๋๋ค..spec
: ํ์ฌ ์ค๋ธ์ ํธ์ ์ํ๋ ์ํ๋ฅผ ์ ์ํ๋ ๋ถ๋ถ์ ๋๋ค. ์ฌ๊ธฐ์๋ ๋ํ๋ก์ด๋จผํธ์ ๊ฐ์ข ์ค์ ๊ฐ๋ค์ด ๋ค์ด๊ฐ๋๋ค.
๋ํ๋ก์ด๋จผํธ์ metadata
์์๋ name
์ ๋ํ๋ก์ด๋จผํธ์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค. ์ฌ๊ธฐ์ ์ง์ ํ ์ด๋ฆ์ kubectl get all
๋ช
๋ น์ ์คํํ์ ๋ pod ๋ถ๋ถ์ ๋์ค๊ฒ ๋ฉ๋๋ค(pod๋ name
๋ค์ ๋๋ค๊ฐ์ด ๋ถ์ต๋๋ค).
metadata:
name: hello-nginx
spec
์๋ ์ค๋ธ์ ํธ์ ์ํ๋ ์ํ๋ฅผ ์ ์ํ๋ค๊ณ ํ์ต๋๋ค. ์ฆ, ์ฟ ๋ฒ๋คํฐ์ค๋ spec
์ ์ ์๋ ๋๋ก ๋ํ๋ก์ด๋จผํธ๋ฅผ ์ ์งํฉ๋๋ค. ์๋ฅผ ๋ค์ด replicas
๊ฐ 1์ด๋ฉด pod
์ 1๊ฐ๋ง ์ ์งํ๊ณ , 10์ด๋ฉด 10๊ฐ๋ฅผ ์ ์งํฉ๋๋ค. ๋ง์ฝ pod 10๊ฐ ์ค 2๊ฐ๊ฐ ์ค๋จ(terminate)๋์๋ค๋ฉด, 10๊ฐ๋ฅผ ๋ง์ถ๊ธฐ ์ํด ๋ค์ 2๊ฐ๋ฅผ ์์ฑํฉ๋๋ค.
์๋ ์ค์ ์ ์ค์ ๋ก๋ ๋ ํ๋ฆฌ์นด์ (replicaset)๊ณผ ํ๋(pod)์ ์ค์ ์ ๋ชจ๋ ๋ด๊ณ ์์ต๋๋ค.
spec:
replicas: 1
selector:
matchLabels:
app: hello-nginx
template:
metadata:
labels:
app: hello-nginx
spec:
containers:
- name: hello-nginx
image: nginx:latest
ports:
- containerPort: 80
.spec.replicas
: ๋ ํ๋ฆฌ์นด์ ์์ ํ๋๋ฅผ ๋ช ๊ฐ ์ ์งํ ์ง ์ค์ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ 1๋ก ์ค์ ํด์ 1๊ฐ๋ง ์ ์งํฉ๋๋ค..spec.selector
: ๋ํ๋ก์ด๋จผํธ๊ฐ ๊ด๋ฆฌํ ํ๋๋ฅผ ์ฐพ๋ ๋ฐฉ๋ฒ์ ์ ์ํฉ๋๋ค. ์ฌ๊ธฐ์๋matchLabels
์app: hello-nginx
๋ก ์ค์ ํ์ผ๋ฏ๋ก ํค๊ฐapp
, ๊ฐ์ดhello-nginx
๋ก ์ ํํ ์ผ์นํ๋ ํ๋๋ฅผ ์ฐพ์ต๋๋ค..spec.template
: ์ฌ๊ธฐ์๋ถํฐ ํ๋ ์คmetadata
:labels
์ ํค-๊ฐ์ ์ค์ ํ์ฌ ๋ํ๋ก์ด๋จผํธ๊ฐ ์ฐพ์ ์ ์๋๋ก ํฉ๋๋ค. ์ฌ๊ธฐ์๋app: hello-nginx
๋ฅผ ์ค์ ํ์ต๋๋ค.spec
: ํ๋์spec
์ ๋๋ค. ํ๋์๋ ์ปจํ ์ด๋๊ฐ ์ฌ๋ฌ ๊ฐ ๋ค์ด๊ฐ ์ ์์ด์containers
๋ก ๋์ด์๊ณ , ๊ทธ ์๋์๋-
๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด(Array)๋ก ๊ฐ์ ์คcontainers
:name
์๋ ์ปจํ ์ด๋์ ์ด๋ฆ์ ์ค์ ํฉ๋๋ค. ์ฌ๊ธฐ์๋hello-nginx
๋ก ์ค์ ํ์ง๋ง ์ ๋ ํฐ์๋ ์๊ด์ด ์์ต๋๋ค.image
์๋ ์ปจํ ์ด๋๋ฅผ ์คํํ Docker ์ด๋ฏธ์ง๋ฅผ ์ค์ ํฉ๋๋ค.<์ด๋ฏธ์ง>:<ํ๊ทธ>
ํ์์ด๋ฉฐ ์ฌ๊ธฐ์๋nginx:latest
๋ฅผ ์ค์ ํ์ต๋๋ค. ๋ง์ง๋ง์ผ๋กports
์๋์ ๋ฐฐ์ด ํํ๋กcontainerPort
๋ฅผ ์ค์ ํฉ๋๋ค.containerPort
๋ ์ปจํ ์ด๋์์ ๊ฐ๋ฐฉํ ํฌํธ ๋ฒํธ๋ฅผ ๋ปํฉ๋๋ค. ์ฌ๊ธฐ์๋ Nginx ์น ์๋ฒ์ HTTP ํฌํธ์ธ 80์ ์ค์ ํ์ต๋๋ค.
์ด์ ์๋น์ค๋ฅผ ์ดํด๋ณผ ์ฐจ๋ก์
๋๋ค. ์๋น์ค๋ ํ๋๋ฅผ ์ฟ ๋ฒ๋คํฐ์ค ๋คํธ์ํฌ๋ ์ธ๋ถ์ ๋
ธ์ถํ ๋ ์ฌ์ฉํ๋ค๊ณ ํ๋๋ฐ, ์ฌ๊ธฐ์๋ ClusterIP
๋ฅผ ์ฌ์ฉํ์ฌ ์ฟ ๋ฒ๋คํฐ์ค ๋คํธ์ํฌ์๋ง ๋
ธ์ถํ๋๋ก ํ๊ฒ ์ต๋๋ค. ์ธ๋ถ์ ๋
ธ์ถํ๋ ๋ฐฉ๋ฒ์ ๋ค์์ ์ค๋ช
ํ๊ฒ ์ต๋๋ค.
service.yaml
apiVersion: v1
kind: Service
metadata:
name: hello-nginx
spec:
selector:
app: hello-nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
.apiVersion
: ํ์ฌ ๋ฆฌ์์ค์ API ๋ฒ์ ์ ๋๋ค. ์ด ๋ฒ์ ์ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๊ณ์ ๋ฐ๋๋๋ค(์: v1, v1beta1 ๋ฑ). ์ฌ๊ธฐ์๋v1
๋ฅผ ์ง์ ํฉ๋๋ค..kind
: ํ์ฌ ๋ฆฌ์์ค์ ์ข ๋ฅ๋ฅผ ์ง์ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์๋น์ค๋ฅผ ์์ฑํ๋ฏ๋กService
๋ฅผ ์ง์ ํฉ๋๋ค..metadata
: ํ์ฌ ์ค๋ธ์ ํธ์ ์ด๋ฆ๊ณผ ๊ฐ์ข ์ค์ ์ ๋ณด๊ฐ ๋ค์ด๊ฐ๋๋ค..spec
: ํ์ฌ ์ค๋ธ์ ํธ์ ์ํ๋ ์ํ๋ฅผ ์ ์ํ๋ ๋ถ๋ถ์ ๋๋ค. ์ฌ๊ธฐ์๋ ์๋น์ค์ ๊ฐ์ข ์ค์ ๊ฐ๋ค์ด ๋ค์ด๊ฐ๋๋ค.
์๋น์ค์ metadata
์์๋ name
์ ์๋น์ค์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค. ์ฌ๊ธฐ์ ์ง์ ํ ์ด๋ฆ์ kubectl get all
๋ช
๋ น์ ์คํํ์ ๋ service ๋ถ๋ถ์ ๋์ค๊ฒ ๋ฉ๋๋ค.
metadata:
name: hello-nginx
์๋น์ค์ spec
๋ถ๋ถ์
๋๋ค. ์ฌ๊ธฐ์๋ selector
์ ports
๋ถ๋ถ์ด ์ค์ํฉ๋๋ค.
spec:
selector:
app: hello-nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
.spec.selector
: ์๋น์ค๊ฐ ํธ๋ํฝ์ ์ ๋ฌํ ํ๋๋ฅผ ์ ํํฉ๋๋ค. ์ฌ๊ธฐ์๋app: hello-nginx
์ ์ค์ ํ์ผ๋ฏ๋ก ํค๊ฐapp
, ๊ฐ์ดhello-nginx
์ธ ํ๋๋ฅผ ์ฐพ์ต๋๋ค..spec.ports
: ์๋น์ค์ ํฌํธ ์ค์ ์ด๋ฉฐ-
๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด(Array)๋ก ๊ฐ์ ์ค์ ํฉ๋๋ค.protocol
์ ์๋น์ค๊ฐ ์ฒ๋ฆฌํ ํ๋กํ ์ฝ์ด๋ฉฐ ์ฌ๊ธฐ์๋ HTTP๋ง ์ฒ๋ฆฌํ๋ฏ๋ก TCP๋ก ์ค์ ํฉ๋๋ค.port
๋ ์๋น์ค๊ฐ ๊ฐ๋ฐฉํ ํฌํธ์ ๋๋ค. ์ฌ๊ธฐ์๋ 80์ ์ค์ ํ์ต๋๋ค.targetPort
๋ ํ๋์ ์ด๋ ค ์๋ ํฌํธ๋ฅผ ์๋ฏธํฉ๋๋ค. ๋ฐ๋ผ์ 80์ ์ค์ ํฉ๋๋ค..spec.type
: ์๋น์ค์type
์ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ง๋ง ์ฌ๊ธฐ์๋ClusterIP
๋ฅผ ์ค์ ํ์ฌ ์ฟ ๋ฒ๋คํฐ์ค ๋คํธ์ํฌ ์์์๋ง ํฌํธ๋ฅผ ๋ ธ์ถํ๋๋ก ํฉ๋๋ค.