$ cat jenkins-pvc.yaml kind: PersistentVolumeClaim apiVersion: v1 metadata: name: jenkins-pvc spec: storageClassName: "managed-nfs-storage" accessModes: - ReadWriteMany resources: requests: storage: 1Gi $ cat jenkins-deployment.yaml apiVersion: extensions/v1beta1 kind: Deployment metadata: name: jenkins labels: app-name: jenkins spec: replicas: 1 strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 0 template: metadata: labels: app-name: jenkins spec: containers: - name: jenkins image: docker.io/jenkins:latest imagePullPolicy: IfNotPresent ports: - containerPort: 8080 name: web protocol: TCP - containerPort: 50000 name: agent protocol: TCP volumeMounts: - name: jenkins-home mountPath: /var/jenkins_home env: - name: JAVA_OPTS value: "-Duser.timezone=Asia/Shanghai -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=1 -Dhudson.slaves.NodeProvisioner.MARGIN=50 -Dhudson.slaves.NodeProvisioner.MARGIN0=0.85" volumes: - name: jenkins-home persistentVolumeClaim: claimName: jenkins-pvc $ cat jenkins-service.yaml kind: Service apiVersion: v1 metadata: labels: app-name: jenkins name: jenkins spec: ports: - port: 8080 targetPort: 8080 name: web - port: 50000 targetPort: 50000 name: agent selector: app-name: jenkins $ cat jenkins-ingress.yaml apiVersion: extensions/v1beta1 kind: Ingress metadata: name: jenkins namespace: default spec: rules: - host: k8s-jenkins.maotai.com http: paths: - path: / backend: serviceName: jenkins servicePort: 8080