Data+

docker-compose로 빌드한 이미지를 GCP k8s에 올려보기

by Qerogram

서론

GCP에 docker-compose로 만든 이미지를 어떻게든 배포해보려고 찾다가, 주제와는 크게 상관은 없지만 고민했던 방법들도 함께 본문을 통해 소개하려 한다. GCP에서는 진짜 두 번째 방법 밖에 없나 고민하는 과정에서 GCP에서 k8s를 지원하는 것을 보고, 간단하게 빌드하고 한 번 시도를 해보려한다. 참고로 난 k8s에 대한 공부를 별도로 한 적이 없어서 삽질을 너무 많이 했다.

[ 첫 번째 방법 ]

CI/CD로 연동할 Git 레포가 있는 경우에는 Cloud Build 기능을 활용할 수 있다. 요약하자면 "cloudbuild.yaml" 파일에 docker-compose를 실행하는 등 다양한 트리거를 지정할 수 있다. 아무래도 트리거다 보니 "이벤트 발생 시점"을 지정할 수 있는데 수동이든, 푸시를 받았을 때든 설정을 할 수 있다.

[ 두 번째 방법 ]

VM Instance에 docker-compose를 설치하고 올리면 될 것으로 보인다. 근데, 이런 방향을 생각한 건 아니라서.. PASS

[ 세 번째 방법 ]

AWS의 경우 ECS를 사용해 올릴 수 있으나, GCP에선 그런 건 딱히 없는 것 같고, 관련 포스팅을 보면 클러스터를 만들고 ALB(Application Load Balance)를 붙이고이것저것 작업을 하더라. 따라해보진 않았으나, image 항목에 ECS 주소를 기재하는 것을 보고 나도 GCP에서 "docker-compose.yml" 파일을 작성할 때 도커 이미지를 올렸던 GCR 주소를 참조시켜야 되겠다는 아이디어를 얻었다. 원문은 링크(https://www.hides.kr/1016) 참조.

본론

사실은 k8s에 대한 내용을 배우는 것도 중요하지만, 현재 입장에서는 아직은 리소스 낭비라 생각되어 야매로 진행해봤다.

1. 이미지 빌드

docker-compose.yml을 작성한 뒤, 빌드하자. 본 글에서는 별도의 yaml 파일을 제공하진 않는다.

$ docker-compose up --build -d

 

2. GCR에 업로드

만들어진 이미지를 Container Registry에 업로드하자.

$ docker tag [image] [gcr_link]
$ docker push [gcr_link]

3. k8s Engine 올리기 - 클러스터 생성

우선 클러스터 단위로 동작하므로 클러스터를 먼저 만들어주자. 배포를 눌러주면 된다.

 

기존 컨테이너 이미지를 체크하고 GCR에 업로드 된 이미지를 선택하자. 환경 변수도 필요하다면 등록한다. 예를 들어 docker-"compose.yml" 파일의 컨테이너를 생성할 때 지정한 "environment" 속성이 있다면 기재해주고 생성하면 된다.

 

4. k8s Engine 올리기 - 외부 노출(expose)

작업 부하 -> 컨테이너 클릭 -> 개요 -> 노출 중인 서비스 항목의 노출 버튼을 통해 서비스를 추가할 수 있다. 참고로 이 노출 기능이 웹으로  제공되는데, kubectl로 expose 하는것을 자동으로 해주는 것으로 보인다.

 

노출 기능을 통해 클러스터 IP, 로드 밸런서 등 서비스를 추가할 수 있다. 우리는 외부에서 접근해야하므로 부하 분산기(로드 밸런서)로 만들어주면 되고, "포트 매핑 추가" 버튼을 통해 접근할 포트를 추가할 수 있다.

 

YAML을 통해 포트를 추가할 사람은 일단 노출 기능으로 yaml 파일을 생성하고, 아래와 같이 ports의 하위 속성에 포트를 추가해주면 된다. 단, ports 하위 항목이 여러 개인 경우 name 속성은 무조건 필요하다.

 

생성된 로드밸런스는 서비스 및 수신에서 확인할 수 있고, 엔드포인트 주소도 나온다. 외부에서 접근해봤을 때 잘 접속된 것을 확인할 수 있다.

결론

노출 버튼을 찾다가 진짜 너무 시간 낭비를 많이한 것 같다. pods, ingress, worker, Cluster IP, 로드 밸런서 등 개념이 너무 많아서 지금은 아니더라도 상반기 내로 꼭 k8s랑 친해지는 시간을 가질거당~ fin.

블로그의 정보

Data+

Qerogram

활동하기