inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

인프런 워밍업 클럽 4기 - DevOps 4주차 발자국

Min
1

k8s 리소스를 직접 배포하는것 보다 heml Kustomize 등의 배포 패키지 툴을 사용하는게 더 좋다.
헬름은 Chart라는 패키지 형태로 앱을 관리하며, 템플릿 기반 manifest에, values-{stage}.yaml, Chart.yaml, _hepers.tpl, helm command --set option 등을 활용해 동적으로 값을 주입할 수 있다.
반면 Kustomize는 Base 설정에 Overlay 방식으로 특정 환경에 대한 설정들을 덮어서 환경별로 다른 설정을 적용한다.

배포 파이프라인을 만들면서 드는 고민과 답변들

  1. 배포에 사용되는 여러 툴 인증정보를 어떻게 관리할 것인가 > 배포툴의 Credentials 에 한번 정보를 기입해두고, 각 스테이지 별로 Credential 의 데이터를 가져와 처리하도록 한다. (cicd 서버 디스크에 직접 저장 X)

    1. 젠킨스 Credential, docker-credential-helpers..)

  2. 컨테이너 이미지 용량 관리 > 이미지별 LC를 두고 제거

    1. k8s 는 도커와 달리 이미지를 처리하는 gc 가 존재해, config 에 따로 설정하지 않으면 자동으로 안쓰는 이미지를 제거해준다.

  3. 네임 스페이스 관리 > 특히 여러 서비스가 존재하고 독립적으로 관리된다면, NS 설정은 리소스 배포와 독립적으로 두는게 낫다

  4. 배포 파드가 onService인지 확인 > helm --wait 옵션으로 배포 프로세스중 파드가 잘 뜬 다음 다음 단계로 진행시킬 수 있다.

  5. 배포시 파드가 업데이트 되지 않는 경우들 > deployments 는 내부 template 프로퍼티 하위값들이 바뀌어야 config에 맞춘 파드를 다시 띄운다.

    1. template.spec.metadata에 배포를 위한 값을 넣음으로써, 배포를 강제할 수 있다.

    2. 이를테면 어플리케이션 컨테이너의 변경때 사용가능!

  6. 이미지별 태그 관리

    1. 개발 환경처럼 잦은 배포가 있는 경우 version이 무의미할 수 있다.

      1. 이 때 latest tag + Always pullPolicy 가 적합

    2. 그러나 배포 관리가 필요한 운영환경에는 version이 필수이다.

      1. 이 때 version tag + IfNotPresent pullpoilcy 가 적합

        1. k8s 클러스터 내부에 이미지가 있다면 굳이 허브를 거칠 필요없이 바로 세팅 가능하다.

      2. 비슷하게 개발환경에도 롤백이 필요하다면 버전관리가 필요하고 해당 태그 정책을 가져가면 좋다.

Argo
 k8s 워크플로우 및 배포 관리를 위한 오픈소스 프로젝트 모음으로,  GitOps 방식으로 배포를 관리하며, CNCF 졸업 프로젝트이다.

Argo Events: 카프카와 같은 이벤트 버스 툴

k8s 클러스터에 설치되는 Argo 컴포넌트들은 아래와 같다.

AgoCD로 배포

IamgeUpdater

Argo Rollout

4주차 학습 후기

답변 1

0

일프로

끝까지 잘 따라와 주셔서 저도 감사드려요^^