갑자기 docker 기초하다가 GKE 배포라니 한번에 3단계를 점프한 느낌이다.
하지만 결국 도커를 어떻게 활용해야하는지 실제로 해보지 않으면 알 수 없기에 이틀에 걸려... GKE에 배포에 성공했습니다!!
도커파일과 도커 이미지를 얼마나 제대로 만드는지가 핵심!

위 순서대로 하면 끝나는데 몇가지 주의사항이 있어서 적어보려고 합니다
일단 로컬에서 GKE 조작을 위해서는 몇가지 설정을 해줘야합니다
gcloud auth login
gcloud set project [내 프로젝트 ID]
gcloud auth configure-docker
gcloud components update
gcloud components install gke-gcloud-auth-plugin
제 도커파일은 nginx에 index3.html파일을 올리는거라 매우 간단하게 되어있습니다.
FROM nginx:alpine
COPy index3.html /usr/share/nginx/html/index.html
EXPOSE 80
docker build -t sample . => sample이라는 이름으로 도커이미지 만들기
docker run --name index3 -p 8080:80 sample => index3라는 이름으로 컨테이너 만들기!
docker start index3 -> index3 컨테이너 실행
localhost127.0.0.1에 들어가면 index3가 작동하면 성공입니다
바로 여기가 핵심인데 GKE는 일반적으로 amd64 아키텍처를 사용하는 Linux기반의 노드에서 실행됩니다!
그래서 docker build명령어에서 --platform linux/amd64 옵션을 적어줘야합니다!!
docker build --platform linux/amd64 -t gcr.io/gwangju-24-team-103/index3.html . => 해당 이름으로 도커 이미지 만들기
docker push gcr.io/gwangju-24-team-103/index3.html => ArtifactRegistry에 올리기
CLI로 로컬에서 작성해서 만드는데 약 5분? 정도 걸렸습니다
이제 클러스터를 생성합니다
gcloud container clusters create nginx-deployment --zone us-central1 --num-nodes 2 --enable-autoscailing --min-nodes 1 --max-nodes 2
--num-nodes 2 => 클러스터 생성되면 2개의 노드가 생성됩니다
--enable-autoscailing => 클러스터 부하에 따라 노드 수를 조절합니다.
--min-nodes 1 => 최소 노드는 1개를 무조건 보장합니다
--max-nodes 2 => 오토스케일링 활성화인경우 최대 노드 수를 설정했습니다
kubectl apply -f deployment.yaml
kubectl get services


kubectl delete pods nginx-deployment-76bf895547-ct9ws -> 해당 pod 내부의 모든 컨테이너 종료되고 자원 해제
kubectl delete service nginx-service
kubectl delete deployment nginx-deployment
gcloud container clusters delete nginx-deployment2 --zone us-central1
지금은 간단하게만 만들었지만 이제는 한단계씩 더 딥하게 들어가보자