Cloud/GCP

[GCP] GKE 배포, 로드밸런서 서비스 배포, 카나리아 배포

Ofglen 2023. 7. 12. 10:13

GKE 클러스터에 배포하기

nginx-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80

 

# nginx 배포하기
kubectl apply -f ./nginx-deployment.yaml

# 배포 목록 확인하기
kubectl get deployments

 

 

 

 

Pod 확장하기

# 포드 목록 확인
kubectl get deployments

# 포드 백업 4개의 레플리카로 확장
kubectl scale --replicas=4 deployment nginx-deployment

# 포드 목록 확인
kubectl get deployments

 

 

 

 

 

 

nginx 설치하기

# nginx 업데이트
kubectl set image deployment.v1.apps/nginx-deployment nginx=nginx:1.9.1 --record

# 릴리스 상태 확인
kubectl rollout status deployment.v1.apps/nginx-deployment

# 배포 목록 출력
kubectl get deployments

# 배포 기록 출력
kubectl rollout history deployment nginx-deployment

 

 

 

 

 

배포 롤백하기

객체 릴리즈를 롤백하여 버전 관리를 한다.

 

# 이전 버전 nginx로 롤백
kubectl rollout undo deployments nginx-deployment

# 릴리즈 버전 출력
kubectl rollout history deployment nginx-deployment

# 최신 배포 버전 세부정보 출력
kubectl rollout history deployment/nginx-deployment --revision=4

 

 

 

 

 

로드 밸런서를 설정하고 테스트하기

service-nginx.yaml

apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  type: LoadBalancer
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 60000
    targetPort: 80

 

 

# service-nginx 배포
kubectl apply -f ./service-nginx.yaml

# 로드밸런서 배포 확인
kubectl get service nginx

 

 

 

 

 

 

카나리아 배포하기

nginx-canary.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-canary
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
        track: canary
        Version: 1.9.1
    spec:
      containers:
      - name: nginx
        image: nginx:1.9.1
        ports:
        - containerPort: 80

 

 

 

kubectl apply -f nginx-canary.yaml

kubectl get deployments

# 기본 배포를 레플리카 0개로 축소
kubectl scale --replicas=0 deployment nginx-deployment

kubectl get deployments