k8s部署Jenkins
vim jenkins.yaml
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: jenkinspvc namespace: nfs spec: accessModes: - ReadWriteOnce resources: requests: storage: 5Gi storageClassName: managed-nfs-storage --- apiVersion: v1 kind: ServiceAccount metadata: labels: app: jenkins name: jenkins namespace: nfs --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: jenkins namespace: nfs rules: - apiGroups: [""] resources: ["pods","configmaps","namespaces"] verbs: ["create","delete","get","list","patch","update","watch"] - apiGroups: [""] resources: ["pods/exec"] verbs: ["create","delete","get","list","patch","update","watch"] - apiGroups: [""] resources: ["pods/log"] verbs: ["get","list","watch"] - apiGroups: [""] resources: ["secrets"] verbs: ["get"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: jenkins namespace: nfs roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: jenkins subjects: - kind: ServiceAccount name: jenkins namespace: nfs --- apiVersion: apps/v1 kind: Deployment metadata: name: jenkins namespace: nfs spec: replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: jenkins template: metadata: labels: app: jenkins spec: terminationGracePeriodSeconds: 10 serviceAccountName: jenkins containers: - name: jenkins image: jenkins/jenkins:lts imagePullPolicy: IfNotPresent ports: - name: http containerPort: 8080 protocol: TCP - name: agent containerPort: 50000 protocol: TCP resources: limits: cpu: 1000m memory: 1Gi requests: cpu: 500m memory: 512Mi livenessProbe: httpGet: path: /login port: http initialDelaySeconds: 360 periodSeconds: 60 timeoutSeconds: 60 successThreshold: 1 failureThreshold: 5 readinessProbe: httpGet: path: /login port: http initialDelaySeconds: 360 periodSeconds: 60 timeoutSeconds: 60 successThreshold: 1 failureThreshold: 5 volumeMounts: - name: jenkins-home mountPath: /var/jenkins_home env: - name: JAVA_OPTS value: -XshowSettings:vm -Dhudson.slaves.NodeProvisioner.initialDelay=0 -Dhudson.slaves.NodeProvisioner.MARGIN=50 -Dhudson.slaves.NodeProvisioner.MARGIN0=0.85 -Duser.timezone=Asia/Shanghai securityContext: fsGroup: 1000 volumes: - name: jenkins-home persistentVolumeClaim: claimName: jenkinspvc --- apiVersion: v1 kind: Service metadata: name: jenkins namespace: nfs labels: app: jenkins spec: selector: app: jenkins type: NodePort ports: - name: http port: 8080 targetPort: http nodePort: 30080 - name: agent port: 50000
由于Jenkins默认插件源在国外服务器,大多数网络无法顺利下载,需修改国内插件源地址:
cd jenkins_home/updates
sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && \
sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
浙公网安备 33010602011771号