Jenkins

[k8s] HelmRelease로 배포한 젠킨스 플러그인 재설치

비번변경 2022. 4. 25. 16:29

쿠버네티스 클러스터에 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 접속 후 설치된 플러그인 확인

원하는 플러그인이 정상적으로 설치되었는지 확인한다.