SlideShare a Scribd company logo
1 of 49
Download to read offline
Kubernetes on GCP
Daegeun Kim (gnkr8@outlook.com)
Lezhin Entertainment
1
1ํŽธ์œผ๋กœ ์ƒ๊ฐํ•ด์ฃผ์„ธ์š”. 40๋ถ„์•ˆ์— ํ•˜๊ธฐ์—๋Š” ์ฃผ์ œ๊ฐ€ ๋„ˆ๋ฌด์ปธ์Šต๋‹ˆ๋‹ค.
๋ฐœํ‘œ์ž
โœ‘ ๋ ˆ์ง„์—”ํ„ฐํ…Œ์ธ๋จผํŠธ ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด
โœ‘ Links
โœ‘ https://geekdani.wordpress.com/
โœ‘ dgkim84 @ twitter / fb
2
๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด, ๋ถ„์„๊ฐ€
์•ˆ๋“œ๋กœ์ด๋“œ, iOS ์•ฑ ๊ฐœ๋ฐœ์ž
๋ฐฑ์—”๋“œ, ์›น ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž
์ถฉ์› ์ค‘ ์ž…๋‹ˆ๋‹ค.
https://github.com/lezhin/apply/
blob/master/README.md
Google Cloud Platform
GCP์— ๋” ๋งŽ์€ ์ œํ’ˆ์ด ์žˆ์ง€๋งŒ, ๋ฐ์ดํ„ฐํŒ€์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ฃผ์š” ์ œํ’ˆ๊ตฐ
3
https://cloud.google.com/icons/
์šฐ๋ฆฌ ํŒ€์€ ์ € ๋ฟ์ธ ํŒ€์ด๊ณ  ๋‹ค ์™ธ์ฃผ ์ง์›๋“ค๋กœ ๊ตฌ์„ฑ ์–ผ๊ตด ๋ณธ ์ ์€ ์—†์ง€๋งŒ ๊ทธ ๋ถ„๋“ค
์ด ์ œํ’ˆ์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.
๋กœ๊ทธ ์ˆ˜์ง‘, ๊ฐ€๊ณต, ์ ์žฌ, ๋ชจ๋ธ๋ง, ๋ถ„์„ ๋“ฑ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ด์ฃผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
BigData ์ œํ’ˆ๊ตฐ, Compute ์ œํ’ˆ๊ตฐ, ๋กœ๊น…, ๋„คํŠธ์›Œํฌ, ์Šคํ† ๋ฆฌ์ง€ ๋“ฑ ์ œํ’ˆ๊ตฐ์„ ํ™œ์šฉ
์ค‘ ์ž…๋‹ˆ๋‹ค.
BigTable ๊ณผ ๊ฐ™์€ ์ œํ’ˆ๋“ค๋„ ์ž‘์ง€๋งŒ ์‚ฌ์šฉ ์ค‘์— ์žˆ์Šต๋‹ˆ๋‹ค.
์™œ
๋ ˆ์ง„์ฝ”๋ฏน์Šค ๋ฐ์ดํ„ฐํŒ€์€
GCP ๋ฅผ ์„ ํƒํ–ˆ๋‚˜
4
https://www.slideshare.net/curioe_/lezhincomics-google-appengine-30453946
์™œ ๋ ˆ์ง„์ฝ”๋ฏน์Šค๋Š” ๊ตฌ๊ธ€์•ฑ์—”์ง„์„ ์„ ํƒํ–ˆ๋‚˜
์•ˆ์ •์ ์ด๊ณ  ๋…๋ฆฝ๋œ
Data Infrastructure
- 2016๋…„ 4์›” ํƒˆ์ถœ
5
๋ณธ์—…์€ ๋ฐฑ์—”๋“œํŒ€ ์ด์—ˆ๊ณ  ์—…๋ฌด ์™ธ์— ์ž‘์—…์ด ์ง„ํ–‰๋œ ๊ฒƒ ์ด๊ธฐ๋•Œ๋ฌธ์—
์†์ด ๋œ ๊ฐ€๊ณ  ์•ˆ์ •์ ์œผ๋กœ ์šด์˜๋˜๋„๋ก ํ•˜๋Š”๊ฒŒ ์ฃผ ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค.
๊ทธ๋ ‡๊ธฐ๋•Œ๋ฌธ์— ์˜คํ”ˆ์†Œ์Šค์™€ ๊ฐ™์€ ์ œํ’ˆ์„ ์ง์ ‘ ์šด์˜ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค fully managed ๋˜
๊ณ  ์žˆ๋Š” GCP ์ œํ’ˆ๊ตฐ์„ ๋” ์‚ดํŽด๋ณด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
Google Cloud Platform
๋” ๋งŽ์€ ์ œํ’ˆ์ด ์žˆ์ง€๋งŒ, ๋ฐ์ดํ„ฐํŒ€์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ฃผ์š” ์ œํ’ˆ๊ตฐ.
6
์ˆ˜์ง‘ -> ๊ฐ€๊ณต -> ์ ์žฌ -> ๋ชจ๋ธ๋ง -> ๋ถ„์„
์ˆ˜์ง‘ -> ๊ฐ€๊ณต -> ์ ์žฌ -> ๋ชจ๋ธ๋ง -> ๋ถ„์„ ๋“ฑ์˜ ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉด์„œ
๋งˆ์ผ€ํŒ…, ๋นŒ๋ง, ๊ธฐํšํŒ€ ๋“ฑ์—์„œ SQL ๋“ฑ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก DWH ๊ตฌ์ถ•๋ถ€ํ„ฐ
BI ํˆด ์—ฐ๊ณ„๋ฅผ ํ†ตํ•ด SQL์„ ๋‹ค๋ฃจ์ง€ ๋ชปํ•˜๋Š” ๋ถ„๋“ค๋„ ์‹œ๊ฐํ™” ํ•  ์ˆ˜ ์žˆ๋Š” ํˆด์„ ์ œ๊ณตํ•ฉ
๋‹ˆ๋‹ค.
์ด ์ธํ”„๋ผ๋กœ ํ•œ๋‹ฌ์— ๋Œ€๋žต 10์–ต๊ฑด ์ด์ƒ์˜ ์œ ์˜๋ฏธํ•œ ๋กœ๊ทธ๊ฐ€ ์Œ“์ž…๋‹ˆ๋‹ค.
๋ฐฐ์น˜ ๋ถ„์„์„ ์œ„ํ•ด ์Šคํ† ๋ฆฌ์ง€๋กœ, ์‹ค์‹œ๊ฐ„ ๋ถ„์„์„ ์œ„ํ•ด Pub/Sub ๋“ฑ์œผ๋กœ ๋ณด๋‚ด์ง‘๋‹ˆ๋‹ค.
๋Œ€๋ถ€๋ถ„์˜ ETL๊ณผ ์ถ”์ฒœ์ฒ˜๋ฆฌ๋Š” Spark ๋กœ ์ด๋ฃจ์–ด์ง€๋ฉฐ ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ๋Š” DataFlow
Streaming ์“ฐ๊ณ  ๋ฐฐ์น˜๋„ ์”๋‹ˆ๋‹ค.
GCP ๊ธฐ๋Šฅ ์™ธ์—
ํ•„์š”ํ•œ ๊ฒƒ
- ์›Œํฌํ”Œ๋กœ์šฐ & ์Šค์ผ€์ฅด๋Ÿฌ
- ์ถ”์ฒœ(๊ฒ€์ƒ‰) ๋ฐ์ดํ„ฐ ์„œ๋น™์šฉ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„
- ์„œ๋น„์Šค ํŠนํ™”๋œ ์ง€ํ‘œ์šฉ ๋ฐฑ์˜คํ”ผ์Šค
- ๊ธฐํƒ€ ์ˆ˜ ๋งŽ์€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„
7
์›Œํฌํ”Œ๋กœ์šฐ & ์Šค์ผ€์ฅด๋Ÿฌ : Airflow (Oozie, Azkaban, Luigi ์™€ ๊ฐ™์€) ์ œํ’ˆ์œผ๋กœ
ETL ์žก์ด๋‚˜ ์ด๋Ÿฐ ๋ฐ˜๋ณต๋˜๋Š” ์ž‘์—…์„ DAG ํ˜•ํƒœ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ์Šค์ผ€์ฅด๋งํ•˜๋Š” ์—ญํ• 
์ด์™€ ๊ฐ™์€ ์—ญํ• ์„ ํ•ด์ฃผ๋Š” ์„œ๋ฒ„๋“ค์ด ์žˆ๋Š”๋ฐ ๊ด€๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ•˜๋ ค๊ณ  ํ•  ๋•Œ
๊ณ ๋ฏผํ•˜๋Š” ์‚ฌํ•ญ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.
Checklist
โœ‘ Deployment
โœ‘ Provisioning
โœ‘ Automation
โœ‘ Stateless, Stateful
โœ‘ Scalability
โœ‘ Monitoring
โœ‘ Discovering Service
8
๋ฐฐํฌ, ํ”„๋กœ๋น„์ €๋‹, ์ž๋™ํ™” ๋“ฑ์ด ๊ทธ๊ฒƒ์ด๊ณ 
ํ™•์žฅ์„ฑ์ด๋ผ๋˜์ง€ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ทธ๋ฆฌ๊ณ  Discovering Service ์™€ ๊ฐ™์€ ๋ฌธ์ œ๋“ค์ด ์žˆ์Šต๋‹ˆ
๋‹ค.
์ด๊ฑธ ๊ฐœ๋ณ„๋กœ ๊ตฌ์ถ•ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋น„์šฉ์€ ์–ด์ฐŒ๋ณด๋ฉด ๊ต‰์žฅํžˆ ํฝ๋‹ˆ๋‹ค.
์ด๋ฒˆ ๋ฐœํ‘œ์—์„œ๋Š” ์ž๋™ํ™”, Stateful ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—๋Œ€ํ•œ ๋ฌธ์ œ, ๋ชจ๋‹ˆํ„ฐ๋ง,
Discovering Service์—๋Œ€ํ•œ ์ƒ์„ธํ•œ ๋‚ด์šฉ์€ ์‹œ๊ฐ„๊ด€๊ณ„์ƒ ๋‹ค๋ฃจ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.
Deployment
- ๋ฐฐํฌํ•  ๋•Œ ๊ณ ๋ ค์‚ฌํ•ญ
9
Deployment
โœ‘ Provisioning
โœ‘ OS, Network, โ€ฆ
โœ‘ Resource (CPU, Memory, Storage, โ€ฆ)
โœ‘ Application Code
โœ‘ Dependencies
โœ‘ Configurations
โœ‘ Update
โœ‘ Rolling Update
โœ‘ Blue-Green Deployment
โœ‘ Rollback
10
ํ•˜๋‚˜์”ฉ ๊ฐ๊ฐœ๊ฒฉํŒŒ ํ•ด๋ณด์•„์š”.
Kubernetes Pod
- ์•ž์„œ ์–ธ๊ธ‰ํ•œ ๊ฒƒ์„ ํ•ด๊ฒฐํ•ด ์ฃผ๋Š” ๊ธฐ๋ณธ ๋ชจ๋ธ
11
Pod
โœ‘ ๋ฐฐํฌ ์ตœ์†Œ ๋‹จ์œ„
โœ‘ ํ•˜๋‚˜ ์ด์ƒ์˜ container (docker / rkt) ํฌํ•จ
โœ‘ ํ•จ๊ป˜ ํฌํ•จ์‹œ์ผœ์•ผ ํ•  ๊ฒƒ์ด ์žˆ๋‹ค๋ฉด ํ•จ๊ป˜ ์„ ์–ธ
โœ‘ Resources
โœ‘ Volumes, Port, โ€ฆ
โœ‘ CPU, Memory
โœ‘ Request, Limit
โœ‘ livenessProbe
โœ‘ โ€ฆ
โœ‘ Unique IP address
12
rkt (rock-it) ์€ experimental
ํ•จ๊ป˜ ํฌํ•จ์‹œ์ผœ์•ผํ•  ๊ฒƒ์ด ์žˆ์„ ๋•Œ ํ•จ๊ป˜ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.
๊ธฐ๋ณธ์ ์œผ๋กœ container ๊ธฐ๋ฐ˜์ด๊ธฐ๋•Œ๋ฌธ์— OS๋‚˜ dependency ๋ฌธ์ œ๋Š” ์‰ฝ๊ฒŒ ํ•ด๊ฒฐ์ด ๋ฉ๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ hello world ์ˆ˜์ค€์˜ guide์—์„  ์–ธ๊ธ‰์ด ์•ˆ๋˜์ง€๋งŒ
resource ๊ด€๋ฆฌ๊ฐ€ ์ค‘์š”ํ•˜๋ฉฐ, Pod์€ Kubernetes์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐœ๋…์œผ๋กœ ์•Œ๋ ค์ ธ์žˆ์ง€๋งŒ
๊ฐ€์žฅ ๋‹ค๋ฃจ๊ธฐ ์–ด๋ ต๊ณ  ์ค‘์š”ํ•œ ๋Œ€์ƒ์ž…๋‹ˆ๋‹ค. ์‚ฝ์งˆํ•ด๋ณด์‹œ๋ฉด ์•Œ๊ฒŒ๋ฉ๋‹ˆ๋‹ค.
์ง„์งœ! ๊ทธ๋ ‡๊ธฐ๋•Œ๋ฌธ์— Kubernetes๋Š” ํ•™์Šตํ•ด์•ผํ•  ๊ฒƒ์ด ์ ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
Creating a Pod
$ kubectl create -f airflow-web.yaml
1 kind: Pod
2 apiVersion: v1
3 metadata:
4 namespace: dev
5 name: airflow-web
6 labels:
7 app: airflow-web
8 spec:
9 containers:
10 - image: "gcr.io/<PROJECT_ID>/airflow:v1b35"
11 args: ["webserver"]
12 name: airflow-web
13 imagePullPolicy: IfNotPresent
14 ports:
15 - containerPort: 8080
16 protocol: TCP
17 resources:
18 requests: {cpu: "250m", memory: "128Mi"}
19 limits: {cpu: "500m", memory: "512Mi"}
QoS
โœ‘ Guaranteed
โœ‘ Limits OR Limits = Requests
โœ‘ Burstable
โœ‘ Limits not set OR Requests != Limits
โœ‘ Guaranteed and Best-Effort = Burstable
โœ‘ Burstable and Best-Effort = Burstable
โœ‘ Best-Effort
โœ‘ Requests, Limits ๋ชจ๋‘ ์„ค์ • ์•ˆ๋œ ๊ฒฝ์šฐ
โœ‘ ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ oom_score_adjust ๊ฒฐ์ •
โœ‘ ์ค‘์š”ํ•œ ๊ฒƒ์ด ๋จผ์ € kill ๋  ์ˆ˜ ์žˆ์œผ๋‹ˆ Resources ์„ค์ • ์ค‘์š”.
14
Pod์€ 2๊ฐœ ์ด์ƒ์˜ container๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ธฐ๋•Œ๋ฌธ์—
Guaranteed ๊ฐ€ ์žˆ๋”๋ผ๋„ Burstable ๋กœ ๋ถ„๋ฅ˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ
๋‹ค.
Expose
โœ‘ $ kubectl expose 
โœ‘ pod/airflow-web 
โœ‘ โ€”namespace dev 
โœ‘ โ€”port=8080 
โœ‘ โ€”target-port=8080 
โœ‘ โ€”type=LoadBalancer
โœ‘ $ kubectl get service โ€”namespace dev
โœ‘ $ open http://EXTERNAL_IP:8080/
15
์™ธ๋ถ€๋กœ ๋…ธ์ถœํ•˜๊ธฐ์œ„ํ•ด์„  expose๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
โ€”type ์„ ๋ณ„๋„๋กœ ๊ธฐ๋กํ•˜์ง€ ์•Š์œผ๋ฉด ClusterIP๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ
๋‹ค.
HTTP LoadBalancer๋Š” Ingress Object Model ํ†ตํ•ด์„œ ํ•˜
๋ฉฐ ์ด ๋ฐœํ‘œ์—์„œ๋Š” ์ž์„ธํžˆ ์–ธ๊ธ‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
Deployment
โœ‘ Provisioning
โœ‘ OS, Network, โ€ฆ
โœ‘ Resource (CPU, Memory, Storage, โ€ฆ)
โœ‘ Application Code
โœ‘ Dependencies
โœ‘ Configurations
โœ‘ Update
โœ‘ Rolling Update
โœ‘ Blue-Green Deployment
โœ‘ Rollback
16
17
Kubernetes ConfigMap
- ์ฝ”๋“œ๋ณ€๊ฒฝ ์—†์ด Configuration
ConfigMap
$ kubectl create -f config.yaml
kind: ConfigMap
apiVersion: v1
metadata:
name: airflow-conf
namespace: dev
data:
airflow.cfg.file: |-
[core]
airflow_home = /opt/airflow
dags_folder = /opt/airflow/dags
base_log_folder = /opt/airflow/logs
ํ•˜๋‚˜์˜ ๋‹จ์ผ ์ฝ”๋“œ๋ฒ ์ด์Šค๋กœ
์–ธ์ œ๋ผ๋„ ์„ค์ •์„ ๊ฐˆ์•„ ์—Ž๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.
Mounting ConfigMap
as Volume
โ€ฆ
spec:
volumes:
- name: airflow-conf
configMap:
name: airflow-conf
items:
- key: airflow.cfg.file
path: airflow.cfg
containers:
- image: "gcr.io/<PROJECT_ID>/airflow:v1b35"
โ€ฆ
volumeMounts:
- name: airflow-conf
mountPath: /etc/config
โ€ฆ
๋ณผ๋ฅจ ๋งˆ์šดํŠธ!
ํ—ท๊ฐˆ๋ฆฌ๋ฉด ์ด์ „ ์žฅ์„ ๋‹ค์‹œ ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
Deployment
โœ‘ Provisioning
โœ‘ OS, Network, โ€ฆ
โœ‘ Resource (CPU, Memory, Storage, โ€ฆ)
โœ‘ Application Code
โœ‘ Dependencies
โœ‘ Configurations
โœ‘ Update
โœ‘ Rolling Update
โœ‘ Blue-Green Deployment
โœ‘ Rollback
20
Kubernetes Deployment
21
Kubernetes Deployment
โœ‘ Newer and Higher level concept (since 1.2)
โœ‘ ReplicaSet, ReplicationController
โœ‘ Pods, ReplicaSet ๋“ฑ ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ธฐ์กด์˜ ๊ฒƒ์„
๋ฐ”๊พธ๋Š” ๋“ฑ ์ผ๋ จ์˜ ์ž‘์—…์„ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค.
โœ‘ Replica, Autoscaling
โœ‘ Rolling Update, Rolling Back
โœ‘ PodTemplate
22
Deployment ๊ฐ€ ์•Œ์•„์„œ ํ•ด์ฃผ๊ธฐ๋•Œ๋ฌธ์— Pod์ด๋‚˜ ReplicaSet ๋“ฑ์˜ ๋ฆฌ์†Œ
์Šค ์ƒ์„ฑ์—๋Œ€ํ•ด ํฌ๊ฒŒ ๊ณ ๋ฏผํ•˜์‹ค ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.
๊ธฐ๋ณธ์ ์œผ๋กœ ๋ช…์‹œํ•˜๋Š” ๊ฒƒ๋“ค์€ replica ๋ž‘ update strategy ์ •๋„์ด๊ตฌ์š”.
์ƒ์„ฑํ•œ deployment ๋กœ autoscale, rolling update, rollout ๋“ฑ์„ ์ˆ˜ํ–‰
ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Deployment์—๋„ ์ƒ์„ฑํ•  Pod์—๋Œ€ํ•œ ๊ธฐ๋ณธ Template์„ ๋ช…์„ธํ•ฉ๋‹ˆ๋‹ค.
23
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: af-web
namespace: dev
spec:
replicas: 3
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
template:
# Pod ์ƒ๋žต
Writing a Deployment spec
$ kubectl create -f airflow-web-deployment.yaml
Expose
โœ‘ $ kubectl expose 
โœ‘ deploy/airflow-web 
โœ‘ โ€”namespace dev 
โœ‘ โ€”port=8080 
โœ‘ โ€”target-port=8080 
โœ‘ โ€”type=LoadBalancer
โœ‘ $ kubectl get service โ€”namespace dev
โœ‘ $ open http://EXTERNAL_IP:8080/
24
Rolling Update
โœ‘ $ kubectl set image 
โœ‘ โ€”namespace dev 
โœ‘ deploy/af-web 
โœ‘ af-web=gcr.io/PROJECT_ID/REPO:VERSION
โœ‘ $ kubectl apply -f airflow-web-deployment.yaml
โœ‘ $ kubectl edit โ€”namespace dev deploy/af-web
25
Deployment
โœ‘ Provisioning
โœ‘ OS, Network, โ€ฆ
โœ‘ Resource (CPU, Memory, Storage, โ€ฆ)
โœ‘ Application Code
โœ‘ Dependencies
โœ‘ Configurations
โœ‘ Update
โœ‘ Rolling Update
โœ‘ Blue-Green Deployment
โœ‘ Rollback
26
Rollback /1
โœ‘ $ kubectl set image 
โœ‘ โ€”namespace dev 
โœ‘ deploy/af-web 
โœ‘ af-web=gcr.io/PROJECT_ID/REPO:VERSION
โœ‘ $ kubectl apply OR kubectl edit
27
Rollback /2
โœ‘ $ kubectl rollout history 
โœ‘ โ€”namespace dev deploy/af-web
โœ‘ $ kubectl rollout undo 
โœ‘ โ€”namespace dev โ€”dry-run=true 
โœ‘ โ€”to-revision=<RevNo> deploy/af-web
28
Deployment
โœ‘ Provisioning
โœ‘ OS, Network, โ€ฆ
โœ‘ Resource (CPU, Memory, Storage, โ€ฆ)
โœ‘ Application Code
โœ‘ Dependencies
โœ‘ Configurations
โœ‘ Update
โœ‘ Rolling Update
โœ‘ Blue-Green Deployment
โœ‘ Rollback
29
Blue-Green Deployment ๋Š” ๊ฐ€์žฅ ๋‚˜์ค‘์— ๋‹ค๋ฃน๋‹ˆ๋‹ค.
Scalability
- scale in/out, autoscale
30
Scale
โœ‘ $ kubectl scale โ€”namespace dev 
โœ‘ โ€”replicas=3 deploy/af-worker
โœ‘ ํ˜„์žฌ replica๊ฐ€ 2๊ฐœ์ผ ๋•Œ๋งŒ ์ ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•,
โœ‘ $ kubectl scale โ€”namespace dev 
โœ‘ โ€”replicas=3 โ€”current-replicas=2 deploy/af-worker
31
Horizontal Pod Autoscaling
since 1.2
โœ‘ stable ๋ฒ„์ „์—์„  cpu๋งŒ ์ง€์›
โœ‘ $ kubectl autoscale 
โœ‘ deploy/af-worker 
โœ‘ โ€”cpu-percent=60 โ€”min=1 โ€”max=4
โœ‘ $ kubectl get hpa
โœ‘ autoscaling/v2alpha1 ์—์„œ ๋” ๋‹ค์–‘ํ•˜๊ฒŒ ์ œ์–ด ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค.
โœ‘ memory, multiple custom metrics
32
Scalability
- scale up/down
33
Scalability
โœ‘ Scale up/down
โœ‘ Assigning Pods to Nodes
โœ‘ Attach label to the node
โœ‘ Add a nodeSelector field to Pod spec
34
Node Pool
โœ‘ $ gcloud container node-pools create NAME 
โœ‘ โ€”zone ZONE --cluster CLUSTER 
โœ‘ โ€”machine-type n1-standard-4 
โœ‘ โ€”num-nodes 3
35
Preemptible Node Pool
โœ‘ $ gcloud beta container node-pools create NAME 
โœ‘ โ€”zone ZONE --cluster CLUSTER 
โœ‘ โ€”machine-type n1-standard-4 
โœ‘ โ€”num-nodes 3 
โœ‘ โ€”preemptible
โœ‘ $ kubectl get nodes 
โœ‘ โ€”selector='cloud.google.com/gke-preemptible'
โœ‘ $ kubectl get nodes 
โœ‘ โ€”selector='!cloud.google.com/gke-preemptible'
36
์ €๋ ดํ•œ ๊ฐ€๊ฒฉ์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์šด์˜ํ•ด๋ด…์‹œ๋‹ค.
๊ทผ๋ฐ ์ค‘์š”ํ•œ POD์ด preemptible์— ์˜ฌ๋ผ๊ฐ€๋ฉด ์–ด๋–ป๊ฒŒ
๋ ๊นŒ์š”โ€ฆ
Pod์„ ํŠน์ • ๋…ธ๋“œ์— ํ• ๋‹น๋˜๋„๋ก ์•Œ์•„๋ด…์‹œ๋‹ค.
Label
โœ‘ ๋ชจ๋“  resource์— label ์ถ”๊ฐ€/์‚ญ์ œ ๊ฐ€๋Šฅ
โœ‘ $ kubectl label node NODE_NAME 
โœ‘ โ€”overwrite key=value
โœ‘ Removing a label
โœ‘ $ kubectl label node NODE_NAME key-
37
NodeSelector ๋ฅผ ์–ธ๊ธ‰ํ•˜๊ธฐ ์ „์— ๊ฐ ๋ฆฌ์†Œ์Šค (node, pod, โ€ฆ)์— Label์„ ๋‹ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
38
apiVersion: v1
kind: Pod
metadata:
labels:
run: af-worker
spec:
nodeSelector:
cloud.google.com/gke-preemptible: 'true'
containers:
- image: โ€ฆ
name: af-worker
์ข€ ์ „์— ์–ธ๊ธ‰ํ•œ Label ๊ฐ’์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Blue-Green Deployment /1
39
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
color: green || blue
app: af-web
name: af-web-green || af-web-blue
spec:
replicas: 1
template:
metadata:
labels:
color: green || blue
app: af-web
Deployment ๋ฅผ ๋‘๊ฐœ๋ฅผ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.
ํ•˜๋‚˜๋Š” blue ๋˜ ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” green ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.
์ „์ฒด๋ฅผ ํ•œ๋ฒˆ์— ๋‹ค๋ฅธ ๋ฒ„์ „์œผ๋กœ route
์‹œ์ผœ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
Blue-Green Deployment /2
40
spec:
ports:
- nodePort: 32354
port: 8080
protocol: TCP
targetPort: 8080
selector:
color: green
app: af-web
type: LoadBalancer
apiVersion: v1
kind: Service
metadata:
labels:
run: af-web
name: af-web
Expose ํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ Service ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค.
$ kubectl get services
$ kubectl edit service/<SERVICE_NAME>
ํ•œ ๋‹ค์Œ ์„ค์ •์ฒ˜๋Ÿผ selector ๊ฐ’์„ ์กฐ์ •ํ•ด์„œ ์ƒˆ๋กญ๊ฒŒ ๋ฐฐํฌํ•œ ๊ณณ์œผ๋กœ ๊ฐ€๋„๋ก
ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Deployment
โœ‘ Provisioning
โœ‘ OS, Network, โ€ฆ
โœ‘ Resource (CPU, Memory, Storage, โ€ฆ)
โœ‘ Application Code
โœ‘ Dependencies
โœ‘ Configurations
โœ‘ Update
โœ‘ Rolling Update
โœ‘ Blue-Green Deployment
โœ‘ Rollback
41
๊ทธ ์™ธ์—๋„โ€ฆ
์‹œ๊ฐ„ ๋ถ€์กฑ์œผ๋กœ โ€ฆ.
42
ํ•˜๋‚˜์˜ ํด๋Ÿฌ์Šคํ„ฐ
2๊ฐœ ์ด์ƒ์˜ ํŒ€
43
Resource Quota
โœ‘ Namespace ๋ณ„๋กœ resource Quota
44
apiVersion: v1
kind: ResourceQuota
metadata:
name: compute-resources
spec:
hard:
pods: "4"
requests.cpu: "1"
requests.memory: 1Gi
limits.cpu: "2"
limits.memory: 2Gi
configmaps
persistentvolumeclaims
replicationcontrollers
secrets
services
services.loadbalancers
์ด๋ฒˆ ๋ฐœํ‘œ์—์„œ โ€”namespace ์˜ต์…˜์ด
๋“ค์–ด์žˆ๋Š” quota ๊ธฐ๋Šฅ๋•Œ๋ฌธ์— ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.
ํ™˜๊ฒฝ๋ณ„๋กœ quota๋ฅผ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ๊ณ 
์กฐ์ง๋ณ„๋กœ ๋ถ„๋ฆฌ์‹œํ‚ฌ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋กœ์˜ ๊ฐ„์„ญ์„ ์ค„์ผ ์ˆ˜ ์žˆ๊ฒ ์ฃ .
Google Cloud HTTPS
LoadBalancer
45
์•„์ง Internal Load Balancer ๊ฐ€ ์•ˆ๋˜๋Š” ๊ฑด ์•„์‰ฝ์Šต๋‹ˆ๋‹ค.
Issue ๋กœ๋Š” ๋“ฑ๋ก๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.
Google Cloud
Container Builder
์ฝ”๋“œ๋ณ€๊ฒฝ์‹œ ์ปจํ…Œ์ด๋„ˆ ๋นŒ๋“œํ•ด์„œ
Google Container Registry๋กœ ์ž๋™ ๋ฐฐํฌ
46
StatefulSets
์ƒํƒœ๋ฅผ ๊ฐ€์ง€๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜
StorageClass
volumeClaimTemplates (PersistentVolumeClaim)
47
Q & A
48
๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
49

More Related Content

What's hot

Toward kubernetes native data center
Toward kubernetes native data centerToward kubernetes native data center
Toward kubernetes native data center
์–ดํ˜• ์ด
ย 
์ œ2ํšŒ ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜ Kubernetes
์ œ2ํšŒ ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜ Kubernetes์ œ2ํšŒ ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜ Kubernetes
์ œ2ํšŒ ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜ Kubernetes
Tommy Lee
ย 
Truly understanding container
Truly understanding containerTruly understanding container
Truly understanding container
์–ดํ˜• ์ด
ย 
Docker ๊ธฐ๋ณธ ๋ฐ Docker Swarm์„ ํ™œ์šฉํ•œ ๋ถ„์‚ฐ ์„œ๋ฒ„ ๊ด€๋ฆฌ A๋ถ€ํ„ฐ Z๊นŒ์ง€ [์ „์ฒด๋ชจ๋“œ์—์„œ ๋ด์ฃผ์„ธ์š”]
Docker ๊ธฐ๋ณธ ๋ฐ Docker Swarm์„ ํ™œ์šฉํ•œ ๋ถ„์‚ฐ ์„œ๋ฒ„ ๊ด€๋ฆฌ A๋ถ€ํ„ฐ Z๊นŒ์ง€ [์ „์ฒด๋ชจ๋“œ์—์„œ ๋ด์ฃผ์„ธ์š”]Docker ๊ธฐ๋ณธ ๋ฐ Docker Swarm์„ ํ™œ์šฉํ•œ ๋ถ„์‚ฐ ์„œ๋ฒ„ ๊ด€๋ฆฌ A๋ถ€ํ„ฐ Z๊นŒ์ง€ [์ „์ฒด๋ชจ๋“œ์—์„œ ๋ด์ฃผ์„ธ์š”]
Docker ๊ธฐ๋ณธ ๋ฐ Docker Swarm์„ ํ™œ์šฉํ•œ ๋ถ„์‚ฐ ์„œ๋ฒ„ ๊ด€๋ฆฌ A๋ถ€ํ„ฐ Z๊นŒ์ง€ [์ „์ฒด๋ชจ๋“œ์—์„œ ๋ด์ฃผ์„ธ์š”]
David Lee
ย 

What's hot (20)

Docker๊ธฐ๋ฐ˜ ๋ถ„์‚ฐ ํ”Œ๋žซํผ
Docker๊ธฐ๋ฐ˜ ๋ถ„์‚ฐ ํ”Œ๋žซํผDocker๊ธฐ๋ฐ˜ ๋ถ„์‚ฐ ํ”Œ๋žซํผ
Docker๊ธฐ๋ฐ˜ ๋ถ„์‚ฐ ํ”Œ๋žซํผ
ย 
Toward kubernetes native data center
Toward kubernetes native data centerToward kubernetes native data center
Toward kubernetes native data center
ย 
Tech planet 2015 Docker แ„แ…ณแ†ฏแ„…แ…กแ„‹แ…ฎแ„ƒแ…ณ ๊ตฌ์ถ• ํ”„๋กœ์ ํŠธ - d4
Tech planet 2015 Docker แ„แ…ณแ†ฏแ„…แ…กแ„‹แ…ฎแ„ƒแ…ณ ๊ตฌ์ถ• ํ”„๋กœ์ ํŠธ - d4Tech planet 2015 Docker แ„แ…ณแ†ฏแ„…แ…กแ„‹แ…ฎแ„ƒแ…ณ ๊ตฌ์ถ• ํ”„๋กœ์ ํŠธ - d4
Tech planet 2015 Docker แ„แ…ณแ†ฏแ„…แ…กแ„‹แ…ฎแ„ƒแ…ณ ๊ตฌ์ถ• ํ”„๋กœ์ ํŠธ - d4
ย 
[NDC17] Kubernetes๋กœ ๊ฐœ๋ฐœ์„œ๋ฒ„ ๊ฐ„๋‹จํžˆ ์ฐ์–ด๋‚ด๊ธฐ
[NDC17] Kubernetes๋กœ ๊ฐœ๋ฐœ์„œ๋ฒ„ ๊ฐ„๋‹จํžˆ ์ฐ์–ด๋‚ด๊ธฐ[NDC17] Kubernetes๋กœ ๊ฐœ๋ฐœ์„œ๋ฒ„ ๊ฐ„๋‹จํžˆ ์ฐ์–ด๋‚ด๊ธฐ
[NDC17] Kubernetes๋กœ ๊ฐœ๋ฐœ์„œ๋ฒ„ ๊ฐ„๋‹จํžˆ ์ฐ์–ด๋‚ด๊ธฐ
ย 
Rancher Simple User Guide
Rancher Simple User GuideRancher Simple User Guide
Rancher Simple User Guide
ย 
์ œ2ํšŒ ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜ Kubernetes
์ œ2ํšŒ ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜ Kubernetes์ œ2ํšŒ ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜ Kubernetes
์ œ2ํšŒ ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜ Kubernetes
ย 
Truly understanding container
Truly understanding containerTruly understanding container
Truly understanding container
ย 
Prometheus in openstack-helm
Prometheus in openstack-helmPrometheus in openstack-helm
Prometheus in openstack-helm
ย 
Docker Container
Docker ContainerDocker Container
Docker Container
ย 
DevOps with Docker
DevOps with DockerDevOps with Docker
DevOps with Docker
ย 
Introduce Docker
Introduce DockerIntroduce Docker
Introduce Docker
ย 
Docker๋กœ ์„œ๋ฒ„ ๊ฐœ๋ฐœ ํŽธํ•˜๊ฒŒ ํ•˜๊ธฐ
Docker๋กœ ์„œ๋ฒ„ ๊ฐœ๋ฐœ ํŽธํ•˜๊ฒŒ ํ•˜๊ธฐDocker๋กœ ์„œ๋ฒ„ ๊ฐœ๋ฐœ ํŽธํ•˜๊ฒŒ ํ•˜๊ธฐ
Docker๋กœ ์„œ๋ฒ„ ๊ฐœ๋ฐœ ํŽธํ•˜๊ฒŒ ํ•˜๊ธฐ
ย 
Enterprise Docker
Enterprise DockerEnterprise Docker
Enterprise Docker
ย 
๋„์ปค(Docker) ๋ฉ”ํŠธ๋ฆญ์Šค & ๋กœ๊ทธ ์ˆ˜์ง‘
๋„์ปค(Docker) ๋ฉ”ํŠธ๋ฆญ์Šค & ๋กœ๊ทธ ์ˆ˜์ง‘๋„์ปค(Docker) ๋ฉ”ํŠธ๋ฆญ์Šค & ๋กœ๊ทธ ์ˆ˜์ง‘
๋„์ปค(Docker) ๋ฉ”ํŠธ๋ฆญ์Šค & ๋กœ๊ทธ ์ˆ˜์ง‘
ย 
Docker (Compose) ํ™œ์šฉ - ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์„ฑํ•˜๊ธฐ
Docker (Compose) ํ™œ์šฉ - ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์„ฑํ•˜๊ธฐDocker (Compose) ํ™œ์šฉ - ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์„ฑํ•˜๊ธฐ
Docker (Compose) ํ™œ์šฉ - ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์„ฑํ•˜๊ธฐ
ย 
Docker.แ„‰แ…ฉแ„€แ…ข.30 m
Docker.แ„‰แ…ฉแ„€แ…ข.30 mDocker.แ„‰แ…ฉแ„€แ…ข.30 m
Docker.แ„‰แ…ฉแ„€แ…ข.30 m
ย 
Docker แ„‰แ…กแ„‚แ…ขแ„€แ…ญแ„‹แ…ฒแ†จ แ„Œแ…กแ„…แ…ญ
Docker แ„‰แ…กแ„‚แ…ขแ„€แ…ญแ„‹แ…ฒแ†จ แ„Œแ…กแ„…แ…ญDocker แ„‰แ…กแ„‚แ…ขแ„€แ…ญแ„‹แ…ฒแ†จ แ„Œแ…กแ„…แ…ญ
Docker แ„‰แ…กแ„‚แ…ขแ„€แ…ญแ„‹แ…ฒแ†จ แ„Œแ…กแ„…แ…ญ
ย 
XECon2015 :: [1-5] ๊น€ํ›ˆ๋ฏผ - ์„œ๋ฒ„ ์šด์˜์ž๊ฐ€ ๊ผญ ์•Œ์•„์•ผ ํ•  Docker
XECon2015 :: [1-5] ๊น€ํ›ˆ๋ฏผ - ์„œ๋ฒ„ ์šด์˜์ž๊ฐ€ ๊ผญ ์•Œ์•„์•ผ ํ•  DockerXECon2015 :: [1-5] ๊น€ํ›ˆ๋ฏผ - ์„œ๋ฒ„ ์šด์˜์ž๊ฐ€ ๊ผญ ์•Œ์•„์•ผ ํ•  Docker
XECon2015 :: [1-5] ๊น€ํ›ˆ๋ฏผ - ์„œ๋ฒ„ ์šด์˜์ž๊ฐ€ ๊ผญ ์•Œ์•„์•ผ ํ•  Docker
ย 
Docker ๊ธฐ๋ณธ ๋ฐ Docker Swarm์„ ํ™œ์šฉํ•œ ๋ถ„์‚ฐ ์„œ๋ฒ„ ๊ด€๋ฆฌ A๋ถ€ํ„ฐ Z๊นŒ์ง€ [์ „์ฒด๋ชจ๋“œ์—์„œ ๋ด์ฃผ์„ธ์š”]
Docker ๊ธฐ๋ณธ ๋ฐ Docker Swarm์„ ํ™œ์šฉํ•œ ๋ถ„์‚ฐ ์„œ๋ฒ„ ๊ด€๋ฆฌ A๋ถ€ํ„ฐ Z๊นŒ์ง€ [์ „์ฒด๋ชจ๋“œ์—์„œ ๋ด์ฃผ์„ธ์š”]Docker ๊ธฐ๋ณธ ๋ฐ Docker Swarm์„ ํ™œ์šฉํ•œ ๋ถ„์‚ฐ ์„œ๋ฒ„ ๊ด€๋ฆฌ A๋ถ€ํ„ฐ Z๊นŒ์ง€ [์ „์ฒด๋ชจ๋“œ์—์„œ ๋ด์ฃผ์„ธ์š”]
Docker ๊ธฐ๋ณธ ๋ฐ Docker Swarm์„ ํ™œ์šฉํ•œ ๋ถ„์‚ฐ ์„œ๋ฒ„ ๊ด€๋ฆฌ A๋ถ€ํ„ฐ Z๊นŒ์ง€ [์ „์ฒด๋ชจ๋“œ์—์„œ ๋ด์ฃผ์„ธ์š”]
ย 
XECon2015 :: [2-4] ์˜ค์Šนํ˜„ - Chak ์„œ๋น„์Šค ๊ตฌ์ถ•๊ธฐ with XE3
XECon2015 :: [2-4] ์˜ค์Šนํ˜„ - Chak ์„œ๋น„์Šค ๊ตฌ์ถ•๊ธฐ with XE3XECon2015 :: [2-4] ์˜ค์Šนํ˜„ - Chak ์„œ๋น„์Šค ๊ตฌ์ถ•๊ธฐ with XE3
XECon2015 :: [2-4] ์˜ค์Šนํ˜„ - Chak ์„œ๋น„์Šค ๊ตฌ์ถ•๊ธฐ with XE3
ย 

Viewers also liked

แ„€แ…ตแ„€แ…จแ„’แ…กแ†จแ„‰แ…ณแ†ธ แ„’แ…งแ†ซแ„Œแ…ขแ„‹แ…ชแ„†แ…ตแ„…แ…ข Pdf
แ„€แ…ตแ„€แ…จแ„’แ…กแ†จแ„‰แ…ณแ†ธ แ„’แ…งแ†ซแ„Œแ…ขแ„‹แ…ชแ„†แ…ตแ„…แ…ข Pdfแ„€แ…ตแ„€แ…จแ„’แ…กแ†จแ„‰แ…ณแ†ธ แ„’แ…งแ†ซแ„Œแ…ขแ„‹แ…ชแ„†แ…ตแ„…แ…ข Pdf
แ„€แ…ตแ„€แ…จแ„’แ…กแ†จแ„‰แ…ณแ†ธ แ„’แ…งแ†ซแ„Œแ…ขแ„‹แ…ชแ„†แ…ตแ„…แ…ข Pdf
ํšจ๊ทผ ์œค
ย 
์„œ๋ฒ„๋ฆฌ์Šค IoT ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ ๋ฐ ๊ตฌํ˜„ ์‚ฌ๋ก€ : ์œค์„์ฐฌ (AWS ํ…Œํฌ์—๋ฐ˜์ ค๋ฆฌ์ŠคํŠธ)
์„œ๋ฒ„๋ฆฌ์Šค IoT ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ ๋ฐ ๊ตฌํ˜„ ์‚ฌ๋ก€ : ์œค์„์ฐฌ (AWS ํ…Œํฌ์—๋ฐ˜์ ค๋ฆฌ์ŠคํŠธ)์„œ๋ฒ„๋ฆฌ์Šค IoT ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ ๋ฐ ๊ตฌํ˜„ ์‚ฌ๋ก€ : ์œค์„์ฐฌ (AWS ํ…Œํฌ์—๋ฐ˜์ ค๋ฆฌ์ŠคํŠธ)
์„œ๋ฒ„๋ฆฌ์Šค IoT ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ ๋ฐ ๊ตฌํ˜„ ์‚ฌ๋ก€ : ์œค์„์ฐฌ (AWS ํ…Œํฌ์—๋ฐ˜์ ค๋ฆฌ์ŠคํŠธ)
Amazon Web Services Korea
ย 

Viewers also liked (20)

Google Cloud Next 2017 Seoul Extended 1st Session.
Google Cloud Next 2017 Seoul Extended 1st Session.Google Cloud Next 2017 Seoul Extended 1st Session.
Google Cloud Next 2017 Seoul Extended 1st Session.
ย 
แ„€แ…ตแ„€แ…จแ„’แ…กแ†จแ„‰แ…ณแ†ธ แ„’แ…งแ†ซแ„Œแ…ขแ„‹แ…ชแ„†แ…ตแ„…แ…ข Pdf
แ„€แ…ตแ„€แ…จแ„’แ…กแ†จแ„‰แ…ณแ†ธ แ„’แ…งแ†ซแ„Œแ…ขแ„‹แ…ชแ„†แ…ตแ„…แ…ข Pdfแ„€แ…ตแ„€แ…จแ„’แ…กแ†จแ„‰แ…ณแ†ธ แ„’แ…งแ†ซแ„Œแ…ขแ„‹แ…ชแ„†แ…ตแ„…แ…ข Pdf
แ„€แ…ตแ„€แ…จแ„’แ…กแ†จแ„‰แ…ณแ†ธ แ„’แ…งแ†ซแ„Œแ…ขแ„‹แ…ชแ„†แ…ตแ„…แ…ข Pdf
ย 
Spark and Shark
Spark and SharkSpark and Shark
Spark and Shark
ย 
์Šคํ”„๋ง JPA ๊ฐ•์ขŒ(Spring Data JPA ๊ฐ„๋‹จ ์˜ˆ์ œ)
์Šคํ”„๋ง JPA ๊ฐ•์ขŒ(Spring Data JPA ๊ฐ„๋‹จ ์˜ˆ์ œ)์Šคํ”„๋ง JPA ๊ฐ•์ขŒ(Spring Data JPA ๊ฐ„๋‹จ ์˜ˆ์ œ)
์Šคํ”„๋ง JPA ๊ฐ•์ขŒ(Spring Data JPA ๊ฐ„๋‹จ ์˜ˆ์ œ)
ย 
์ผ๋‹จ ์‹œ์ž‘ํ•˜๋Š” ์ฝ”ํ‹€๋ฆฐ
์ผ๋‹จ ์‹œ์ž‘ํ•˜๋Š” ์ฝ”ํ‹€๋ฆฐ์ผ๋‹จ ์‹œ์ž‘ํ•˜๋Š” ์ฝ”ํ‹€๋ฆฐ
์ผ๋‹จ ์‹œ์ž‘ํ•˜๋Š” ์ฝ”ํ‹€๋ฆฐ
ย 
[Play.node] node.js ๋ฅผ ์‚ฌ์šฉํ•œ ๋Œ€๊ทœ๋ชจ ๊ธ€๋กœ๋ฒŒ(+์ค‘๊ตญ) ์„œ๋น„์Šค
[Play.node] node.js ๋ฅผ ์‚ฌ์šฉํ•œ ๋Œ€๊ทœ๋ชจ ๊ธ€๋กœ๋ฒŒ(+์ค‘๊ตญ) ์„œ๋น„์Šค[Play.node] node.js ๋ฅผ ์‚ฌ์šฉํ•œ ๋Œ€๊ทœ๋ชจ ๊ธ€๋กœ๋ฒŒ(+์ค‘๊ตญ) ์„œ๋น„์Šค
[Play.node] node.js ๋ฅผ ์‚ฌ์šฉํ•œ ๋Œ€๊ทœ๋ชจ ๊ธ€๋กœ๋ฒŒ(+์ค‘๊ตญ) ์„œ๋น„์Šค
ย 
Logical clocks
Logical clocksLogical clocks
Logical clocks
ย 
์„œ๋ฒ„๋ฆฌ์Šค IoT ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ ๋ฐ ๊ตฌํ˜„ ์‚ฌ๋ก€ : ์œค์„์ฐฌ (AWS ํ…Œํฌ์—๋ฐ˜์ ค๋ฆฌ์ŠคํŠธ)
์„œ๋ฒ„๋ฆฌ์Šค IoT ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ ๋ฐ ๊ตฌํ˜„ ์‚ฌ๋ก€ : ์œค์„์ฐฌ (AWS ํ…Œํฌ์—๋ฐ˜์ ค๋ฆฌ์ŠคํŠธ)์„œ๋ฒ„๋ฆฌ์Šค IoT ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ ๋ฐ ๊ตฌํ˜„ ์‚ฌ๋ก€ : ์œค์„์ฐฌ (AWS ํ…Œํฌ์—๋ฐ˜์ ค๋ฆฌ์ŠคํŠธ)
์„œ๋ฒ„๋ฆฌ์Šค IoT ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ ๋ฐ ๊ตฌํ˜„ ์‚ฌ๋ก€ : ์œค์„์ฐฌ (AWS ํ…Œํฌ์—๋ฐ˜์ ค๋ฆฌ์ŠคํŠธ)
ย 
Maintenance academy v1
Maintenance academy v1Maintenance academy v1
Maintenance academy v1
ย 
Analytics for Clover POS Overview
Analytics for Clover POS OverviewAnalytics for Clover POS Overview
Analytics for Clover POS Overview
ย 
Let's view tanzania
Let's view tanzaniaLet's view tanzania
Let's view tanzania
ย 
Heterosexualidad En Amenaza De Extincion
Heterosexualidad En Amenaza De ExtincionHeterosexualidad En Amenaza De Extincion
Heterosexualidad En Amenaza De Extincion
ย 
Excelling in your sales representation job
Excelling in your sales representation jobExcelling in your sales representation job
Excelling in your sales representation job
ย 
What to do before, during and after buying your home
What to do before, during and after buying your homeWhat to do before, during and after buying your home
What to do before, during and after buying your home
ย 
User Experience for Mobile (for Cambridge Mobile App Group)
User Experience for Mobile (for Cambridge Mobile App Group)User Experience for Mobile (for Cambridge Mobile App Group)
User Experience for Mobile (for Cambridge Mobile App Group)
ย 
Nuorisotakuu 2.0
Nuorisotakuu 2.0Nuorisotakuu 2.0
Nuorisotakuu 2.0
ย 
The unbearable likeness of web design
The unbearable likeness of web designThe unbearable likeness of web design
The unbearable likeness of web design
ย 
Vastgoedfirma prins Laurent teert op subsidies
Vastgoedfirma prins Laurent teert op subsidiesVastgoedfirma prins Laurent teert op subsidies
Vastgoedfirma prins Laurent teert op subsidies
ย 
Navigating Student Loans in Retirement
Navigating Student Loans in RetirementNavigating Student Loans in Retirement
Navigating Student Loans in Retirement
ย 
Actu Deฬfense du 30 mars 2017
Actu Deฬfense du 30 mars 2017Actu Deฬfense du 30 mars 2017
Actu Deฬfense du 30 mars 2017
ย 

Similar to Kubernetes on GCP

[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd
Park Jonggun
ย 
แ„‰แ…ฆแ„‰แ…งแ†ซ2_แ„ƒแ…ฆแ„‡แ…ฉแ„‰แ…งแ†ซแ„แ…ฆแ„แ…ณแ„ƒแ…ฆแ„‹แ…ต_Decapod_v1.2.pdf
แ„‰แ…ฆแ„‰แ…งแ†ซ2_แ„ƒแ…ฆแ„‡แ…ฉแ„‰แ…งแ†ซแ„แ…ฆแ„แ…ณแ„ƒแ…ฆแ„‹แ…ต_Decapod_v1.2.pdfแ„‰แ…ฆแ„‰แ…งแ†ซ2_แ„ƒแ…ฆแ„‡แ…ฉแ„‰แ…งแ†ซแ„แ…ฆแ„แ…ณแ„ƒแ…ฆแ„‹แ…ต_Decapod_v1.2.pdf
แ„‰แ…ฆแ„‰แ…งแ†ซ2_แ„ƒแ…ฆแ„‡แ…ฉแ„‰แ…งแ†ซแ„แ…ฆแ„แ…ณแ„ƒแ…ฆแ„‹แ…ต_Decapod_v1.2.pdf
Jaesuk Ahn
ย 

Similar to Kubernetes on GCP (20)

docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Clouddocker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
ย 
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ํ™œ์šฉํ•œ ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ•
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ํ™œ์šฉํ•œ ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ•[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ํ™œ์šฉํ•œ ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ•
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ํ™œ์šฉํ•œ ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ•
ย 
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…] Docker๋ฅผ ํ™œ์šฉํ•œ Gitlab CI/CD ๊ตฌ์„ฑ ํ…Œ์ŠคํŠธ
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…] Docker๋ฅผ ํ™œ์šฉํ•œ Gitlab CI/CD ๊ตฌ์„ฑ ํ…Œ์ŠคํŠธ[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…] Docker๋ฅผ ํ™œ์šฉํ•œ Gitlab CI/CD ๊ตฌ์„ฑ ํ…Œ์ŠคํŠธ
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…] Docker๋ฅผ ํ™œ์šฉํ•œ Gitlab CI/CD ๊ตฌ์„ฑ ํ…Œ์ŠคํŠธ
ย 
Bigquery์™€ airflow๋ฅผ ์ด์šฉํ•œ ๋ฐ์ดํ„ฐ ๋ถ„์„ ์‹œ์Šคํ…œ ๊ตฌ์ถ• v1 ๋‚˜๋ฌด๊ธฐ์ˆ (์ฃผ) ์ตœ์œ ์„ 20170912
Bigquery์™€ airflow๋ฅผ ์ด์šฉํ•œ ๋ฐ์ดํ„ฐ ๋ถ„์„ ์‹œ์Šคํ…œ ๊ตฌ์ถ• v1  ๋‚˜๋ฌด๊ธฐ์ˆ (์ฃผ) ์ตœ์œ ์„ 20170912Bigquery์™€ airflow๋ฅผ ์ด์šฉํ•œ ๋ฐ์ดํ„ฐ ๋ถ„์„ ์‹œ์Šคํ…œ ๊ตฌ์ถ• v1  ๋‚˜๋ฌด๊ธฐ์ˆ (์ฃผ) ์ตœ์œ ์„ 20170912
Bigquery์™€ airflow๋ฅผ ์ด์šฉํ•œ ๋ฐ์ดํ„ฐ ๋ถ„์„ ์‹œ์Šคํ…œ ๊ตฌ์ถ• v1 ๋‚˜๋ฌด๊ธฐ์ˆ (์ฃผ) ์ตœ์œ ์„ 20170912
ย 
[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd
ย 
DevOps - CI/CD ์•Œ์•„๋ณด๊ธฐ
DevOps - CI/CD ์•Œ์•„๋ณด๊ธฐDevOps - CI/CD ์•Œ์•„๋ณด๊ธฐ
DevOps - CI/CD ์•Œ์•„๋ณด๊ธฐ
ย 
Bigdata with Google Cloud
Bigdata with Google CloudBigdata with Google Cloud
Bigdata with Google Cloud
ย 
ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ ์•Œ์•„์•ผํ•  ์„ฑ๋Šฅ ์ด์•ผ๊ธฐ
ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ ์•Œ์•„์•ผํ•  ์„ฑ๋Šฅ ์ด์•ผ๊ธฐํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ ์•Œ์•„์•ผํ•  ์„ฑ๋Šฅ ์ด์•ผ๊ธฐ
ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ ์•Œ์•„์•ผํ•  ์„ฑ๋Šฅ ์ด์•ผ๊ธฐ
ย 
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native ์„œ๋น„์Šค...
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native ์„œ๋น„์Šค...[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native ์„œ๋น„์Šค...
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native ์„œ๋น„์Šค...
ย 
[slideshare]k8s.pptx
[slideshare]k8s.pptx[slideshare]k8s.pptx
[slideshare]k8s.pptx
ย 
K8s in action02
K8s in action02K8s in action02
K8s in action02
ย 
Oracle History #9
Oracle History #9Oracle History #9
Oracle History #9
ย 
[OpenStack Days Korea 2016] Track4 - ํ•ด์™ธ ์‚ฌ๋ก€๋กœ ๋ณด๋Š” OpenStack Billing System
[OpenStack Days Korea 2016] Track4 - ํ•ด์™ธ ์‚ฌ๋ก€๋กœ ๋ณด๋Š” OpenStack Billing System[OpenStack Days Korea 2016] Track4 - ํ•ด์™ธ ์‚ฌ๋ก€๋กœ ๋ณด๋Š” OpenStack Billing System
[OpenStack Days Korea 2016] Track4 - ํ•ด์™ธ ์‚ฌ๋ก€๋กœ ๋ณด๋Š” OpenStack Billing System
ย 
ํ•ด์™ธ ์‚ฌ๋ก€๋กœ ๋ณด๋Š” Billing for OpenStack Solution
ํ•ด์™ธ ์‚ฌ๋ก€๋กœ ๋ณด๋Š” Billing for OpenStack Solutionํ•ด์™ธ ์‚ฌ๋ก€๋กœ ๋ณด๋Š” Billing for OpenStack Solution
ํ•ด์™ธ ์‚ฌ๋ก€๋กœ ๋ณด๋Š” Billing for OpenStack Solution
ย 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
ย 
แ„‰แ…ฆแ„‰แ…งแ†ซ2_แ„ƒแ…ฆแ„‡แ…ฉแ„‰แ…งแ†ซแ„แ…ฆแ„แ…ณแ„ƒแ…ฆแ„‹แ…ต_Decapod_v1.2.pdf
แ„‰แ…ฆแ„‰แ…งแ†ซ2_แ„ƒแ…ฆแ„‡แ…ฉแ„‰แ…งแ†ซแ„แ…ฆแ„แ…ณแ„ƒแ…ฆแ„‹แ…ต_Decapod_v1.2.pdfแ„‰แ…ฆแ„‰แ…งแ†ซ2_แ„ƒแ…ฆแ„‡แ…ฉแ„‰แ…งแ†ซแ„แ…ฆแ„แ…ณแ„ƒแ…ฆแ„‹แ…ต_Decapod_v1.2.pdf
แ„‰แ…ฆแ„‰แ…งแ†ซ2_แ„ƒแ…ฆแ„‡แ…ฉแ„‰แ…งแ†ซแ„แ…ฆแ„แ…ณแ„ƒแ…ฆแ„‹แ…ต_Decapod_v1.2.pdf
ย 
2. klaytn developer meetup #2 univ chain
2. klaytn developer meetup #2 univ chain2. klaytn developer meetup #2 univ chain
2. klaytn developer meetup #2 univ chain
ย 
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…] ARM & OpenStack Community
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…] ARM & OpenStack Community[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…] ARM & OpenStack Community
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…] ARM & OpenStack Community
ย 
์˜คํ”ˆ์†Œ์Šค๋กœ ๋งŒ๋“œ๋Š” DB ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ (w/graphite+grafana)
์˜คํ”ˆ์†Œ์Šค๋กœ ๋งŒ๋“œ๋Š” DB ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ (w/graphite+grafana)์˜คํ”ˆ์†Œ์Šค๋กœ ๋งŒ๋“œ๋Š” DB ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ (w/graphite+grafana)
์˜คํ”ˆ์†Œ์Šค๋กœ ๋งŒ๋“œ๋Š” DB ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ (w/graphite+grafana)
ย 
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]Nginx 1.2.7 ์„ค์น˜๊ฐ€์ด๋“œ__v1
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]Nginx 1.2.7 ์„ค์น˜๊ฐ€์ด๋“œ__v1[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]Nginx 1.2.7 ์„ค์น˜๊ฐ€์ด๋“œ__v1
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]Nginx 1.2.7 ์„ค์น˜๊ฐ€์ด๋“œ__v1
ย 

Kubernetes on GCP

  • 1. Kubernetes on GCP Daegeun Kim (gnkr8@outlook.com) Lezhin Entertainment 1 1ํŽธ์œผ๋กœ ์ƒ๊ฐํ•ด์ฃผ์„ธ์š”. 40๋ถ„์•ˆ์— ํ•˜๊ธฐ์—๋Š” ์ฃผ์ œ๊ฐ€ ๋„ˆ๋ฌด์ปธ์Šต๋‹ˆ๋‹ค.
  • 2. ๋ฐœํ‘œ์ž โœ‘ ๋ ˆ์ง„์—”ํ„ฐํ…Œ์ธ๋จผํŠธ ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด โœ‘ Links โœ‘ https://geekdani.wordpress.com/ โœ‘ dgkim84 @ twitter / fb 2 ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด, ๋ถ„์„๊ฐ€ ์•ˆ๋“œ๋กœ์ด๋“œ, iOS ์•ฑ ๊ฐœ๋ฐœ์ž ๋ฐฑ์—”๋“œ, ์›น ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ถฉ์› ์ค‘ ์ž…๋‹ˆ๋‹ค. https://github.com/lezhin/apply/ blob/master/README.md
  • 3. Google Cloud Platform GCP์— ๋” ๋งŽ์€ ์ œํ’ˆ์ด ์žˆ์ง€๋งŒ, ๋ฐ์ดํ„ฐํŒ€์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ฃผ์š” ์ œํ’ˆ๊ตฐ 3 https://cloud.google.com/icons/ ์šฐ๋ฆฌ ํŒ€์€ ์ € ๋ฟ์ธ ํŒ€์ด๊ณ  ๋‹ค ์™ธ์ฃผ ์ง์›๋“ค๋กœ ๊ตฌ์„ฑ ์–ผ๊ตด ๋ณธ ์ ์€ ์—†์ง€๋งŒ ๊ทธ ๋ถ„๋“ค ์ด ์ œํ’ˆ์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. ๋กœ๊ทธ ์ˆ˜์ง‘, ๊ฐ€๊ณต, ์ ์žฌ, ๋ชจ๋ธ๋ง, ๋ถ„์„ ๋“ฑ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ด์ฃผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. BigData ์ œํ’ˆ๊ตฐ, Compute ์ œํ’ˆ๊ตฐ, ๋กœ๊น…, ๋„คํŠธ์›Œํฌ, ์Šคํ† ๋ฆฌ์ง€ ๋“ฑ ์ œํ’ˆ๊ตฐ์„ ํ™œ์šฉ ์ค‘ ์ž…๋‹ˆ๋‹ค. BigTable ๊ณผ ๊ฐ™์€ ์ œํ’ˆ๋“ค๋„ ์ž‘์ง€๋งŒ ์‚ฌ์šฉ ์ค‘์— ์žˆ์Šต๋‹ˆ๋‹ค.
  • 4. ์™œ ๋ ˆ์ง„์ฝ”๋ฏน์Šค ๋ฐ์ดํ„ฐํŒ€์€ GCP ๋ฅผ ์„ ํƒํ–ˆ๋‚˜ 4 https://www.slideshare.net/curioe_/lezhincomics-google-appengine-30453946 ์™œ ๋ ˆ์ง„์ฝ”๋ฏน์Šค๋Š” ๊ตฌ๊ธ€์•ฑ์—”์ง„์„ ์„ ํƒํ–ˆ๋‚˜
  • 5. ์•ˆ์ •์ ์ด๊ณ  ๋…๋ฆฝ๋œ Data Infrastructure - 2016๋…„ 4์›” ํƒˆ์ถœ 5 ๋ณธ์—…์€ ๋ฐฑ์—”๋“œํŒ€ ์ด์—ˆ๊ณ  ์—…๋ฌด ์™ธ์— ์ž‘์—…์ด ์ง„ํ–‰๋œ ๊ฒƒ ์ด๊ธฐ๋•Œ๋ฌธ์— ์†์ด ๋œ ๊ฐ€๊ณ  ์•ˆ์ •์ ์œผ๋กœ ์šด์˜๋˜๋„๋ก ํ•˜๋Š”๊ฒŒ ์ฃผ ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ๋•Œ๋ฌธ์— ์˜คํ”ˆ์†Œ์Šค์™€ ๊ฐ™์€ ์ œํ’ˆ์„ ์ง์ ‘ ์šด์˜ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค fully managed ๋˜ ๊ณ  ์žˆ๋Š” GCP ์ œํ’ˆ๊ตฐ์„ ๋” ์‚ดํŽด๋ณด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • 6. Google Cloud Platform ๋” ๋งŽ์€ ์ œํ’ˆ์ด ์žˆ์ง€๋งŒ, ๋ฐ์ดํ„ฐํŒ€์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ฃผ์š” ์ œํ’ˆ๊ตฐ. 6 ์ˆ˜์ง‘ -> ๊ฐ€๊ณต -> ์ ์žฌ -> ๋ชจ๋ธ๋ง -> ๋ถ„์„ ์ˆ˜์ง‘ -> ๊ฐ€๊ณต -> ์ ์žฌ -> ๋ชจ๋ธ๋ง -> ๋ถ„์„ ๋“ฑ์˜ ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉด์„œ ๋งˆ์ผ€ํŒ…, ๋นŒ๋ง, ๊ธฐํšํŒ€ ๋“ฑ์—์„œ SQL ๋“ฑ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก DWH ๊ตฌ์ถ•๋ถ€ํ„ฐ BI ํˆด ์—ฐ๊ณ„๋ฅผ ํ†ตํ•ด SQL์„ ๋‹ค๋ฃจ์ง€ ๋ชปํ•˜๋Š” ๋ถ„๋“ค๋„ ์‹œ๊ฐํ™” ํ•  ์ˆ˜ ์žˆ๋Š” ํˆด์„ ์ œ๊ณตํ•ฉ ๋‹ˆ๋‹ค. ์ด ์ธํ”„๋ผ๋กœ ํ•œ๋‹ฌ์— ๋Œ€๋žต 10์–ต๊ฑด ์ด์ƒ์˜ ์œ ์˜๋ฏธํ•œ ๋กœ๊ทธ๊ฐ€ ์Œ“์ž…๋‹ˆ๋‹ค. ๋ฐฐ์น˜ ๋ถ„์„์„ ์œ„ํ•ด ์Šคํ† ๋ฆฌ์ง€๋กœ, ์‹ค์‹œ๊ฐ„ ๋ถ„์„์„ ์œ„ํ•ด Pub/Sub ๋“ฑ์œผ๋กœ ๋ณด๋‚ด์ง‘๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ETL๊ณผ ์ถ”์ฒœ์ฒ˜๋ฆฌ๋Š” Spark ๋กœ ์ด๋ฃจ์–ด์ง€๋ฉฐ ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ๋Š” DataFlow Streaming ์“ฐ๊ณ  ๋ฐฐ์น˜๋„ ์”๋‹ˆ๋‹ค.
  • 7. GCP ๊ธฐ๋Šฅ ์™ธ์— ํ•„์š”ํ•œ ๊ฒƒ - ์›Œํฌํ”Œ๋กœ์šฐ & ์Šค์ผ€์ฅด๋Ÿฌ - ์ถ”์ฒœ(๊ฒ€์ƒ‰) ๋ฐ์ดํ„ฐ ์„œ๋น™์šฉ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ - ์„œ๋น„์Šค ํŠนํ™”๋œ ์ง€ํ‘œ์šฉ ๋ฐฑ์˜คํ”ผ์Šค - ๊ธฐํƒ€ ์ˆ˜ ๋งŽ์€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ 7 ์›Œํฌํ”Œ๋กœ์šฐ & ์Šค์ผ€์ฅด๋Ÿฌ : Airflow (Oozie, Azkaban, Luigi ์™€ ๊ฐ™์€) ์ œํ’ˆ์œผ๋กœ ETL ์žก์ด๋‚˜ ์ด๋Ÿฐ ๋ฐ˜๋ณต๋˜๋Š” ์ž‘์—…์„ DAG ํ˜•ํƒœ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ์Šค์ผ€์ฅด๋งํ•˜๋Š” ์—ญํ•  ์ด์™€ ๊ฐ™์€ ์—ญํ• ์„ ํ•ด์ฃผ๋Š” ์„œ๋ฒ„๋“ค์ด ์žˆ๋Š”๋ฐ ๊ด€๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๊ณ ๋ฏผํ•˜๋Š” ์‚ฌํ•ญ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • 8. Checklist โœ‘ Deployment โœ‘ Provisioning โœ‘ Automation โœ‘ Stateless, Stateful โœ‘ Scalability โœ‘ Monitoring โœ‘ Discovering Service 8 ๋ฐฐํฌ, ํ”„๋กœ๋น„์ €๋‹, ์ž๋™ํ™” ๋“ฑ์ด ๊ทธ๊ฒƒ์ด๊ณ  ํ™•์žฅ์„ฑ์ด๋ผ๋˜์ง€ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ทธ๋ฆฌ๊ณ  Discovering Service ์™€ ๊ฐ™์€ ๋ฌธ์ œ๋“ค์ด ์žˆ์Šต๋‹ˆ ๋‹ค. ์ด๊ฑธ ๊ฐœ๋ณ„๋กœ ๊ตฌ์ถ•ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋น„์šฉ์€ ์–ด์ฐŒ๋ณด๋ฉด ๊ต‰์žฅํžˆ ํฝ๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋ฐœํ‘œ์—์„œ๋Š” ์ž๋™ํ™”, Stateful ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—๋Œ€ํ•œ ๋ฌธ์ œ, ๋ชจ๋‹ˆํ„ฐ๋ง, Discovering Service์—๋Œ€ํ•œ ์ƒ์„ธํ•œ ๋‚ด์šฉ์€ ์‹œ๊ฐ„๊ด€๊ณ„์ƒ ๋‹ค๋ฃจ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.
  • 9. Deployment - ๋ฐฐํฌํ•  ๋•Œ ๊ณ ๋ ค์‚ฌํ•ญ 9
  • 10. Deployment โœ‘ Provisioning โœ‘ OS, Network, โ€ฆ โœ‘ Resource (CPU, Memory, Storage, โ€ฆ) โœ‘ Application Code โœ‘ Dependencies โœ‘ Configurations โœ‘ Update โœ‘ Rolling Update โœ‘ Blue-Green Deployment โœ‘ Rollback 10 ํ•˜๋‚˜์”ฉ ๊ฐ๊ฐœ๊ฒฉํŒŒ ํ•ด๋ณด์•„์š”.
  • 11. Kubernetes Pod - ์•ž์„œ ์–ธ๊ธ‰ํ•œ ๊ฒƒ์„ ํ•ด๊ฒฐํ•ด ์ฃผ๋Š” ๊ธฐ๋ณธ ๋ชจ๋ธ 11
  • 12. Pod โœ‘ ๋ฐฐํฌ ์ตœ์†Œ ๋‹จ์œ„ โœ‘ ํ•˜๋‚˜ ์ด์ƒ์˜ container (docker / rkt) ํฌํ•จ โœ‘ ํ•จ๊ป˜ ํฌํ•จ์‹œ์ผœ์•ผ ํ•  ๊ฒƒ์ด ์žˆ๋‹ค๋ฉด ํ•จ๊ป˜ ์„ ์–ธ โœ‘ Resources โœ‘ Volumes, Port, โ€ฆ โœ‘ CPU, Memory โœ‘ Request, Limit โœ‘ livenessProbe โœ‘ โ€ฆ โœ‘ Unique IP address 12 rkt (rock-it) ์€ experimental ํ•จ๊ป˜ ํฌํ•จ์‹œ์ผœ์•ผํ•  ๊ฒƒ์ด ์žˆ์„ ๋•Œ ํ•จ๊ป˜ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ container ๊ธฐ๋ฐ˜์ด๊ธฐ๋•Œ๋ฌธ์— OS๋‚˜ dependency ๋ฌธ์ œ๋Š” ์‰ฝ๊ฒŒ ํ•ด๊ฒฐ์ด ๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ hello world ์ˆ˜์ค€์˜ guide์—์„  ์–ธ๊ธ‰์ด ์•ˆ๋˜์ง€๋งŒ resource ๊ด€๋ฆฌ๊ฐ€ ์ค‘์š”ํ•˜๋ฉฐ, Pod์€ Kubernetes์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐœ๋…์œผ๋กœ ์•Œ๋ ค์ ธ์žˆ์ง€๋งŒ ๊ฐ€์žฅ ๋‹ค๋ฃจ๊ธฐ ์–ด๋ ต๊ณ  ์ค‘์š”ํ•œ ๋Œ€์ƒ์ž…๋‹ˆ๋‹ค. ์‚ฝ์งˆํ•ด๋ณด์‹œ๋ฉด ์•Œ๊ฒŒ๋ฉ๋‹ˆ๋‹ค. ์ง„์งœ! ๊ทธ๋ ‡๊ธฐ๋•Œ๋ฌธ์— Kubernetes๋Š” ํ•™์Šตํ•ด์•ผํ•  ๊ฒƒ์ด ์ ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • 13. Creating a Pod $ kubectl create -f airflow-web.yaml 1 kind: Pod 2 apiVersion: v1 3 metadata: 4 namespace: dev 5 name: airflow-web 6 labels: 7 app: airflow-web 8 spec: 9 containers: 10 - image: "gcr.io/<PROJECT_ID>/airflow:v1b35" 11 args: ["webserver"] 12 name: airflow-web 13 imagePullPolicy: IfNotPresent 14 ports: 15 - containerPort: 8080 16 protocol: TCP 17 resources: 18 requests: {cpu: "250m", memory: "128Mi"} 19 limits: {cpu: "500m", memory: "512Mi"}
  • 14. QoS โœ‘ Guaranteed โœ‘ Limits OR Limits = Requests โœ‘ Burstable โœ‘ Limits not set OR Requests != Limits โœ‘ Guaranteed and Best-Effort = Burstable โœ‘ Burstable and Best-Effort = Burstable โœ‘ Best-Effort โœ‘ Requests, Limits ๋ชจ๋‘ ์„ค์ • ์•ˆ๋œ ๊ฒฝ์šฐ โœ‘ ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ oom_score_adjust ๊ฒฐ์ • โœ‘ ์ค‘์š”ํ•œ ๊ฒƒ์ด ๋จผ์ € kill ๋  ์ˆ˜ ์žˆ์œผ๋‹ˆ Resources ์„ค์ • ์ค‘์š”. 14 Pod์€ 2๊ฐœ ์ด์ƒ์˜ container๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ธฐ๋•Œ๋ฌธ์— Guaranteed ๊ฐ€ ์žˆ๋”๋ผ๋„ Burstable ๋กœ ๋ถ„๋ฅ˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ ๋‹ค.
  • 15. Expose โœ‘ $ kubectl expose โœ‘ pod/airflow-web โœ‘ โ€”namespace dev โœ‘ โ€”port=8080 โœ‘ โ€”target-port=8080 โœ‘ โ€”type=LoadBalancer โœ‘ $ kubectl get service โ€”namespace dev โœ‘ $ open http://EXTERNAL_IP:8080/ 15 ์™ธ๋ถ€๋กœ ๋…ธ์ถœํ•˜๊ธฐ์œ„ํ•ด์„  expose๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. โ€”type ์„ ๋ณ„๋„๋กœ ๊ธฐ๋กํ•˜์ง€ ์•Š์œผ๋ฉด ClusterIP๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ ๋‹ค. HTTP LoadBalancer๋Š” Ingress Object Model ํ†ตํ•ด์„œ ํ•˜ ๋ฉฐ ์ด ๋ฐœํ‘œ์—์„œ๋Š” ์ž์„ธํžˆ ์–ธ๊ธ‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • 16. Deployment โœ‘ Provisioning โœ‘ OS, Network, โ€ฆ โœ‘ Resource (CPU, Memory, Storage, โ€ฆ) โœ‘ Application Code โœ‘ Dependencies โœ‘ Configurations โœ‘ Update โœ‘ Rolling Update โœ‘ Blue-Green Deployment โœ‘ Rollback 16
  • 18. ConfigMap $ kubectl create -f config.yaml kind: ConfigMap apiVersion: v1 metadata: name: airflow-conf namespace: dev data: airflow.cfg.file: |- [core] airflow_home = /opt/airflow dags_folder = /opt/airflow/dags base_log_folder = /opt/airflow/logs ํ•˜๋‚˜์˜ ๋‹จ์ผ ์ฝ”๋“œ๋ฒ ์ด์Šค๋กœ ์–ธ์ œ๋ผ๋„ ์„ค์ •์„ ๊ฐˆ์•„ ์—Ž๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.
  • 19. Mounting ConfigMap as Volume โ€ฆ spec: volumes: - name: airflow-conf configMap: name: airflow-conf items: - key: airflow.cfg.file path: airflow.cfg containers: - image: "gcr.io/<PROJECT_ID>/airflow:v1b35" โ€ฆ volumeMounts: - name: airflow-conf mountPath: /etc/config โ€ฆ ๋ณผ๋ฅจ ๋งˆ์šดํŠธ! ํ—ท๊ฐˆ๋ฆฌ๋ฉด ์ด์ „ ์žฅ์„ ๋‹ค์‹œ ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • 20. Deployment โœ‘ Provisioning โœ‘ OS, Network, โ€ฆ โœ‘ Resource (CPU, Memory, Storage, โ€ฆ) โœ‘ Application Code โœ‘ Dependencies โœ‘ Configurations โœ‘ Update โœ‘ Rolling Update โœ‘ Blue-Green Deployment โœ‘ Rollback 20
  • 22. Kubernetes Deployment โœ‘ Newer and Higher level concept (since 1.2) โœ‘ ReplicaSet, ReplicationController โœ‘ Pods, ReplicaSet ๋“ฑ ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ธฐ์กด์˜ ๊ฒƒ์„ ๋ฐ”๊พธ๋Š” ๋“ฑ ์ผ๋ จ์˜ ์ž‘์—…์„ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค. โœ‘ Replica, Autoscaling โœ‘ Rolling Update, Rolling Back โœ‘ PodTemplate 22 Deployment ๊ฐ€ ์•Œ์•„์„œ ํ•ด์ฃผ๊ธฐ๋•Œ๋ฌธ์— Pod์ด๋‚˜ ReplicaSet ๋“ฑ์˜ ๋ฆฌ์†Œ ์Šค ์ƒ์„ฑ์—๋Œ€ํ•ด ํฌ๊ฒŒ ๊ณ ๋ฏผํ•˜์‹ค ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ช…์‹œํ•˜๋Š” ๊ฒƒ๋“ค์€ replica ๋ž‘ update strategy ์ •๋„์ด๊ตฌ์š”. ์ƒ์„ฑํ•œ deployment ๋กœ autoscale, rolling update, rollout ๋“ฑ์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Deployment์—๋„ ์ƒ์„ฑํ•  Pod์—๋Œ€ํ•œ ๊ธฐ๋ณธ Template์„ ๋ช…์„ธํ•ฉ๋‹ˆ๋‹ค.
  • 23. 23 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: af-web namespace: dev spec: replicas: 3 strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 1 type: RollingUpdate template: # Pod ์ƒ๋žต Writing a Deployment spec $ kubectl create -f airflow-web-deployment.yaml
  • 24. Expose โœ‘ $ kubectl expose โœ‘ deploy/airflow-web โœ‘ โ€”namespace dev โœ‘ โ€”port=8080 โœ‘ โ€”target-port=8080 โœ‘ โ€”type=LoadBalancer โœ‘ $ kubectl get service โ€”namespace dev โœ‘ $ open http://EXTERNAL_IP:8080/ 24
  • 25. Rolling Update โœ‘ $ kubectl set image โœ‘ โ€”namespace dev โœ‘ deploy/af-web โœ‘ af-web=gcr.io/PROJECT_ID/REPO:VERSION โœ‘ $ kubectl apply -f airflow-web-deployment.yaml โœ‘ $ kubectl edit โ€”namespace dev deploy/af-web 25
  • 26. Deployment โœ‘ Provisioning โœ‘ OS, Network, โ€ฆ โœ‘ Resource (CPU, Memory, Storage, โ€ฆ) โœ‘ Application Code โœ‘ Dependencies โœ‘ Configurations โœ‘ Update โœ‘ Rolling Update โœ‘ Blue-Green Deployment โœ‘ Rollback 26
  • 27. Rollback /1 โœ‘ $ kubectl set image โœ‘ โ€”namespace dev โœ‘ deploy/af-web โœ‘ af-web=gcr.io/PROJECT_ID/REPO:VERSION โœ‘ $ kubectl apply OR kubectl edit 27
  • 28. Rollback /2 โœ‘ $ kubectl rollout history โœ‘ โ€”namespace dev deploy/af-web โœ‘ $ kubectl rollout undo โœ‘ โ€”namespace dev โ€”dry-run=true โœ‘ โ€”to-revision=<RevNo> deploy/af-web 28
  • 29. Deployment โœ‘ Provisioning โœ‘ OS, Network, โ€ฆ โœ‘ Resource (CPU, Memory, Storage, โ€ฆ) โœ‘ Application Code โœ‘ Dependencies โœ‘ Configurations โœ‘ Update โœ‘ Rolling Update โœ‘ Blue-Green Deployment โœ‘ Rollback 29 Blue-Green Deployment ๋Š” ๊ฐ€์žฅ ๋‚˜์ค‘์— ๋‹ค๋ฃน๋‹ˆ๋‹ค.
  • 31. Scale โœ‘ $ kubectl scale โ€”namespace dev โœ‘ โ€”replicas=3 deploy/af-worker โœ‘ ํ˜„์žฌ replica๊ฐ€ 2๊ฐœ์ผ ๋•Œ๋งŒ ์ ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•, โœ‘ $ kubectl scale โ€”namespace dev โœ‘ โ€”replicas=3 โ€”current-replicas=2 deploy/af-worker 31
  • 32. Horizontal Pod Autoscaling since 1.2 โœ‘ stable ๋ฒ„์ „์—์„  cpu๋งŒ ์ง€์› โœ‘ $ kubectl autoscale โœ‘ deploy/af-worker โœ‘ โ€”cpu-percent=60 โ€”min=1 โ€”max=4 โœ‘ $ kubectl get hpa โœ‘ autoscaling/v2alpha1 ์—์„œ ๋” ๋‹ค์–‘ํ•˜๊ฒŒ ์ œ์–ด ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค. โœ‘ memory, multiple custom metrics 32
  • 34. Scalability โœ‘ Scale up/down โœ‘ Assigning Pods to Nodes โœ‘ Attach label to the node โœ‘ Add a nodeSelector field to Pod spec 34
  • 35. Node Pool โœ‘ $ gcloud container node-pools create NAME โœ‘ โ€”zone ZONE --cluster CLUSTER โœ‘ โ€”machine-type n1-standard-4 โœ‘ โ€”num-nodes 3 35
  • 36. Preemptible Node Pool โœ‘ $ gcloud beta container node-pools create NAME โœ‘ โ€”zone ZONE --cluster CLUSTER โœ‘ โ€”machine-type n1-standard-4 โœ‘ โ€”num-nodes 3 โœ‘ โ€”preemptible โœ‘ $ kubectl get nodes โœ‘ โ€”selector='cloud.google.com/gke-preemptible' โœ‘ $ kubectl get nodes โœ‘ โ€”selector='!cloud.google.com/gke-preemptible' 36 ์ €๋ ดํ•œ ๊ฐ€๊ฒฉ์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์šด์˜ํ•ด๋ด…์‹œ๋‹ค. ๊ทผ๋ฐ ์ค‘์š”ํ•œ POD์ด preemptible์— ์˜ฌ๋ผ๊ฐ€๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”โ€ฆ Pod์„ ํŠน์ • ๋…ธ๋“œ์— ํ• ๋‹น๋˜๋„๋ก ์•Œ์•„๋ด…์‹œ๋‹ค.
  • 37. Label โœ‘ ๋ชจ๋“  resource์— label ์ถ”๊ฐ€/์‚ญ์ œ ๊ฐ€๋Šฅ โœ‘ $ kubectl label node NODE_NAME โœ‘ โ€”overwrite key=value โœ‘ Removing a label โœ‘ $ kubectl label node NODE_NAME key- 37 NodeSelector ๋ฅผ ์–ธ๊ธ‰ํ•˜๊ธฐ ์ „์— ๊ฐ ๋ฆฌ์†Œ์Šค (node, pod, โ€ฆ)์— Label์„ ๋‹ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • 38. 38 apiVersion: v1 kind: Pod metadata: labels: run: af-worker spec: nodeSelector: cloud.google.com/gke-preemptible: 'true' containers: - image: โ€ฆ name: af-worker ์ข€ ์ „์— ์–ธ๊ธ‰ํ•œ Label ๊ฐ’์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • 39. Blue-Green Deployment /1 39 apiVersion: extensions/v1beta1 kind: Deployment metadata: labels: color: green || blue app: af-web name: af-web-green || af-web-blue spec: replicas: 1 template: metadata: labels: color: green || blue app: af-web Deployment ๋ฅผ ๋‘๊ฐœ๋ฅผ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” blue ๋˜ ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” green ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒด๋ฅผ ํ•œ๋ฒˆ์— ๋‹ค๋ฅธ ๋ฒ„์ „์œผ๋กœ route ์‹œ์ผœ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
  • 40. Blue-Green Deployment /2 40 spec: ports: - nodePort: 32354 port: 8080 protocol: TCP targetPort: 8080 selector: color: green app: af-web type: LoadBalancer apiVersion: v1 kind: Service metadata: labels: run: af-web name: af-web Expose ํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ Service ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค. $ kubectl get services $ kubectl edit service/<SERVICE_NAME> ํ•œ ๋‹ค์Œ ์„ค์ •์ฒ˜๋Ÿผ selector ๊ฐ’์„ ์กฐ์ •ํ•ด์„œ ์ƒˆ๋กญ๊ฒŒ ๋ฐฐํฌํ•œ ๊ณณ์œผ๋กœ ๊ฐ€๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • 41. Deployment โœ‘ Provisioning โœ‘ OS, Network, โ€ฆ โœ‘ Resource (CPU, Memory, Storage, โ€ฆ) โœ‘ Application Code โœ‘ Dependencies โœ‘ Configurations โœ‘ Update โœ‘ Rolling Update โœ‘ Blue-Green Deployment โœ‘ Rollback 41
  • 44. Resource Quota โœ‘ Namespace ๋ณ„๋กœ resource Quota 44 apiVersion: v1 kind: ResourceQuota metadata: name: compute-resources spec: hard: pods: "4" requests.cpu: "1" requests.memory: 1Gi limits.cpu: "2" limits.memory: 2Gi configmaps persistentvolumeclaims replicationcontrollers secrets services services.loadbalancers ์ด๋ฒˆ ๋ฐœํ‘œ์—์„œ โ€”namespace ์˜ต์…˜์ด ๋“ค์–ด์žˆ๋Š” quota ๊ธฐ๋Šฅ๋•Œ๋ฌธ์— ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ํ™˜๊ฒฝ๋ณ„๋กœ quota๋ฅผ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ๊ณ  ์กฐ์ง๋ณ„๋กœ ๋ถ„๋ฆฌ์‹œํ‚ฌ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋กœ์˜ ๊ฐ„์„ญ์„ ์ค„์ผ ์ˆ˜ ์žˆ๊ฒ ์ฃ .
  • 45. Google Cloud HTTPS LoadBalancer 45 ์•„์ง Internal Load Balancer ๊ฐ€ ์•ˆ๋˜๋Š” ๊ฑด ์•„์‰ฝ์Šต๋‹ˆ๋‹ค. Issue ๋กœ๋Š” ๋“ฑ๋ก๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.
  • 46. Google Cloud Container Builder ์ฝ”๋“œ๋ณ€๊ฒฝ์‹œ ์ปจํ…Œ์ด๋„ˆ ๋นŒ๋“œํ•ด์„œ Google Container Registry๋กœ ์ž๋™ ๋ฐฐํฌ 46