이 글의 목적
이 글에서는 Kubernetes 환경에 내 프로젝트의 Docker 이미지를 배포하고 도메인에 노출시키는 과정을 다룹니다. 프로젝트의 이미지를 만들고, Kubernetes에 올리는 방법을 중심으로 설명합니다.
한눈에 보기
이 글은 내 프로젝트 폴더에서 도커 이미지를 생성하고 Kubernetes에 배포하는 방법을 설명합니다. 또한, 발생할 수 있는 여러 문제와 그 해결책을 제공합니다.
이 단계의 목적: 내 프로젝트의 Docker 이미지를 생성하고 Kubernetes에 등록하여 도메인에 노출시킵니다.
절차
- 내 프로젝트의 폴더로 이동한다.
- 도메인에 내 프로그램이 노출되도록 잘 작업한다.해당 프로젝트를 Docker Image로 변환한다.
- Kubernetes에서 해당 도커 이미지를 잘 등록한다.
잘 되는지 확인한다.
핵심 문제
도메인에 내 프로그램을 노출시키자!
평행 문제
!!. PostgreSQL의 DB 서버를 별도로 만들고 싶다. > 다음 계획은 Prometheus
!!. kubernetes에 대한 배포 스크립트에서 설정 값들을 추상화해서 관리하고 싶다.
- ChatGPT한테 내 프로그램을 아래의 정보들만 가지고 실행 가능한 스크립트를 만들어 달라고 요청한다.
- 만들어준 배치 파일을 실행한다.
!!. 문제: API 테스트를 할 때 테스트로 만들어둔 Service가 구동 중이다
- Kubernetes Engine > Workloads > hello-app 선택 후 Delete 버튼 클릭
!!!. 문제: 그래도 Pod라던가 설정 파일들이 남아 있다.
- 아래의 명령어로 점검 및 삭제하기
!!. 문제: 파드의 복제된 개수가 3개이다 > 1개로 줄이기


성공!
- 잘 되는지 확인한다.
!!. 문제: Postman에서 아래와 같은 오류가 발생 (2시간 ..)

1.아래의 명령어를 입력한다
- ingress 목록을 확인한다.kubectl get ingress -A
원인은 아직 hello-ingress가 남아 있었다.
ingress를 삭제한다.
- kubectl delete ingress hello-ingress -n default
만약 이전 배치 스크립트에 ingress 관련 처리의 스크립트가 있어서 등록되었다면, 그러면 자동적으로 도메인과 연결이 된다.
!!. 문제: 위의 문제를 해결하고 난 이후에, API를 호출 했을 때 "Error:Client network socket disconnected before secure TLS connection was established" 오류 발생 (3시간 넘게 ㅜㅜ..)
원인: 발급했던 Global-Static-IP가 사용 중이라 연결에 충돌이 발생
결론
- service.yaml 파일의 annotations: 내용의 cloud.google.com/neg: '{"ingress": true}' 내용이 추가되어야 한다.
- kubectl rollout restart deployment <Your-Service-Name>의 다시시작 명령어를 실행한다.

성공!!!
흔한 함정
- API 테스트 시 미처 삭제되지 않은 Ingress 설정으로 인한 오류.
- Global-Static-IP 사용 중인 상태에서의 네트워크 충돌.
다음 단계
다음은 ArgoCD를 활용한 지속적 배포(CD) 환경 설정입니다.
답글 남기기