🤔
쿠버네티스에젠킨스를 도입해보겠습니다. 이를 위해helm을 사용하겠습니다.😊
Helm을 사용하면 애플리케이션을 쉽게 패키징하고 배포하며, 애플리케이션의 업그레이드나 롤백을 관리할 수 있습니다. Helm은 "차트(Chart)"라는 단위로 애플리케이션을 패키징하며, 각 차트는 해당 애플리케이션의 설정, 서비스, 배포 등을 정의하는 파일들로 구성됩니다.
helm을 이용하면 매개변수를 이용하여 버전이나 여러 설정값들을 변경하며 사용할 수 있기에 관리에 용이해집니다.
$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh
위 명령어를 통해 helm을 설치합니다.
helm repo add jenkinsci https://charts.jenkins.io
helm repo update
🤗jenkins repository를 등록하는 명령어입니다. 이를 통해 후에 저장소를 이용하여
jenkins를 설치할 수 있습니다.
helm repo update를 통해 변경된 사항을 적용해줍니다.
helm repo list를 통해 repo가 잘 등록이 되었는지 확인해줍니다.
잘못되었다면helm repo remove <repository-name>를 통해 repo를 삭제해줍니다.
helm install jenkins jenkinsci/jenkins
위 명령어는 jenkins라는 이름의 Release를 생성하며,
jenkinsci/jenkinsHelm 차트를 사용하여Jenkins를 설치합니다. 해당 Helm 차트에는 Jenkins 마스터 및 에이전트를 배포하기 위한 모든 구성이 포함되어 있습니다.😰만약 잘못 설치하였다면
helm uninstall jenkins를 이용하시면 됩니다.
helm으로 설치를 하고 나면 아래와 같은 글이 보일 겁니다.
1. Get your 'admin' user password by running: kubectl exec --namespace default -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/additional/chart-admin-password && echo 2. Get the Jenkins URL to visit by running these commands in the same shell: echo http://127.0.0.1:8080 kubectl --namespace default port-forward svc/jenkins 8080:8080 3. Login with the password from step 1 and the username: admin 4. Configure security realm and authorization strategy 5. Use Jenkins Configuration as Code by specifying configScripts in your values.yaml file, see documentation: http://127.0.0.1:8080/configuration-as-code and examples: https://github.com/jenkinsci/configuration-as-code-plugin/tree/master/demos😑1번의 경우
jenkins초기 비밀번호를 확인하는 명령어이니 이를 이용하여 비밀번호를 확인해주시고 저장해줍니다. id는 admin입니다.
🧐현재
jenkins는 cluterIp로 생성이 된 상황이므로 이를 외부에 노출시키기 위해서는 다른 방법이 필요합니다. 저의 경우에는ingress로 하였습니다.
NodePort로 하셔도 됩니다. gke의 경우 serviceType을 loadBalancer로 변경해주시면 자동으로 외부 로드밸런서가 생성되면서 연결이 됩니다. 저도 현재 gke를 사용하고 있으나 한번 ingress로 연결해보겠습니다.(ingress-nginx가 설치되었다는 가정하에 진행하겠습니다.)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: jenkins-ingress
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: jenkins
port:
number: 8080
🤓
ingress-nginx를 이용하여 service를 연결하겠습니다.
현재jenkins라는 서비스가 띄워져 있는 상황이고 해당 서비스의 8080포트로 연결해야jenkins로 접속이 가능하기에 port:8080으로 연결할 수 있도록 하였습니다.위와 같이 작성하신 후
kubectl apply -f [파일 이름]을 실행해줍니다.이후 조금 기다리였다가
kubectl describe ingress jenkins-ingress를 실행하여 잘 연결이 되었는지 확인 해 줍니다.이제
jenkins에 접속해보겠습니다.
EXTERNAL-IP 또는 NodePort를 이용하여
jenkins에 접속을 해줍니다. 그러면 아래와 같은 화면이 나옵니다.

jenkins 로그인 화면
- id: admin
- password: 위에서 명령어로 확인한 비밀번호
를 입력하고 로그인하시고 나서 아래와 같은 화면이 나오면 성공입니다.🥳

jenkins main 화면