사전조건:
젠킨스를 설치할 클러스터에 EBS CSI 드라이버가 세팅되어 있어야 한다.
참고: https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/managing-ebs-csi.html
Helm repository 추가
helm repo add jenkins <https://charts.jenkins.io>
helm repo update
설치 전 설정을 위한 values.yaml 파일 가져오기
위의 명령어로 values.yaml파일만 가져와서 수정해도 되고, 아래 명령어로 전체 차트의 파일들(템플릿 포함)을 가져와서 이용해도 된다.
helm show values jenkins/jenkins > values.yaml
# 혹은 차트 전체 가져오기
helm pull jenkins/jenkins --untar
values.yaml 편집
기본세팅으로는 젠킨스가 Clusster IP를 서비스로 사용하여 포트포워딩을 이용해서 접근해야 한다.
여기서는 젠킨스 웹UI에 쿠버네티스 외부에서도 접근 가능하도록 Ingress를 활성화 하여 ALB 로드밸런서를 사용하고자 한다.
- Ingress 구성
#values.yaml 편집
controller:
# ClusterIP가 디폴트인데, alb controller 사용하기 위해서는 NodePort로 변경필요
# https://github.com/kubernetes-sigs/aws-load-balancer-controller/issues/1656
serviceType: NodePort
ingress:
enabled: true
# Override for the default paths that map requests to the backend
paths: []
apiVersion: "extensions/v1beta1"
labels: {}
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/load-balancer-name: jenkins
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: instance
<생략>
- 웹서버에서 직접 사용자를 등록하고 관리 할 수 있도록 "allowsSignup"을 true로 한다.
securityRealm: |-
local:
allowsSignup: true
enableCaptcha: false
users:
- id: "${chart-admin-username}"
name: "Jenkins Admin"
password: "${chart-admin-password}"
젠킨스 설치
#네임스페이스 생성
kubectl create ns jenkins
# helm install [RELEASE_NAME] jenkins/jenkins [flags]
helm install jenkins jenkins/jenkins -f values.yaml -n jenkins
젠킨스 접속
아래 명령어들로 접속 정보를 확인한다. 기본설정된 로그인 ID는 "admin"이다
#접속 주소 확인
kubectl get ingress -n jenkis
#로그인 PW확인
kubectl exec --namespace jenkins -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/additional/chart-admin-password && echo
참고:
https://github.com/jenkinsci/helm-charts/tree/main/charts/jenkins#get-repository-info