현재 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에는 컨테이너 이미지를 저장하고 관리하는 서비스가 두 개가 있다.
- Artifact Registry(권장)
- Container Registry
원래는 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://gre-eny.tistory.com/333
📌 지난 포스팅
'Cloud > Docker | K8s + CI, CD' 카테고리의 다른 글
[#4] GCP GKE에서 Kubernetes로 컨테이너 관리하기 2탄 (0) | 2022.04.18 |
---|---|
[Docker] 프로젝트에 도입 (0) | 2022.04.16 |
[GCP] GKE에서 Kubernetes 시작하기 (0) | 2022.04.16 |
[#2] AWS EC2, Docker Compose를 이용한 프로젝트 배포 (0) | 2022.04.14 |
댓글