본문 바로가기
Cloud/Docker | K8s + CI, CD

[#3] GCP GKE에서 Kubernetes로 컨테이너 관리하기 1탄

by HelloJudy 2022. 4. 16.

현재 K8s를 실습하는 나는 이전에 진행했던 프로젝트를 이미지로 build하여 docker-hub에 push하였고,

docker compose로 배포까지 진행했다.

이제 배포된 시스템을 관리하는 컨테이너 오케스트레이션에 대해서 공부하려 한다.

 

이전에는 AWS EC2를 사용했지만 쿠버네티스 실습은 글로벌 클라우드 중 GCP를 사용한다.

 

 


1. Docker 이미지 빌드

우선 지난 실습을 통해 Dockerfile은 구성되어 있다. 오늘은 우선 node-app 부터 실습해보겠다.

 

1) Dockerfile 작성

 

2) Image Build

 

* GCP 프로젝트 아이디는 환경변수화 해서 사용할 수 있다.

export PROJECT_ID="GCP 프로젝트 아이디"

 

프로젝트 아이디는 GCP console에서 확인할 수 있다.

 


GCP의 Container Registry 또는 Artifact Registry에 저장할 수 있다.

나는 이 두가지를 혼동해서 사용했고 문제를 해결하는 과정에서 두 곳 모두 이미지를 push해보았다.

따라서 둘 중 하나를 선택해서 이후에 실습도 선택한 저장소 방법대로 따라간다.

 

 

[ 방법1 : Container Registry ]

 

Container Registry를 사용할 때는 다음과 같이 Build 한다. 

 

gcr.io가 Container Registry 위치이다.

docker build -t "gcr.io/$PROJECT_ID/node_portfolio_app:0.0.1" .

 

[ 방법2 : Artifact Registry ]

 

Artifact Registry를 사용할 때는 다음과 같이 Build 한다. 

 

docker build -t "<repository host location>-docker.pkg.dev/<Cloud project ID>/<repo name>/<image name>:<tag>" .

 

 

3) 이미지를 Docker로 실행

 

이미지를 실행하여 정상적으로 동작하는지 확인해보자.

 

docker run -p 5001:5001 -it --rm gcr.io/$PROJECT_ID/node_portfolio_app:0.0.1

 

터미널 창을 하나 더 켜서 간단하게 서버가 열렸는지 확인할 수 있고

curl localhost:5001

 

 

크롬 주소창에 직접 입력해서 확인할 수도 있다.


2. 컨테이너 이미지 업로드

 

GCP에 컨테이너 이미지를 업로드해야 GKE가 다운로드 및 실행할 수 있다. 

 

Google Cloud에는 컨테이너 이미지를 저장하고 관리하는 서비스가 두 개가 있다.

원래는 Container Registry를 사용하려고 했으나 공식 문서에서 새 기능 Artifact Registry 사용을 권장하여 Artifact Registry를 사용하겠다. 자세한 내용은 다음 문서를 참고하자!

 

 

( 이때, 저장소를 Container Registry에서 Artifact Registry로 바꿔놓고 빌드한 이미지 경로는 Container Registry라서 오류를 많이 겪었다.. 하 ㅠㅠㅠㅠ )

 

 

[ 방법1 : Container Registry ]

 

방법2의 SDK 설정, 로그인을 해야지 다음 명령어가 실행된다.

 

gcloud auth configure-docker
docker push gcr.io/$PROJECT_ID/node_portfolio_app:0.0.1

 

push 완료

 

 

[ 방법2 : Artifact Registry ] : 아직 오류

 

 

Artifact Registry 는 처음 사용해서 가이드를 따라 저장소를 만들었다.

 

1) 저장소 만들기 클릭

 

2) 이름 작성 & 리전 선택

저장소 생성 완료

 

 

3) Configure authentication (인증 구성)

아 정말 또 영어다 🤣

 

요약하면 push, pull 하기 전에 Docker 레포지토리에 대한 인증을 설정을 하라는 것이다.

그대로 따라해보자.

[ 오류 1 ] : Push가 안된다.

 

docker push gcr.io/$PROJECT_ID/node_portfolio_app:0.0.1

 

 

[ 해결1 ] : local에 SDK 설치하고 로그인 해야한다.

 

gcloud 로그인은 안되고 접근 권한은 없다고 하고..

왜 접근 권한이 없지.. 한참 고민했는데 생각해보니 정말...

 

  • gcloud CLI 설치 안함
  • gcloud auth를 로컬이 아니라 Cloud shell에서 함
  • 총체적 난국 

 

* gcloud CLI 인 SDK를 설치했다. 참고 블로그

 

그리고 나서 드디어 설치를 완료하고

 

gcloud auth login
gcloud auth configure-docker \
    us-central1-docker.pkg.dev

드디어 인증 구성 완료

 

[ 오류 2 ] : Push가 안된다.

 

이제 push만 하면 되는데 push가 안된다.... 나한테 왜이래..

 

 

Artifact Registry는 조금 더 시도가 필요할 것 같다.

 

 

다음은 우선 컨테이너 클러스터 만들어보겠다.

 

 


 

참고 블로그

https://gaemaht.tistory.com/entry/GKEGoogle-Kubernetes-Engine%EB%A1%9C-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%EA%B4%80%EB%A6%AC%ED%95%98%EA%B8%B0-1%EB%B6%80

 

 

https://gre-eny.tistory.com/333

 

[GCP] WSL2 + Google Cloud SDK + VScode 개발환경 구성

[ 목 표 ] Windows 환경의 터미널과 vscode에서 Google Cloud Platform 에 remote 접속하여 제어하는 환경을 구성하는 것이다. GCP 와 연동은 다른 포스트에 작성할 계획이다. Windows Terminal 설치하기 시작 - M..

gre-eny.tistory.com

 

📌 지난 포스팅

 

반응형

댓글