Guide - GKE 클러스터에 앱 배포

leesj·2022년 4월 6일
0

Cloud

목록 보기
4/5

빠른시작 - 🔗 https://cloud.google.com/kubernetes-engine/docs/deploy-app-cluster

Cloud shell 실행

Cloud Shell 을 활용하게 되며 Cloud Shell 에는 Google Cloud CLI 및 kubectl 명령줄 도구가 사전 설치되어 있음

gcloud CLI 의 기본 설정 구성

gcloud 를 사용하려면 작업할 프로젝트와 위치를 지정해야 하므로 이러한 기본 설정을 구성해 두면 gcloud 명령어를 더 쉽게 실행할 수 있음
--project, --zone, --region, --cluster 플래그를 gcloud 명령어에 사용하여 설정을 지정 하거나 기본 설정 재정의가 가능함

// 기본 프로젝트 설정
gcloud config set project PROJECT_ID

// 기본 zone 설정
gcloud config set compute/zone COMPUTE_ZONE

// 기본 region 설정
gcloud config set compute/region COMPUTE_REGION

GKE 클러스터 만들기

GKE 의 2가지 모드 중 어떠한 클러스터를 생성할지는 아래 링크에서 세부 정보를 확인한다.
🔗 https://cloud.google.com/kubernetes-engine/docs/concepts/autopilot-overview?_ga=2.120917578.-39265654.1649052285

  • 본 튜토리얼에서 GKE 표준 모드는 영역 클러스터이며 GKE Autopilot 모드는 리전 클러스터 이다.
  • 과금방식은 GKE 표준 모드(노드(VM) 당 결제), Autopilot(pod 당 결제)
// 표준 GKE 클러스터 생성하기
gcloud container clusters create hello-cluster --num-nodes=1

// 클러스터의 사ㅛㅇ자 인증정보 가져오기
gcloud container clusters get-credentials hello-cluster

클러스터에 애플리케이션 배포

배포 만들기

kubectl create deployment hello-server \
    --image=us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0

배포 노출

// 노출
kubectl expose deployment hello-server --type LoadBalancer --port 80 --target-port 8080

// 확인
kubectl get service std-cluster-app-service
NAME                      TYPE           CLUSTER-IP    EXTERNAL-IP     PORT(S)        AGE
std-cluster-app-service   LoadBalancer   10.76.5.147   34.122.19.196   80:30547/TCP   7m2s

샘플 앱의 새 버전 배포

🔗 https://cloud.google.com/kubernetes-engine/docs/tutorials/hello-app#deploying_a_new_version_of_the_sample_app

GKE 의 순차적 업데이트 기능을 사용하여 다운타임 없이 배포를 업데이트 할 수 있음 - 🔗 https://cloud.google.com/kubernetes-engine/docs/how-to/updating-apps

// kubectl set image 명령어를 사용하여 이미지 업데이트로 기존 hello-app 배포에 순차적 업데이트를 적용
$ kubectl set image deployment/hello-app hello-app=REGION-docker.pkg.dev/${PROJECT_ID}/hello-repo/hello-app:v2

// v1 이미지 중지를 실행하는 실행 중인 포드와 v2 이미지 시작을 실행하는 새 포드를 확인
$ watch kubectl get pods
NAME                        READY   STATUS    RESTARTS   AGE
hello-app-89dc45f48-5bzqp   1/1     Running   0          2m42s
hello-app-89dc45f48-scm66   1/1     Running   0          2m40s

0개의 댓글