- 01-namespace.yaml
apiVersion: v1kind: Namespacemetadata: name: jenkins
- 02-jenkins-rbac.yaml
apiVersion: v1kind: ServiceAccountmetadata: name: jenkins-admin namespace: jenkins---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata: name: jenkins-adminrules: - apiGroups: ["extensions", "apps"] resources: ["deployments"] verbs: ["create", "delete", "get", "list", "watch", "patch", "update"] - apiGroups: [""] resources: ["services"] verbs: ["create", "delete", "get", "list", "watch", "patch", "update"] - apiGroups: [""] resources: ["pods"] 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/v1kind: ClusterRoleBindingmetadata: name: jenkins-adminroleRef: kind: ClusterRole name: jenkins-admin apiGroup: rbac.authorization.k8s.iosubjects:- kind: ServiceAccount name: jenkins-admin namespace: jenkins
- 03-jenkins-service.yaml
---apiVersion: v1kind: Servicemetadata: name: jenkins namespace: jenkins labels: app: jenkinsspec: selector: app: jenkins ports: - name: http port: 8080 targetPort: 8080---apiVersion: v1kind: Servicemetadata: name: jenkins-jnlp namespace: jenkins labels: app: jenkinsspec: selector: app: jenkins ports: - name: agent port: 50000 targetPort: 50000
- 04-pvc.yaml
---## PVCapiVersion: v1kind: PersistentVolumeClaimmetadata: name: jenkins namespace: jenkins annotations: volume.beta.kubernetes.io/storage-class: "gitops-data"spec: accessModes: - ReadWriteMany resources: requests: storage: 20Gi
- 05-jenkins.yaml
---apiVersion: apps/v1kind: Deploymentmetadata: name: jenkins namespace: jenkinsspec: replicas: 1 selector: matchLabels: app: jenkins template: metadata: labels: app: jenkins spec: terminationGracePeriodSeconds: 10 serviceAccount: jenkins-admin containers: - name: jenkins #image: jenkins/jenkins:alpine image: jenkins/jenkins:2.287-jdk11 imagePullPolicy: IfNotPresent 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 ports: - containerPort: 8080 name: web protocol: TCP - containerPort: 50000 name: agent protocol: TCP resources: limits: cpu: 2 memory: 4Gi requests: cpu: 500m memory: 512Mi livenessProbe: httpGet: path: /login port: 8080 initialDelaySeconds: 60 timeoutSeconds: 5 failureThreshold: 12 readinessProbe: httpGet: path: /login port: 8080 initialDelaySeconds: 60 timeoutSeconds: 5 failureThreshold: 12 volumeMounts: - name: jenkinshome mountPath: /var/jenkins_home securityContext: fsGroup: 1000 volumes: - name: jenkinshome persistentVolumeClaim: claimName: jenkins
- 06-ingress.yaml
apiVersion: extensions/v1beta1kind: Ingressmetadata: name: jenkins namespace: jenkins annotations: kubernetes.io/ingress.class: "nginx"spec: rules: - host: jenkins-test.test.com http: paths: - backend: serviceName: jenkins servicePort: 8080