계기
우테코하면서 진행한 프로젝트인 데벨업 프로젝트는 원래 서비스 종료 예정이었으나, 서비스 유지를 원하는 팀원이 있어서 목숨만 부지하고 있었다.
이에 인증서 갱신 등의 작업을 주기적으로 해야 하는데, docker 기반의 인프라로 이를 자동화 하는 것은 상당히 귀찮은 일이다. 마침 회사 업무에서 k8s 를 활용하면서 이런 인증서 발급이나 네트워크 설정들을 k8s 환경에서 구축하는 것이 훨씬 쉽다는걸 깨달았고, 이를 적용해보면 신경쓰지 않아도 될 것 같아 길고 긴 추석 연휴에 이 작업을 수행하게 되었다.
설치 과정
arm VM 생성
오라클 클라우드에서는 익히 알려진대로 arm 기반의 vm 을 4코어 CPU, 24 GB 메모리를 평생 무료로 제공해준다. 하지만, 이런 vm 을 프리 티어 계정에서 생성하는 것은 불가능에 가깝다. 정확히 공지된 바는 없지만, 오라클이 프리티어 사용자들이 생성할 수 있는 vm 총량에 제한을 걸어두었고, 2025년 10월인 현재로선 이를 뚫고 vm을 생성할 방법이 없다.
단, 이는 프리티어 한정이고 유료 계정으로 전환하면 생성이 가능하다. 유료 플랜으로 전환한 뒤 무료 할당량만큼만 사용한다면 과금은 발생하지 않는다. 관련 정보를 찾아보면 많은 실패 사례가 나오지만, 다행히 이미 무료 계정을 발급받아서 사용중이었고, 업그레이드도 별 문제 없이 수행되었다. 단, 이때 지급 방법 검증 차원에서 100달러가 결제되었다가 환불되었다. 하마터면 안될뻔..
k3s 설치
curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644
Bash
복사
helm 설치
helm 은 k8s 리소스들을 편하게 관리할 수 있도록 해주는 패키지 관리자다. 이를 설치하면 여러 오픈소스들을 활용해 쉽게 k8s 에 어플리케이션을 배포할 수 있다. 설치 역시 간단하다. 공식 홈페이지의 Installing Helm 문서대로 설치하면 된다.
nginx ingress controller 설치
k3s 를 설치하면 기본적으로 Traefik ingress controller 가 설치된다. 기술을 배우는건 재밌는 경험이지만, 지금 나의 목적과는 대치되므로 과감히 삭제하기로 했다. 만약, 삭제하지 않고 nginx ingress controller 를 사용하면 Traefik 이 먼저 트래픽을 가로채어 nginx ingress 설정이 무용지물이 되기도 한다.
이 경우 k8s 환경에서는 정상 접근 되지만, 외부에서는 안되는 신기한 현상이 있을 수 있다(인증서 문제).
argocd 설치
argocd 는 k8s 와 함께 사용하는 CI/CD 도구다. 헬름 차트를 깃 저장소에 올려두고, 이것의 변경을 감지해 자동으로 k8s에 배포한다. 여러모로 편리하기도 하고, 이 k8s 클러스터에 다른 서비스도 올리게 될 수 있으니 설치하기로 했다.
helm 을 이용해 설치하면 된다. 현업에서 사용하기 위해서는 영속 DB 설정, 인증 및 권한 그루핑 등의 상세한 설정이 필요하겠지만, 지금은 필요 없으니 공식 문서를 따라 설치하면 된다.
Getting Started - Argo CD - Declarative GitOps CD for Kubernetes
주의해야 할 점은 반드시 argocd 라는 이름의 namespace에 설치해야한다는 점이다. 그렇지 않으면 헬름 차트의 여러 속성들을 수정해줘야 한다. 그렇지 않으면 k8s에 리소스를 생성할 권한을 제대로 부여받지 못한다.