k8s-1.25.0部署最新版 Jenkins 2.346.3
k8s版本:k8s-1.25.0(containerd运行时)
jenkins版本:Jenkins 2.346.3
1、先部署动态存储 local-path-provisioner
2、再部署 jenkins
Jenkins镜像
jenkins/jenkins:lts-jdk11
动态存储:Local Path Provisioner
基于HostPath使用动态PV
1、部署 local-path-provisioner
# 版本:local-path-provisioner-0.0.22wget https://github.com/rancher/local-path-provisioner/archive/refs/tags/v0.0.22.tar.gz# github.com下载加速地址wget https://hub.fastgit.xyz/rancher/local-path-provisioner/archive/refs/tags/v0.0.22.tar.gztar xf v0.0.22.tar.gz && rm -rf v0.0.22.tar.gz# 修改存储地址(/data/local-path-provisioner)sed -i 's/opt/data/g' ~/local-path-provisioner-0.0.22/deploy/local-path-storage.yaml
kubectl apply -f ~/local-path-provisioner-0.0.22/deploy/local-path-storage.yamlkubectl get pod -A -l app=local-path-provisionerkubectl get pod -n local-path-storagekubectl get storageclass
2、部署 Jenkins
cat > ~/jenkins/Jenkins-rbac.yaml << EOFapiVersion: v1kind: Namespacemetadata:name: jenkins---apiVersion: v1kind: ServiceAccountmetadata:name: jenkinsnamespace: jenkins---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata:annotations:rbac.authorization.kubernetes.io/autoupdate: "true"labels:kubernetes.io/bootstrapping: rbac-defaultsname: 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- secretsverbs:- create- get- watch- delete- list- patch- update- apiGroups:- ""resources:- nodesverbs:- get- list- watch- update---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata:annotations:rbac.authorization.kubernetes.io/autoupdate: "true"labels:kubernetes.io/bootstrapping: rbac-defaultsname: jenkinsroleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: jenkinssubjects:- apiGroup: rbac.authorization.k8s.iokind: Groupname: system:serviceaccounts:jenkinsEOF
cat > ~/jenkins/Jenkins-Deployment.yaml << EOFapiVersion: apps/v1kind: Deploymentmetadata:name: jenkinsnamespace: jenkinslabels:app: jenkinsspec:replicas: 1selector:matchLabels:app: jenkinstemplate:metadata:labels:app: jenkinsspec:containers:- name: jenkinsimage: jenkins/jenkins:lts-jdk11ports:- containerPort: 8080name: webprotocol: TCP- containerPort: 50000name: agentprotocol: TCP#resources:#limits:#memory: 4Gi#cpu: "2000m"#requests:#memory: 4Gi#cpu: "2000m"env:- name: LIMITS_MEMORYvalueFrom:resourceFieldRef:resource: limits.memorydivisor: 1Mi- name: JAVA_OPTSvalue: -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=truevolumeMounts:- name: jenkins-homemountPath: /var/jenkins_homevolumes:- name: jenkins-homepersistentVolumeClaim:claimName: jenkins-home---apiVersion: v1kind: PersistentVolumeClaimmetadata:name: jenkins-homenamespace: jenkinsspec:storageClassName: "local-path"accessModes: [ReadWriteOnce]resources:requests:storage: 2TiEOF
cat > ~/jenkins/Jenkins-Service.yaml << EOFapiVersion: v1kind: Servicemetadata:name: jenkinsnamespace: jenkinslabels:app: jenkinsspec:selector:app: jenkinstype: NodePortports:- name: webnodePort: 30080port: 8080targetPort: web- name: agentnodePort: 30081port: 50000targetPort: agentEOF
kubectl apply -f Jenkins-rbac.yaml -f Jenkins-Deployment.yaml -f Jenkins-Service.yaml
登录密码
kubectl get pods -n jenkins -l app=jenkinskubectl logs -f jenkins-746b5b5d65-r9m8q -n jenkins #初始化密钥就在日志里面
访问地址:192.168.1.201:30080
