k8s 中部署 jenkins
2024-11-21
k8s 中部署 jenkins
Install Jenkins Server on Kubernetes
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: jenkins-sa-role
namespace: public
rules:
- apiGroups: [""]
resources: ["pods","pods/log","pods/exec"]
verbs: ["get", "watch", "list", "create", "update", "delete"]
- apiGroups: ["apps"]
resources: ["deployments"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: jenkins-sa-rolebinding
namespace: public
subjects:
- kind: ServiceAccount
name: jenkins-sa
namespace: public
roleRef:
kind: Role
name: jenkins-sa-role
apiGroup: rbac.authorization.k8s.io
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: jenkins-sa
namespace: public
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jenkins-pvc
namespace: public
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
storageClassName: cfs-storageclass
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: jenkins
namespace: public
spec:
selector:
matchLabels:
app: jenkins-server
template:
metadata:
labels:
app: jenkins-server
spec:
containers:
- name: jenkins
image: jenkins/jenkins:lts
resources:
limits:
memory: "2Gi"
cpu: "1000m"
requests:
memory: "500Mi"
cpu: "500m"
volumeMounts:
- name: jenkins-data
mountPath: /var/jenkins_home
volumes:
- name: jenkins-data
persistentVolumeClaim:
claimName: jenkins-pvc
---
apiVersion: v1
kind: Service
metadata:
name: jenkins-service
namespace: public
spec:
selector:
app: jenkins-server
type: NodePort
ports:
- port: 8080
targetPort: 8080