오늘은 자동화의 꽃인 파이프라인을 구현해보도록 하겠습니다. 배포 자동화는 다양한 방법으로 구현할 수 있습니다. 예를 들어서, github actions로 beanstalk에 패키지를 전송하여 배포할 수도 있으며, code pipeline을 통해 빌드와 배포를 자동화할 수도 있고, github actions로 빌드한 파일을 code deploy에 전달하는 방법도 있습니다. 파이프라인을 추상적으로 보자면, 빌드 -> (테스트) -> 배포의 과정을 가지고 있습니다. 이번에는 kubernetes를 활용하는 환경에서 github action과 argocd를 활용해 빌드 및 배포를 자동화하는 방법을 구현합니다. 나름대로 구조를 구체화했을 때, 아래와 같은 형태를 따릅니다. 과정은 아래와 같습니다. 개발 내용 커밋/..
데브옵스 & 인프라
Helm은 쿠버네티스에서 원하는 리소스를 세트로 하여 한번에 패키지로 설치할 수 있게 도와주는 툴입니다. 그래서 상세 파일과는 또 다른 방법으로 한 개의 프로그램 패키지를 솝쉽게 설치할 수 있습니다. 헬름으로 직접 서버를 배포했을 때 느낀 점은, 애플리케이션의 의존성을 한 번에 같이 설치할 수 있다는 점이었습니다. 또한, git처럼 각 패키지를 버전으로 관리할 수 있기 때문에 각기 다른 상태로 사용할 수 있다는 것이 또다른 장점입니다. 그래서 이번에 Helm으로 서버 애플리케이션과 mysql을 함께 배포하고 이를 하나의 차트로 만들어서 사용하고자 합니다. 해당 예시에서 사용한 도구는 minikube(docker-driver), helm, node.js, mysql입니다. 차트 초기화 먼저 헬름은 차트라고..
현재 쿠버네티스 환경에 데이터베이스 패키지를 설치하였으며, 서버 애플리케이션의 띄웠습니다. 여기서 애플리케이션에서 데이터베이스 커넥션을 획득하기까지의 과정을 정리하고자 합니다. 환경변수의 설정부터 Secret 사용, 동적으로 데이터베이스 호스트 변수 설정, 데이터베이스 서비스 연결까지의 과정을 담았습니다. 매콤한 코멘트는 환영입니다. 👐 Helm으로 mysql 패키지 설치 Helm을 사용해서 빠르게 mysql 구동에 필요한 오브젝트를 한 번에 생성할 수 있습니다. 먼저 애플리케이션과 스토리지를 목적에 맞게 나누기 위해서 네임스페이스를 생성합니다. kubectl create namespace db # 혹은 kubectl create ns db 데이터베이스 관련된 패키지는 모두 db 네임스페이스에 설치할 예..
Kubernetes로 서버 애플리케이션을 배포하는데 오류가 발생했다. set image로 새로 빌드한 이미지를 넣어서 사용하는데 CrashLoopBackOff 상태가 되면서 컨테이너가 계속 생성되고 정지되고를 반복하고 있었다. 그래서 원인을 먼저 파악하는 것이 좋을 것 같아서 다방면으로 어떻게 접근하면 원인을 파악할 수 있을까 둘러보면서 도움이 될 만 하거나 정리하면 좋을 것 같은 내용들을 남긴다. 디버깅 파드에 문제가 발생했을 때는 세 가지 오브젝트에 관해 문제 상황을 확인해야 한다. 파드에 문제가 발생 레플리케이션컨트롤러에 문제가 발생 서비스에 문제가 발생 파드 디버깅 파드에 문제가 있는지 확인한다. 가장 간단하게 확인할 수 있는 방법은 describe다. 혹은 get resource로 먼저 대략적인..