# jenkins使用官方yaml部署,記錄在jenkins 容器中調用主機Docker 進行build
# 由於maven編譯需要jdk,在jenkins中可以配置oracle賬號選擇jdk版本自動下載,但oracle網站有時不穩定造成jdk無法下載,所以以下為離線jdk部署方式 # 離線配置jdk方式:下載jdk包並解壓到/mnt/data/jenkins_home/tools/hudson.model.JDK/jdk8/目錄下,在jenkins中配置jdk相對路徑/var/jenkins_home/tools/hudson.model.JDK/jdk8/jdk1.8.0_221(jdk8后面路徑要和解壓后的jdk路徑一致) # jenkins使用主機vm docker時需要掛載宿主機docker的幾個路徑並設置宿主機docker.sock權限:chmod 777 /var/run/docker.sock
--- apiVersion: apps/v1 kind: StatefulSet metadata: namespace: monitor-app name: jenkins labels: name: jenkins spec: selector: matchLabels: name: jenkins serviceName: jenkins replicas: 1 updateStrategy: type: RollingUpdate template: metadata: name: jenkins labels: name: jenkins spec: terminationGracePeriodSeconds: 10 serviceAccountName: jenkins nodeSelector: jtype: jenkins containers: - name: jenkins command: - /sbin/tini - /usr/local/bin/jenkins.sh - --prefix=/jenkins image: jenkins/jenkins:lts-alpine imagePullPolicy: IfNotPresent ports: - containerPort: 8080 - containerPort: 50000 resources: limits: cpu: 1 memory: 2Gi requests: cpu: 0.5 memory: 500Mi env: - name: LIMITS_MEMORY valueFrom: resourceFieldRef: resource: limits.memory divisor: 1Mi - name: JAVA_OPTS # value: -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=1 -XshowSettings:vm -Dhudson.slaves.NodeProvisioner.initialDelay=0 -Dhudson.slaves.NodeProvisioner.MARGIN=50 -Dhudson.slaves.NodeProvisioner.MARGIN0=0.85 value: -Xmx$(LIMITS_MEMORY)m -XshowSettings:vm -Dhudson.slaves.NodeProvisioner.initialDelay=0 -Dhudson.slaves.NodeProvisioner.MARGIN=50 -Dhudson.slaves.NodeProvisioner.MARGIN0=0.85 -D--prefix=/jenkins volumeMounts: - name: jenkins-home mountPath: /var/jenkins_home # - name: docker # mountPath: /usr/bin/docker # - name: docker-sock # mountPath: /var/run/docker.sock # - name: docker-login # mountPath: /root/.docker/config.json #將docker登錄信息掛載到容器中 livenessProbe: httpGet: path: /jenkins/login port: 8080 initialDelaySeconds: 60 timeoutSeconds: 5 failureThreshold: 12 # ~2 minutes readinessProbe: httpGet: path: /jenkins/login port: 8080 initialDelaySeconds: 60 timeoutSeconds: 5 failureThreshold: 12 securityContext: fsGroup: 1000 volumes: - name: jenkins-home hostPath: path: /mnt/data/jenkins # - name: docker # hostPath: # path: /usr/bin/docker # - name: docker-sock # hostPath: # path: /var/run/docker.sock # - hostPath: # path: /root/.docker/config.json # name: docker-login
# - hostPath: # path: /usr/bin/kubectl # name: kubectl
--- apiVersion: v1 kind: Service metadata: name: jenkins namespace: monitor-app spec: selector: name: jenkins ports: - name: http port: 8066 targetPort: 8080 protocol: TCP - name: agent port: 50000 protocol: TCP