쿠버네티스 클러스터에 HelmRelease로 애플리케이션을 배포한 뒤 배포한 애플리케이션의 설정 등을 변경하여 재배포하고 싶다면, 애플리케이션의 HelmRelease 정의 파일(yaml)을 수정하여 적용하면 된다.
vi hr_jenkin.yaml
kubectl apply -f hr_jenkins.yaml
다만 적용한 yaml 파일에 수정된 부분이 없으면 apply를 실행해도 아래와 같은 메세지가 출력되며 helmRelease가 수정되지 않는다.
helmrelease.helm.fluxcd.io/jenkins unchanged
따라서 기존에 HelmRelease yaml 파일을 수정할 수는 없지만, yaml 파일의 master.installPlugins 항목으로 설치한 플러그인을 다시 설치하고 싶다면 아래 방법을 따라 처리하면 된다.
# List of plugins to be install during Jenkins master start
installPlugins:
- kubernetes:1.30.11
- kubernetes-client-api:5.4.2
방법
1. 젠킨스에 설치된 플러그인 삭제
PVC로 마운트된 Jenkins Home 경로로 접근하여 plugins 디렉터리를 삭제한다.
rm -r plugins
kubernetes 상에서 jenkins를 배포하여 jenkins 포드가 생성되면, 포드는 copy-default-config라는 이름의 초기화 컨테이너를 먼저 실행하여 jenkins 서비스 동작에 필요한 설정 작업을 진행한다. 이 때, HelmRelease yaml 파일의 master.installPlugins 항목에 나열된 플러그인도 /var/jenkins_home/plugins에 설치된다.
/var/jenkins_home는 지속성을 유지하기 위해 PVC로 마운트하여 사용하고 있을 것이며, copy-default-config 와 서비스 컨테이너인 jenkins 컨테이너에 마운트된다.
jenkins_home 경로에 접근할 때에는 PVC/PV 정보를 확인하여 마운트 볼륨에 접근하거나, 아래와 같이 jenkins pod container에 직접 접속하여 접근할 수도 있다.
kubectl exec jenkins_pod -it -- bash
# 또는 기타 쉘
kubectl exec jenkins_pod -it -- sh
2. jenkins pod 삭제 후 재생성
jenkins pod가 생성될 때 동작하는 copy-default-config는 마운트된 /var/jenkins_home 에 plugins 경로가 있는지 확인하고, 해당 경로가 없으면 설정으로 정의된 플러그인 설치를 진행하는 것으로 보인다. /var/jenkins_home에서 plugins 경로를 삭제했으므로 copy-default-config가 동작할 수 있도록 pod를 재생성한다.
jenkins pod는 deployment에 의해 관리되고 있으므로 pod를 삭제하면 자동으로 재생성될 것이다.
kubectl delete pod jenkins_pod
3. jenkins 접속 후 설치된 플러그인 확인
원하는 플러그인이 정상적으로 설치되었는지 확인한다.