Kubernetes에 Jenkins를 설치하는 방법

Kubernetes에 Jenkins를 설치하는 방법

2022-06-01 last update

10 minutes reading Kubernetes CI/CD
저자는 COVID-19 Relief Fund 계획의 일부로 기부를 받기로 했다.

소개


Write for DOnations 파이핑은 DevOps 환경의 핵심 구성 요소 중 하나입니다.그것들은 여러 팀 간의 업무 절차를 간소화하고 생산력을 향상시키는 데 도움이 된다.Continuous Integration/Continuous Deployment (CI/CD), CI/CD 파이프를 설정할 수 있습니다.
이 강좌에서는 Kubernetes에 Jenkins를 설치합니다.그런 다음 Jenkins UI에 액세스하여 샘플 파이핑을 실행합니다.

선결 조건


본 강좌를 배우려면 다음이 필요합니다.
  • 작업하는 Kubernetes 클러스터와 kubectl 워크스테이션에 설치됩니다.Jenkins is a widely-used open source automation server Digital Ocean에 Kubernetes 클러스터를 구축합니다.
  • 1단계 - Kubernetes에 Jenkins 설치


    Kubernetes에는 YAML 또는 Follow our Kubernetes Quickstart 를 사용하여 원하는 상태를 전달할 수 있는 선언적 API가 있습니다.이 강좌에서는 YAML 파일을 사용하여 Jenkins를 배포합니다.클러스터에 대해 kubectl 명령이 구성되어 있는지 확인합니다.
    먼저kubectl를 사용하여 JenkinsJSON file를 생성합니다.
    1. kubectl create namespace jenkins
    이제 Jenkins를 배치할 YAML 파일을 만듭니다.jenkins.yaml 또는 기본 설정 편집기를 사용하여 nano 라는 새 파일을 만들고 엽니다.
    1. nano jenkins.yaml
    이제 다음 코드를 추가하여 Jenkins 이미지, 포트 및 기타 구성을 정의합니다.
    젠킨스.아마르
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: jenkins
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: jenkins
      template:
        metadata:
          labels:
            app: jenkins
        spec:
          containers:
          - name: jenkins
            image: jenkins/jenkins:lts
            ports:
              - name: http-port
                containerPort: 8080
              - name: jnlp-port
                containerPort: 50000
            volumeMounts:
              - name: jenkins-vol
                mountPath: /var/jenkins_vol
          volumes:
            - name: jenkins-vol
              emptyDir: {}
    
    이 YAML 파일은 namespace를 사용하여 생성deployment하고 포트808050000를 엽니다.이 포트를 사용하여 각각 Jenkins에 액세스하고 Jenkins Workers의 연결을 수락할 수 있습니다.
    현재 jenkins 네임스페이스에 이 배포를 만듭니다.
    1. kubectl create -f jenkins.yaml --namespace jenkins
    Jenkins 이미지를 추출하고 Jenkins 크레인을 실행하는 데 몇 분의 시간을 주십시오.kubectl를 사용하여 pod의 상태를 확인합니다.
    1. kubectl get pods -n jenkins
    다음 출력을 받게 됩니다.
    NAME                       READY   STATUS    RESTARTS   AGE
    jenkins-6fb994cfc5-twnvn   1/1     Running   0          95s
    
    Pod 이름은 환경에서 다를 수 있음을 주의하십시오.
    pod가 실행되면 the Jenkins LTS image 필요합니다.이 강좌는 사용됩니다expose it using a Service.또한 Jenkins에 연결할 Cluster IP 유형의 서비스도 작성합니다.jenkins-service.yaml라는 새 파일을 만들고 엽니다.
    1. nano jenkins-service.yaml
    다음 코드를 추가하여 NodePort 서비스를 정의합니다.
    젠킨스 서비스.아마르
    apiVersion: v1
    kind: Service
    metadata:
      name: jenkins
    spec:
      type: NodePort
      ports:
        - port: 8080
          targetPort: 8080
          nodePort: 30000
      selector:
        app: jenkins
    
    ---
    
    apiVersion: v1
    kind: Service
    metadata:
      name: jenkins-jnlp
    spec:
      type: ClusterIP
      ports:
        - port: 50000
          targetPort: 50000
      selector:
        app: jenkins
    
    위의 YAML 파일에서 NodePort 서비스를 정의한 다음 Jenkinspod의 포트8080를 포트30000에 공개합니다.
    현재 같은 네임스페이스에 서비스를 만듭니다.
    1. kubectl create -f jenkins-service.yaml --namespace jenkins
    서비스가 실행 중인지 확인합니다.
    1. kubectl get services --namespace jenkins
    다음 출력을 받게 됩니다.
    Output
    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE jenkins NodePort your_cluster_ip <none> 8080:30000/TCP 15d
    NodePort와 Jenkins가 실행됨에 따라 Jenkins UI에 액세스하고 탐색할 준비가 되었습니다.

    2단계 - Jenkins UI 액세스


    이 단계에서는 Jenkins UI에 액세스하고 탐색합니다.클러스터 노드의 포트30000에서 NodePort 서비스에 액세스할 수 있습니다.Jenkins UI에 액세스하려면 노드 IP를 읽어들여야 합니다.kubectl를 사용하여 노드 IP 검색:
    1. kubectl get nodes -o wide
    kubectl 외부 IP를 사용하여 출력을 생성합니다.
    Output
    NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME your_node Ready <none> 16d v1.18.8 your_internal_ip your_external_ip Debian GNU/Linux 10 (buster) 4.19.0-10-cloud-amd64 docker://18.9.9 your_node Ready <none> 16d v1.18.8 your_internal_ip your_external_ip Debian GNU/Linux 10 (buster) 4.19.0-10-cloud-amd64 docker://18.9.9 your_node Ready <none> 16d v1.18.8 your_internal_ip your_external_ip Debian GNU/Linux 10 (buster) 4.19.0-10-cloud-amd64 docker://18.9.9
    하나 your_external_ip 값을 복사합니다.
    웹 브라우저를 열고 http://your_external_ip:30000 로 이동합니다.
    관리자 암호를 묻고 Jenkins Pod 로그에서 이 암호를 검색하는 페이지가 나타납니다.
    이 로그에서 비밀번호를 추출하려면 kubectl 를 사용하십시오.
    먼저 터미널로 돌아가서 Pod 이름을 검색합니다.
    1. kubectl get pods -n jenkins
    다음 출력을 받게 됩니다.
    NAME                       READY   STATUS    RESTARTS   AGE
    jenkins-6fb994cfc5-twnvn   1/1     Running   0          9m54s
    
    다음은 관리자 비밀번호를 얻기 위해 Pod의 로그를 확인하십시오.강조 표시된 부분을 pod 이름으로 대체하려면 다음과 같이 하십시오.
    1. kubectl logs jenkins-6fb994cfc5-twnvn -n jenkins
    비밀번호를 찾기 위해 위나 아래로 스크롤해야 할 수도 있습니다.
    Running from: /usr/share/jenkins/jenkins.war
    webroot: EnvVars.masterEnvVars.get("JENKINS_HOME")
    . . .
    
    Jenkins initial setup is required. An admin user has been created and a password generated.
    Please use the following password to proceed to installation:
    
    your_jenkins_password
    
    This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
    . . .
    
    사본your_jenkins_password.이제 브라우저로 돌아가서 Jenkins UI에 붙여넣습니다.
    비밀번호를 입력하면 Jenkins에서 플러그인을 설치하라는 메시지가 표시됩니다.심상치 않은 일을 하지 않았기 때문에, 제안된 플러그인을 설치하는 것을 선택하십시오.
    설치 후 Jenkins는 새 페이지를 불러오고 관리자를 만들 것을 요구합니다.필드를 작성하거나 관리자로 건너뛰기 및 계속하기 링크를 눌러 이 단계를 건너뜁니다.사용자 이름은 admin이고 암호는 your_jenkins_password 입니다.
    인스턴스 구성을 묻는 다른 화면이 나타납니다.Not now 링크를 클릭하고 계속합니다.
    그런 다음 Jenkins가 선택한 요약 정보를 만들고 Jenkins가 준비되었음을 인쇄합니다!Jenkins 시작 을 클릭하면 Jenkins 홈페이지가 표시됩니다.

    이제 그룹에 Jenkins를 설치하고 설정했습니다. 그 기능을 보여주고 예시 파이프를 실행합니다.

    단계 3 - 샘플 파이프 실행하기


    Jenkins는 파이프라인을 생성하고 CI/CD 워크플로우를 관리하는 데 능숙합니다.이 단계에서 우리는 Jenkins의 예시 파이프라인을 구축할 것이다.
    Jenkins 홈 페이지에서 왼쪽 메뉴에서 New item 링크를 클릭합니다.
    새 페이지가 나타납니다.Pipeline을 선택하고 OK 를 누릅니다.

    Jenkins가 파이프 구성으로 리디렉션합니다.파이프 부분을 찾아서 try sample Pipeline 드롭다운 메뉴에서 Hello World를 선택하십시오.이 메뉴는 오른쪽에 표시됩니다.Hello World를 선택한 후 저장 버튼을 클릭합니다.

    Jenkins가 파이프 홈 페이지로 리디렉션합니다.왼쪽 메뉴에서build now를 누르면 파이프가 작동하는 것을 관찰합니다.#1은 첫 번째 생성임을 나타냅니다.작업이 완료되면 구축에 대한 통계 정보를 볼 수 있습니다.

    또한 콘솔 출력을 확인하여 파이프가 실행될 때 발생하는 상황을 볼 수 있습니다.#1에 마우스를 놓으면 드롭다운 메뉴가 나타납니다.생성된 세부 정보를 보려면 콘솔 출력을 선택합니다.
    Hello World 파이프라인은 복잡하지 않지만 Jenkins가 CI/CD 워크플로우를 만들고 관리하는 능력을 증명합니다.

    결론


    이 강좌에서 Kubernetes 그룹에 Jenkins를 설치하고 설정한 다음 예시 파이프를 실행합니다.Jenkins에는 매우 복잡한 작업을 수행하는 데 도움이 되는 큰 플러그인 라이브러리가 있습니다.GitHub 저장소, 다양한 유형의 작업 인스턴스 등을 추가할 수도 있습니다.Jenkins 사용에 대한 자세한 내용the NodePort Service type.