brew install 한 Jenkins에서 docker-desktop의 Kubernetes에 액세스

8592 단어 JenkinsMackubernetes

동기



Kubernetes는 편리하지만 상당히 재작성하거나 멀티 클러스터 관리하고 있기 때문에 Jenkins는 클러스터 밖에 서 있다. 로컬의 개발 환경을 만들어 두면, 추구한다.

준비



Install Docker-Desktop



공식에서 설치 프로그램에 따라 설치합니다.
htps //w w. 도 c r. 코 m / p 로즈 cts / 도 c 케 r에서 sk와 p

설치가 끝나면 설정 → Kubernetes에서 Kubernetes를 활성화하십시오.


Install Java



Java가 들어 있지 않은 사람은, Java로부터 넣는다.
덧붙여서, 갑자기 Jenkins에서 넣으려고 하면, 우선은 Java를 인스톨하지 말고 인스톨 커멘드 가르쳐 주었다. 친절.
$ brew cask install homebrew/cask-versions/adoptopenjdk8

Install Jenkins


$ brew install jenkins

Change listening port



기본값은 localhost에서만 액세스 할 수 있으므로 Kubernetes의 Pod에서 액세스 할 수있게합니다. 청취하는 주소를 0.0.0.0으로 변경하면됩니다.
이 변경을 수행하면 동일한 네트워크의 모든 컴퓨터에서 액세스할 수 있으므로 Jenkins admin의 암호 ​​관리를 확실히 합시다.
$ sudo vi /usr/local/opt/jenkins/homebrew.mxcl.jenkins.plist
17c17
<       <string>--httpListenAddress=127.0.0.1</string>
---
>       <string>--httpListenAddress=0.0.0.0</string>

Initialize Jenkins


$ brew services start jenkins

Jenkins가 시작되면 http://localhost:8080을 브라우저에서 열고 초기화 암호를 입력하여 권장되는 플러그인을 설치합니다.

5분 정도 걸리므로, 소휴지한다.

여담



앞으로 문제가 발생하면 일단 재부팅 http://localhost:8080/safeRestart

Jenkins가 멈추더라도 조용하고 서비스를 다시 시작합니다.
$ brew services restart jenkins

Integrate with a Kubernetes



Permit Agent → Jenkins Master



특별한 이유가 없으면 랜덤으로 괜찮습니다.
http://localhost:8080/configureSecurity/


Install Kubernetes plugin



kubernetes 아무쪼록 등등 히트 한다고 생각합니다만, 그 자체 즈바리kubernetes라는 것을 인스톨 해 주세요.
http://localhost:8080/pluginManager/available

Configure Kubernetes info



하단에 클라우드 추가라는 버튼이 늘어나고 있다고 생각하기 때문에 거기에서 Kubernetes를 선택한다.
http://localhost:8080/configure

일단, 다음의 3개를 메워 두면 됩니다.

Kubernetes URL
$ kubectl config view --flatten -o jsonpath='{.clusters[?(@.name=="docker-desktop")].cluster.server}'
https://127.0.0.1:6443

또는
$ kubectl config view --flatten -o jsonpath='{.clusters[?(@.name=="docker-for-desktop-cluster")].cluster.server}'
https://127.0.0.1:6443

Kubernetes server certificate key
$ kubectl config view --flatten -o jsonpath='{.users[?(@.name=="docker-desktop")].user.client-certificate-data}' | base64 --decode
-----BEGIN CERTIFICATE-----
xxx
xxx
xxx
-----END CERTIFICATE-----

또는
$ kubectl exec -it kube-apiserver-docker-for-desktop -n kube-system -- cat /run/config/pki/ca.crt
-----BEGIN CERTIFICATE-----
xxx
xxx
xxx
-----END CERTIFICATE-----

Jenkins URL

127.0.0.1이라면 Kubernetes의 Pod에서 Jenkins Master에 연결할 수 없게 되므로 주의.
$ ip addr show en0

수고하셨습니다, 준비 완료입니다.
작은 휴식.

테스트



Kubernetes plugin github에는, 다수 견본이 있기 때문에, 적용 가능하게 선택하고 실행한다.
htps : // 기주 b. 코 m / 지 킨 킨 s 시 / 쿠베 r 네 슈 ぅ 긴 / t 네 / 뭐 r / 에 mp ぇ s

새 작업을 파이프 라인으로 만듭니다.
http://localhost:8080/view/all/newJob

스크립트에 다음 코드를 복사합니다.
pipeline {
  agent {
    kubernetes {
      //cloud 'kubernetes'
      label 'mypod'
      yaml """
apiVersion: v1
kind: Pod
spec:
  containers:
  - name: maven
    image: maven:3.3.9-jdk-8-alpine
    command: ['cat']
    tty: true
"""
    }
  }
  stages {
    stage('Run maven') {
      steps {
        container('maven') {
          sh 'mvn -version'
        }
      }
    }
  }
}

첫회 실행시는, maven image의 다운로드등으로 다소 시간이 걸립니다만, 2회째 이후는 곧 끝나기 때문에 안심을.

성공하면 이런 출력이 되어야 합니다.
Started by user [email protected]
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] podTemplate
[Pipeline] {
[Pipeline] node
Still waiting to schedule task
‘mypod-br97w-6pr07’ is offline
Agent mypod-br97w-6pr07 is provisioned from template Kubernetes Pod Template
Agent specification [Kubernetes Pod Template] (mypod): 
yaml:

apiVersion: v1
kind: Pod
spec:
  containers:
  - name: maven
    image: maven:3.3.9-jdk-8-alpine
    command: ['cat']
    tty: true


Running on mypod-br97w-6pr07 in /home/jenkins/workspace/maven
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Run maven)
[Pipeline] container
[Pipeline] {
[Pipeline] sh
+ mvn -version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T16:41:47+00:00)
Maven home: /usr/share/maven
Java version: 1.8.0_121, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.8-openjdk/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.9.125-linuxkit", arch: "amd64", family: "unix"
[Pipeline] }
[Pipeline] // container
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] }
[Pipeline] // podTemplate
[Pipeline] End of Pipeline
Finished: SUCCESS

실패하면 로그를 살펴 보겠습니다.
오류 메시지로 구그하면 대개 해결 방법을 찾을 수 있습니다.
http://localhost:8080/log/all

끝에



Kubernetes 클러스터를 다시 만들거나 PC를 재부팅하면 Kubernetes와 Jenkins의 IP가 변경 될 수 있으므로 매번 업데이트해야하는 것이 옥에 있지만 역시 로컬에서 시도하면 피드백주기 압도적으로 빠르기 때문에 시도하십시오.

좋은 웹페이지 즐겨찾기