PaaS/CI CD

(Kubernetes, Jenkins) Docker이미지를 kubernetes 밖에서 빌드할 것인가 kubernetes Jenkins Agent에서 빌드할 것인가

armyost 2022. 2. 21. 17:25
728x90

관련링크

https://medium.com/hootsuite-engineering/building-docker-images-inside-kubernetes-42c6af855f25

 

Building Docker Images inside Kubernetes

The Problem

medium.com

 

Docker 이미지를 DockerHub등에 Push 하기위해서 Docker Runtime을 사용해야 한다. 

이때

1. Jenkins에서 Docker Plugin만을 이용해서 Build하는 방법과

2. Jenkins에서 Kubernetes 노드를 연결하여 WorkerNode에 Agent를 생성하여 Build하는 방법이 있다. 

 

각 방법의 장단점을 이야기 하고자 한다. 

 

1번 방법의 경우 보안이 뛰어나다. 굳이 Kubernetes를 Jenkins가 접속할 필요가 없다.

다만, 부하가 Jenkins 내부 Docker Runtime에 몰리는 성능상의 문제가 발생한다. 그래서 Jenkins에 높은 리소스를 할당할 필요가 있다.

 

2번 방법의 경우 컨테이너 리소스를 배포할 대상인 Kubernetes 클러스터에 부하를 전가시킴으로써 합리적인 리소스 분산을 이룰수 있다. 다만, 해당 Kubernetes 클러스터의 스케쥴 계획에 지장이 생길뿐더러, Jenkins의 Agent가 Kubernetes 클러스터의 모든 자원을 접근할 수 있는 보안상의 취약점이 발생한다. 즉 원격에서 Jenkins Agent를 통해 Kubernetes 클러스터에 자원생성부터 삭제까지 모든 권한을 가지게 되는 것이다. 

 

위 두가지 장단점을 고려하여 진행하길 바란다.