💻 프로그래밍/K8s & Docker
-
docker-compose 무중단 배포 1편 (blue, green)💻 프로그래밍/K8s & Docker 2022. 5. 29. 01:54
안녕하세요! 개발자 Jay입니다! 오늘은 CI/CD를 위한 docker-compose 무중단 배포에 대해서 정리해봤습니다! 다들 로컬에서 테스트를 하거나 서버에서 docker-compose up, down 등으로 새로 컨테이너를 띄우는 과정들을 해보셨을 겁니다! 만약 production 환경에서 이렇게 하게된다면 어떻게 될까요? 정답은 컨테이너가 재시작 되는 시점 동안 사용자들이 오류를 겪게 되겠죠?? 혹은 배포하면서 문제가 생겨서 컨테이너가 뜨지 않는다면 동일하게 오류를 겪게 되겠죠? ㅎㅎ 그렇기 때문에 production환경에서는 무중단 배포를 해야 합니다! 1. 무중단 배포 종류 무중단 배포는 크게 두가지 종류로 나뉜다고 합니다. - rolling update 배포 새로 배포되어야 하는 버전을 하나..
-
[쿠버네티스] docker 이미지 빌드 부터 helm 배포까지 [2부]💻 프로그래밍/K8s & Docker 2022. 5. 17. 20:46
[쿠버네티스] docker 이미지 빌드 부터 helm 배포까지 [1부] 1부에 이어서 2부 시작하겠습니다! :D 1부에서는 도커 이미지를 빌드하고 빌드한 이미지로 k8s(쿠버네티스) 파드로 띄우기까지 했습니다! 2부에서는 이 과정을 Helm Chart(이하 helm)라는 도구를 통해 서비스 배포를 해보겠습니다. 1. What is Helm Chart? 홈페이지에 대문작만하게 쿠버네티스를 위한 패키지 매니저라고 쓰여있네요 ㅋㅋ 맞습니다. 정말 말 그대로 쿠버네티스 배포를 위해 서비스들을 템플릿 형태로 정의하고 그 정의된 템플릿으로 배포하는 도구입니다! 자세한 내용은 공식문서를 확인하시길 바라며, 저희는 일단 먼저 써보도록 하겠습니다! 먼저 helm을 설치해야 합니다. (helm 설치 가이드) mac 에서는..
-
[쿠버네티스] docker 이미지 빌드 부터 helm 배포까지 [1부]💻 프로그래밍/K8s & Docker 2022. 5. 16. 00:16
현재 메인으로 맡고 있는 서비스의 인프라는 쿠버네티스를 사용하고 있습니다. 다만 devOps팀, 저희 팀장님께서 거의 인프라 구성을 다 해주셔서 저는 잘 모르고 있는 상태라 어느 정도 스터디의 필요성을 느끼게 되어 로컬에 minikube 클러스터를 설치하여 실습을 하기로 했습니다ㅎㅎ what is minikube? minikube quickly sets up a local Kubernetes cluster on macOS, Linux, and Windows. We proudly focus on helping application developers and new Kubernetes users. 미니쿠베는 말그대로 작은 쿠버네티스? 쿠버네티스를 로컬에서 테스트 할 수 있도록 만든 가벼운 쿠버네티스 정도로만..
-
"아니 왜! 쿠버네티스의 특정 Node에서만 배포가 실패 하는거야?"를 임시로 해결해본 썰 (feat. CrashLoopBackOff)💻 프로그래밍/K8s & Docker 2022. 4. 8. 23:48
안녕하세요! 개발자 Jay입니다~ 저희 회사에서는 대부분의 서비스들 쿠버 네티스(kubernetes)로 운영고 있습니다. 저는 쿠버네티스에 대해 잘은 모르고 서비스 배포하고 스크립트 돌리거나 할 때 파드(Pod)에 접근해서 특정 컨테이너에 배포되어있는 앱의 스크립트를 실행시키던지? 로그를 보거나, 파드가 잘 뜨고 있나~ 보는 정도의 수준으로만 알 고 있었습니다ㅋㅋ 그러다 최근에 피쳐(feautre) 개발을 끝내고 서비스를 배포하고 있는데 배포가 계속 실패하는 상황에 직면하였습니다. 가뜩이나 쿠버네티스에 대해 잘 모르는 상황이라 배포가 계속 실패 될 수록 💩줄이 탔습니다. 다시 배포를 시작하고 파드가 뜨는걸 확인해봤습니다. 보니까 특정 노드에서 파드가 restart를 하면서 CrashLoopBackOff ..
-
local 개발환경 세팅부터 배포까지 - 3부(Fabric)💻 프로그래밍/K8s & Docker 2019. 9. 1. 16:38
안녕하세요! 운동하는 개발자 Jay입니다. 오늘은 대망의 3부 배포에 대해 알아 보겠습니다. 배포를 위해 Fabric 이라는 python 라이브러리를 사용하겠습니다. GitHub에서 프로젝트를 clone 받아서 실행(runserver) 까지 실행하는 배포 스크립트를 만들어 보겠습니다! 1. Fabric 이란? Fabric은 SSH를 통해 원격으로 shell commands를 실행할 수 있도록 만들어진 Python (2.7, 3.4+) 라이브러리 입니다. 말그대로 우리가 local에서 만든 프로젝트를 배포하고자 하는 서버에 원격으로 배포를 할 수 있게 해주는 라이브러리 입니다. 물론 그냥은 아니고 SSH를 사용해서요! * Fabric 홈페이지 : https://www.fabfile.org/ Welcome ..
-
local 개발환경 세팅부터 배포까지 - 2부(docker-compose, ssh)💻 프로그래밍/K8s & Docker 2019. 8. 14. 06:56
안녕하세요! 운동하는 개발자 Jay입니다. 1부에 이어서 오늘은 docker-compose 를 통한 개발환경 세팅을 해보겠습니다. 1. docker-compose 란? compose는 도커 multi-container Docker application 들을 정의하고 실행시키는 Tool입니다. compose와 함께 YAML파일을 config로 application service를 사용 할 수 있습니다. 다음과 같은 세가지 step으로 compose를 사용할 수 있습니다. Dockerfile과 함께 app의 환경을 정의합니다. 그리고 이것은 어디서든지 (재)실행시킬 수 있습니다. docker-compose.yml 에 app을 만들기 위한 서비스를 정의하면, 독립적인 환경에서 함께 실행시킬 수 있습니다. do..
-
local 개발환경 세팅부터 배포까지 - 1부(Docker 란?)💻 프로그래밍/K8s & Docker 2019. 8. 11. 23:27
안녕하세요! 운동하는 개발자 Jay 입니다! local 개발환경 세팅부터 배포까지는 시리즈(?)로 포스팅 할 예정이며, docker로 개발환경 구축, fabric을 이용한 배포 까지 다룰 것 입니다. 오늘은 개발서버, 실서버 배포 전 로컬에서 테스트 할 수 있는 개발환경을 세팅에 대해 알아 보겠습니다. 1. local 개발 환경의 필요성 보통 자신의 로컬에서 개발을 하게되면 실제 서비스가 돌아가는 서버, 혹은 실서비스 전 개발서버에 배포를 하여 서비스의 동작을 확인합니다. 하지만, 아무런 테스트 없이 바로 개발서버, 실서버에 서비스를 배포하게 된다면 예기치 못한 장애와 버그들에 정신적 스트레스를 받을 수 있습니다. 그렇기에 로컬에서 우리가 만든 서비스를 테스트 할 수 있는 개발환경을 구성해야 합니다. 우..