🤔
쿠버네티스
에젠킨스
를 도입해보겠습니다. 이를 위해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/jenkins
Helm 차트를 사용하여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 화면