개요DevOps 관련 작업을 할 때면, 운영중인 클러스터에 반영하기 선뜻 겁나는 작업들이 있다.그렇다고 Local 개발 환경에 적용하자니 실제 환경과 비슷하게 Node를 여러개 만들기 어렵기도 하다.이럴 때 사용할 수 있는 좋은 프로젝트가 있어서 같이 학습해보고자 한다.목표KinD(Kubernetes in Docker)의 특징과 사용 이유에 대해 이해한다.Kind를 이용한 On-Premise 클러스터를 구축한다.여정KinD가 무엇인가요?kind – Initial design (k8s.io)"Kubernetes IN Docker"의 약자로, Kubernetes 클러스터를 로컬 환경에서 간편하게 생성하고 관리하기 위한 도구Docker 컨테이너 내에서 Kubernetes 노드를 실행하여 클러스터를 구성왜 Ki..
목표 이전 편에서 작성한 내용에 CI/CD를 추가해보자 소스 위치, 버전 정보를 저장소에서 가져오자 release 브랜치에 push가 발생하면 docker 이미지로 배포할 수 있도록 하자 배포 버전은 커밋ID를 넣을 수 있도록 하자 배포하는 이미지의 크기를 줄이자 여정 컨테이너와 프로젝트 간 의존성 제거 docker 이미지를 Registry에 등록 각 Dockerfile마다 Container Registry에 등록하여 이미지를 pull할 수 있도록 등록 💡 아래 코드는 프로젝트 메뉴 > Packages and registries > Container Registry에서 확인! # Gitlab의 Private image hub에 저장할 수 있도록 로그인 docker login registry.gitlab...
지적과 댓글은 언제나 환영합니다! 도커 삽질 개선하기 이전편 요약 이전 편 도커 삽질하기 에서는 단순 리눅스 컨테이너를 생성해서 직접 명령어를 타이핑하면서, 컨테이너의 상태를 변경하였다. 그 결과, 컨테이너가 재부팅되면 대부분의 데이터와 상태가 소실되어 같은 과정을 반복해야 했다. 목표 도커 컨테이너 설정을 간소화, 자동화해보자 공통 설정 분리 → env 파일 생성 DB에 대한 dockerfile 작성 → 이미지 생성 Package(서브도메인B, 지원도메인D)에 대한 dockerfile 작성 → 이미지 생성 docker-compose를 이용해서 실행 여정 env 파일로 설정 분리 # DB Configuration TZ=Asia/Seoul DB_HOST=0.0.0.0 # 외부 DB와 연결하고 싶을 때 DB..
지적과 댓글은 언제나 환영합니다! 들어가기에 앞서.. 본 게시글은 MSA 형태로 구성된 서비스를 하나씩 도커라이징(dockerizing)하는 게시물입니다. 도커 명령어를 배우는 초심자 입장에서 작성한 글로 삽질했던 시간 순서대로 작성하였습니다. 중급자 이상 분들은 필요한 명령어만 골라서 사용하시면 됩니다. 현재 상황 현재 가지고 있는 MSA 형태의 어플리케이션의 구조는 아래와 같다. 서비스 별로 실행파일이 분리가 되어 API 요청으로 통신하고 있긴 하지만, 실행 시, 같은 디렉토리 내에서 상대위치 참조를 하고 있다. 즉, 물리적으로 분리가 어려운 상태이다. 따라서, 단계적, 점진적으로 도커라이징하고자 한다. 목표 이번 글에서는 최소한의 분리를 하려고 한다. 어플리케이션(MSA를 통째로) 과 DB를 각각 ..
지적과 댓글은 언제나 환영합니다! 변경사항을 Docker로 자동 배포하기 변경사항을 감지하고 배포하려면 CI/CD 파이프라인 구축을 먼저 알아야한다. CI/CD 파이프라인을 구축하는 방법은 버전 관리 플랫폼별로 다르다. 대표적으로 Github Action, Gitlab, Terraform 등이 있으나 Github Action으로 진행해보도록 하겠다. Github Action을 이용한 CI/CD Github는 사용자가 CI/CD 도구를 직접 통합해야 한다. 선택지로 Jenkins, CircleCI, TravisCI 등이 있다 필자는 현재 이 블로그도 Github Action으로 자동 배포하고 있다. 그 때의 빌드 스크립트를 재활용해보자. 자세한 설명은 주석을 참고하자. # 알아두기 중간중간 보이는 secr..
지적과 댓글은 언제나 환영합니다! 어플리케이션을 Docker로 배포하기 이번 실습편에서는 아래 3가지 단계를 통해 도커를 찍먹해볼 것이다. Docker 이미지 만들기 만든 이미지를 실행해보기 변경사항을 자동으로 배포하기(심화편) 1. Docker 이미지 만들기 Docker 컨테이너는 Docker 이미지를 기반으로 실행된다. 우리가 만든 어플리케이션을 Docker 이미지로 직접 만들어보자. 우선, 어플리케이션을 빌드한 결과물을 가지고 있어야한다. 필자는 IntelliJ에서 Spring Boot 어플리케이션을 Jar파일로 만들것이다. 만드는 방법은 필자가 정리한 글에서 확인할 수 있다. (만약, 다른 언어나 플랫폼이라면 자신의 프로젝트에 맞게 빌드 결과물을 얻고 다음 단계를 진행하자.) 2. 만든 이미지를 ..
지적과 댓글은 언제나 환영합니다! 이 글은 3편의 시리즈물로 제작하였다. 개념편 : Docker가 뭐길래!? 실습편 : 어플리케이션을 Docker로 배포하기 심화편 : 변경사항을 Docker로 자동 배포하기 시작해보자! Docker가 뭐길래!? 도커, 도커, 도커, 도커 컴퓨터 업계에 종사하는 이들이라면, 메아리로도 한번쯤은 들어본 적 있는 이름이다. 도커가 뭔지 몰라도 아래 장점을 한번만 읽어보도록 하자. 도커는 소프트웨어 전달 주기를 가속한다. 도커 컨테이너는 변화하는 환경에 신속히 대응, 투입할 수 있고, 필요 시 이전 버전으로 신속히 롤백할 수 있다. 도커 컨테이너는 애플리케이션이 실행해야 하는 모든 것을 캡슐화하기 때문에 애플리케이션이 환경들 사이에서 손쉽게 이동할 수 있다. 도커 런타임이 설치..