이슈 : 도커 미설치
Jenkins 파드에서 도커 이미지를 빌드하려고 했지만, 젠킨슨 파드 자체에 docker나 docker cli가 설치되어 있지 않았다.
deployment에서 container init시에 docker을 설치해줄까 했지만 init시에 도커를 설치하는 방법 말고 다른
방법 1. Jenkins 파드 내부에 도커 CLI 설치 및 노드의 docker.sock 마운트
장점
- jenkins에 도커를 설치하지 않고, cli 설치만으로 docker 사용 가능하다
단점
- 노드의 docker 데몬의 완전한 권한을 파드가 받는 것이기 때문에 보안의 위험이 있다.
방법 2. Jenkins 파드 내부에 도커 설치
장점
- 보안의 위험이 없음
- deployment를 수정하여 손쉽게 설정할 수 있다
단점
- 도커 이미지를 빌드하는 여러 개의 파이프라인을 병렬로 실행하는 경우 다른 파이프라인 Pending 가능성
- 한 파이프라인, 혹은 도커에서 오류 발생 시 다른 파이프라인에 영향을 줄 수 있다.
- 도커를 추가로 설치하고 유지해야 하는 리소스의 낭비가 있다
- 하나의 파드에 jenkins, docker, jnlp가 있는 파드의 복잡성 증가 → 기능별로 파드 분리
방법 3. Docker Agent Pod를 사용하는 방법 (채택)

장점
- 보안의 위험이 없음
- 파이프라인 개수만큼 도커 에이전트를 동적 할당 가능
- docker agent 실행 후 agent pod를 폐기하여 리소스 회수 가능
- 도커별로 공간을 격리하여 다른 파이프라인에 영향을 미치지 않는다
→ MSA 지향적인 패턴
단점
- 도커 에이전트 파드의 init 시간만큼 파이프라인 시간이 추가됨
- 도커 에이전트가 여러 개 실행될 만큼의 리소스 공간의 여유가 있어야 한다.
- Agent pod의 특성 상 어느 노드에서 실행될지 보장하기 힘드므로 이미지 캐싱이 불규칙적이다
→ 다음 글에서 pv 선언을 통해서 해결
'DevOps(kubernetes)' 카테고리의 다른 글
[Jenkins] Jenkins 파드에서 도커 이미지 빌드(2) Docker Agent yaml 및 PV, PVC 선언 (0) | 2024.08.13 |
---|---|
[k8s] k8s 클러스터 CI/CD 파이프라인 아키텍처 (0) | 2024.08.13 |
[Gitlab] Gitlab 파드 root 비밀번호 찾는법 / 비밀번호 재설정 (0) | 2024.08.13 |
[Gitlab] root(admin)에서 user register 승인하기 (0) | 2024.08.13 |
[ArgoCD] Gitlab repo 연동하는 법 (0) | 2024.08.13 |