본문 바로가기
카테고리 없음

AWS EKS에서 Jenkis 설치 및 Ingress 설정

by 홍띠 2023. 5. 28.
사전조건:
젠킨스를 설치할 클러스터에 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

https://artifacthub.io/packages/helm/jenkinsci/jenkins