쿠버네티스 jenkins 연결

greenTea·2023년 11월 3일
0

쿠버네티스 jenkins 연결

🤔쿠버네티스젠킨스를 도입해보겠습니다. 이를 위해 helm을 사용하겠습니다.

😊Helm을 사용하면 애플리케이션을 쉽게 패키징하고 배포하며, 애플리케이션의 업그레이드나 롤백을 관리할 수 있습니다. Helm은 "차트(Chart)"라는 단위로 애플리케이션을 패키징하며, 각 차트는 해당 애플리케이션의 설정, 서비스, 배포 등을 정의하는 파일들로 구성됩니다.
helm을 이용하면 매개변수를 이용하여 버전이나 여러 설정값들을 변경하며 사용할 수 있기에 관리에 용이해집니다.

helm 설치

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을 설치합니다.

1. jenkins repo등록

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를 삭제해줍니다.

2. jenkin 설치

helm install jenkins jenkinsci/jenkins

위 명령어는 jenkins라는 이름의 Release를 생성하며, jenkinsci/jenkins Helm 차트를 사용하여 Jenkins를 설치합니다. 해당 Helm 차트에는 Jenkins 마스터 및 에이전트를 배포하기 위한 모든 구성이 포함되어 있습니다.

😰만약 잘못 설치하였다면 helm uninstall jenkins를 이용하시면 됩니다.

3. 비밀번호 저장

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입니다.

ingress를 이용하여 외부 노출

ingress

🧐현재 jenkinscluterIp로 생성이 된 상황이므로 이를 외부에 노출시키기 위해서는 다른 방법이 필요합니다. 저의 경우에는 ingress로 하였습니다.
NodePort로 하셔도 됩니다. gke의 경우 serviceTypeloadBalancer로 변경해주시면 자동으로 외부 로드밸런서가 생성되면서 연결이 됩니다. 저도 현재 gke를 사용하고 있으나 한번 ingress로 연결해보겠습니다.

(ingress-nginx가 설치되었다는 가정하에 진행하겠습니다.)

ingress 파일 작성

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에 접속해보겠습니다.

jenkins 접속

EXTERNAL-IP 또는 NodePort를 이용하여 jenkins에 접속을 해줍니다. 그러면 아래와 같은 화면이 나옵니다.

jenkins 로그인 화면

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

jenkins main 화면

profile
greenTea입니다.

0개의 댓글