코드몬스터 2024. 9. 22. 20:25
728x90

 

컨테이너로 구동하는 애플리케이션을 어떻게 배포할 수 있을까?

  1. 깃허브 등의 저장소에 저장해 둔 애플리케이션 소스 코드를 내려받아 도커 컨테이너 이미지로 빌드한다.
  2. 빌드한 컨테이너 이미지를 쿠버네티스에서 사용할 수 있도록 레지스트리에 등록한다.
  3. 레지스트리에 등록된 이미지를 기반으로 쿠버네티스 오브젝트를 생성한다.
  4. 생성한 오브젝트를 외부에서 접속할 수 있도록 서비스 형태로 노출한다.

 

5.1 컨테이너 인프라 환경에서 CI/CD

일반적으로 지속적 통합(CI, Continuous Integration)은 코드를 커밋하고 빌드했을 때 정상적으로 작동하는지 반복적으로 검증해 애플리케이션의 신뢰성을 높이는 작업이다.

 

지속적 배포(CD, Continuout Deploymeny) 는 CI 과정에서 생성된 실뢰할 수 있는 애플리케이션을 실제 상용 환경에 자동으로 배포하는 것을 의미한다.

5.1.1 CI/CD 도구 비교

  • 팀시티
  • 깃허브 액션
  • 뱀부
  • 젠킨스

 

자동화 환경은 단순히 젠킨스용 파드만을 배포해서는 만들어지지 않는다.

젠킨스는 컨트롤러와 에이전트 형태로 구성한 다음 배포해야 하며 여기에 필요한 설정을 모두 넣어야 한다.

동적인 변경 사항을 간편하고 빠르게 적용할 수 있는 커스터마이즈(kustomize), 헬름(Helm)을 사용한다.

 

5.1 젠킨스 설치를 위한 간편화 도구 살펴보기

모든 호나경에서 단순히 오브젝트를 정의한 대로만 사용한다면 젠킨스나 커스터마이즈, 헬름 등은 알 필요가 없다.

하지만 사용자마다 필요한 환경적 요소가 모두 다르므로 이를 요구 사항에 맞게 바꾸어야 한다.

5.2.2 커스터마이즈로 배포 간편화하기

커스터마이즈를 통한 배포는 kubectl에 구성돼 있는 매니페스트를 고정적으로 이용해야 하는 기존 방식을 유연하게 만든다.

 

커스터마이즈의 동작 원리

커스터마이즈는 yaml 파일에 정의된 값을 사용자가 원하는 값으로 변경할 수 있다.

만약 수정해야하는 yaml(야믈) 파이링 많다면 매번 일일이 고치는 데 많은 노력이 든다.

 

  • 커스터마이즈는 kustomize 명령을 제공한다.
  • kustomize 명령과 create 옵션으로 kustomization.yaml 이라는 기본 매니페스트를 만들고, 이 파일에 변경해야 하는 값들을 적용한다.
  • build 옵션으로 변경할 내용이 적용된 최종 yaml 파일을 저장하거나 변경된 내용이 바로 실행되도록 지정한다.

MetalLB 0.9부터는 컨트롤러와 에이전트인 스피커가 통신할 때 보안을 위해 쿠버네티스의 시크릿 오브젝트를 사용한다.

 

실습: 커스터마이즈로 MetalLB 한 번에 만들기

커스터먀이즈를 사용해서 MetalLB를 만든다는 것은 명세서인 kustomization.yaml을 만드는 과정이다.

만들어진 kustomization.yaml을 통해서 우리가 원하는 내용이 담겨져 있는 MetalLB 매니페스트를 생성하고, 매니페스트를 통해서 배포하는 것이다.

 

  1.  

 

 

5.2.3 헬름으로 배포 간편화 하기

 

헬름의 작동 원리