Do one thing at a time, and do well
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
---apiVersion: v1kind: ServiceAccountmetadata: name: jenkins namespace: devops---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata: annotations: rbac.authorization.kubernetes.io/autoupdate: "true" labels: kubernetes.io/bootstrapping: rbac-defaults name: jenkinsrules:- apiGroups: - '*' resources: - statefulsets - services - replicationcontrollers - replicasets - podtemplates - podsecuritypolicies - pods - pods/log - pods/exec - podpreset - poddisruptionbudget - persistentvolumes - persistentvolumeclaims - jobs - endpoints - deployments - deployments/scale - daemonsets - cronjobs - configmaps - namespaces - events - secrets verbs: - create - get - watch - delete - list - patch - update- apiGroups: - "" resources: - nodes verbs: - get - list - watch - update---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata: annotations: rbac.authorization.kubernetes.io/autoupdate: "true" labels: kubernetes.io/bootstrapping: rbac-defaults name: jenkinsroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: jenkinssubjects:- apiGroup: rbac.authorization.k8s.io kind: Group # 授权给devops命名空间 name: system:serviceaccounts:devops
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
---apiVersion: v1kind: PersistentVolumeClaimmetadata: name: jenkins-home namespace: devopsspec: storageClassName: "longhorn" accessModes: [ReadWriteMany] resources: requests: storage: 200Gi---apiVersion: apps/v1kind: Deploymentmetadata: name: jenkins namespace: devops labels: app: jenkinsspec: replicas: 1 selector: matchLabels: app: jenkins template: metadata: labels: app: jenkins spec: tolerations: - effect: NoSchedule key: no-pod operator: Exists nodeSelector: jenkins: "true" containers: - name: jenkins image: jenkins/jenkins:2.452.3-lts-jdk21 ports: - containerPort: 8080 name: web protocol: TCP - containerPort: 50000 name: agent protocol: TCP env: - name: LIMITS_MEMORY valueFrom: resourceFieldRef: resource: limits.memory divisor: 1Mi - name: JAVA_OPTS value: -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true volumeMounts: - name: jenkins-home mountPath: /var/jenkins_home - mountPath: /etc/localtime name: localtime volumes: - name: jenkins-home persistentVolumeClaim: claimName: jenkins-home - name: localtime hostPath: path: /etc/localtime---apiVersion: v1kind: Servicemetadata: name: jenkins namespace: devops labels: app: jenkinsspec: selector: app: jenkins type: LoadBalancer ports: - name: web nodePort: 30456 port: 8080 targetPort: web - name: agent nodePort: 30789 port: 50000 targetPort: agent
123456789101112131415161718192021222324
apiVersion: networking.k8s.io/v1kind: Ingressmetadata: labels: app: jenkins name: jenkins-ingress namespace: devopsspec: ingressClassName: nginx rules: - host: jenkins.sreok.cn http: paths: - backend: service: name: jenkins port: number: 8080 path: / pathType: Prefix tls: - hosts: - jenkins.sreok.cn secretName: devops-tls