Docker 활용기 2 - GKE에 index.html 파일 배포해보기

박경현·2024년 9월 7일
1

갑자기 docker 기초하다가 GKE 배포라니 한번에 3단계를 점프한 느낌이다.

하지만 결국 도커를 어떻게 활용해야하는지 실제로 해보지 않으면 알 수 없기에 이틀에 걸려... GKE에 배포에 성공했습니다!!

도커파일과 도커 이미지를 얼마나 제대로 만드는지가 핵심!

GKE 배포 순서

  1. index.html 파일 만들기
  2. index.html이 있는 디렉토리에 dockerfile만들기
  3. 마찬가지로 해당 디렉토리에 배포용 deployement.yaml 만들기
  4. 도커 이미지 만들기
  5. 도커 이미지 로컬에서 테스트 (정상 작동하는지)
  6. 도커 이미지 Artifact Registry에 올리기
  7. 클러스터 환경 만들기
  8. 클러스터에 deployment.yaml 배포하기

위 순서대로 하면 끝나는데 몇가지 주의사항이 있어서 적어보려고 합니다


로컬에서 기본 설정하기 -> 해당 디렉토리에서 하면 가장 편합니다

일단 로컬에서 GKE 조작을 위해서는 몇가지 설정을 해줘야합니다

gcloud auth login
gcloud set project [내 프로젝트 ID]
gcloud auth configure-docker

gcloud components update
gcloud components install gke-gcloud-auth-plugin

dockerfile 및 테스트이미지와 리눅스용 이미지 따로 만들기

제 도커파일은 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가 작동하면 성공입니다

Artifact Registry에 리눅스용으로 변환해서 이미지 올리기

바로 여기가 핵심인데 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

피드백

지금은 간단하게만 만들었지만 이제는 한단계씩 더 딥하게 들어가보자

profile
SW로 문제를 해결하려는 열정만 있는 대학생

0개의 댓글