Jenkins

박상훈·2022년 5월 18일
0
post-thumbnail

쿠버네티스 - 도커 를 사용한 과정

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

위 과정을 명령어 순으로 간단하게 볼 경우
1.docker build -> 2.docker push -> 3.kubectl create -> 4.kubectl expose

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


자동화

지속적 통합(CI, Continuous Integration), 지속적 배포(CD, Continuous Deployment)
실무적인 환경에서 변경 사항을 지속적으로 추적하여 안정화된 어플리케이션을 만들고
배포하는 과정을 자동화하여 시스템을 안정적으로 운영하는데 쓰이는 개념을 CI/CD 라고 칭함

커스터마이즈(kustomize)

yaml 파일에 정의된 값을 사용자가 원하는 값으로 변경할 수 있다
쿠버네티스에서 오브젝트에 대한 수정은 yaml 파일을 직접 수정하는데 내용이 많을 경우를 위해 kustomize 명령 제공
kustomize 명령과 create 옵션으로 kustomization.yaml 기본 매니페스트 생성
생성한 파일에 변경해야 하는 값들을 적용 후 build 옵션으로 변경할 내용이 적용된 최종 yaml 파일 저장 및 실행
커스터마이즈 압축 파일을 내려받고 해제 후 /usr/local/bin 으로 옮겨 배시 셸에서 바로 실행할 수 있도록 세팅

resources 정보를 가지는 kustomization.yaml 기본 매니페스트 생성

kustomize create ---namespace=[name space] --resources [file name, 여백 없이 ',' 구분]

각 yaml 파일들을 직접 수정하지 않고 kustomization.yaml 에 설정

kustomize edit set image [이미지 설정]

kubectl apply -f - 명령으로 빌드한 결과를 kubectl apply 인자로 전달하여 배포 진행

kustomize build | kubectl apply -f -

헬름으로 배포 간편화

커스터마이즈에서 제한적이었던 주소 할당 영역과 같은 값을 대체하면서 간단하게 설치할 수 있도록 설계
쿠버네티스에 패키지를 손쉽게 배포할 수 있도록 패키지를 관리하는 쿠버네티스 전용 패키지 매니저
패키지 : 실행 파일, 실행 환경에 대한 의존성 파일, 환경 정보 묶음
패키지 매니저 : 외부 저장소에 패키지 정보를 전달 받고 안정적으로 관리

헬름 기본 저장소 : 아티팩트허브
헬름 차트 : 차트는 쿠버네티스 리소스와 관련된 셋을 설명하는 파일 모음, 간단한 배포, 복잡한 웹앱도 될 수 있음

헬름 설치, export DESIRED_VERSION 명령어 사용하여 버전 지정

export DESIRED_VERSION=[version]; [sh file path]

필요한 헬름 차트 경로 등록

helm repo add [edu(헬름 차트 저장소 이름으로 변경 가능)][helm chart path]

헬름 차트 저장소가 정상적으로 등록됬는지 확인

helm repo list

헬름으로 차트 저장소 추가 시점에 로컬 캐시에 저장해 install 같은 작업 수행시 캐시 참조, 관습이라고함

helm repo update

헬름 차트 저장소 이름으로 metallb 설치

helm install metallb edu/metallb \
--namespace=metallb-system \
--create-namespace \
--set controller.tag=v0.8.3 \
--set speaker.tag=v0.8.3 \
--set configmap.ipRange=192.168.56.11-192.168.56.29

--namespace : 헬름 차트를 통해 생성되는 어플리케이션이 위치할 네임스페이스 지정
--create-namespace : 네임스페이스 옵션으로 지정된 네임스페이스가 존재하지 않는 경우 생성
--set 헬름에서 사용할 변수를 명령 인자로 전달, ',' 로 구분 가능

profile
엔지니어

0개의 댓글