基于Deployment部署jenkins单体服务
架构逻辑图
一、准备jenkins镜像
docker pull jenkins/jenkins:2.374
docker tag jenkins/jenkins:2.374 harbor.magedu.net/magedu/jenkins:2.374
docker push harbor.magedu.net/magedu/jenkins:2.374
二、在nfs共享存储暴露nfs共享目录
[root@easzlab-k8s-nfs-01 ~]# mkdir -p /data/k8sdata/magedu/jenkins-data [root@easzlab-k8s-nfs-01 ~]# mkdir -p /data/k8sdata/magedu/jenkins-root-data [root@easzlab-k8s-nfs-01 ~]# cat /etc/exports # /etc/exports: the access control list for filesystems which may be exported # to NFS clients. See exports(5). # # Example for NFSv2 and NFSv3: # /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check) # # Example for NFSv4: # /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check) # /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check) # /data 172.16.88.0/24(rw,sync,no_root_squash,no_subtree_check) /data/k8sdata/magedu/jenkins-root-data 172.16.88.0/24(rw,sync,no_root_squash,no_subtree_check) /data/k8sdata/magedu/jenkins-data 172.16.88.0/24(rw,sync,no_root_squash,no_subtree_check) [root@easzlab-k8s-nfs-01 ~]# [root@easzlab-k8s-nfs-01 ~]# exportfs -r root@easzlab-deploy:~# showmount -e 172.16.88.169 Export list for 172.16.88.169: /data/k8sdata/magedu/jenkins-data 172.16.88.0/24 /data/k8sdata/magedu/jenkins-root-data 172.16.88.0/24 /data 172.16.88.0/24 root@easzlab-deploy:~#
三、部署jenkins服务
root@easzlab-deploy:~/jiege-k8s/20220807/k8s-data-n70-20220807/yaml/magedu/jenkins/pv# cat jenkins-persistentvolumeclaim.yaml --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: jenkins-datadir-pvc namespace: magedu spec: volumeName: jenkins-datadir-pv accessModes: - ReadWriteOnce resources: requests: storage: 80Gi --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: namespace: magedu spec: volumeName: jenkins-root-datadir-pv accessModes: - ReadWriteOnce resources: requests: storage: 80Gi root@easzlab-deploy:~/jiege-k8s/20220807/k8s-data-n70-20220807/yaml/magedu/jenkins/pv# cat jenkins-persistentvolume.yaml --- apiVersion: v1 kind: PersistentVolume metadata: name: jenkins-datadir-pv namespace: magedu spec: capacity: storage: 100Gi accessModes: - ReadWriteOnce nfs: server: 172.16.88.169 path: /data/k8sdata/magedu/jenkins-data --- apiVersion: v1 kind: PersistentVolume metadata: name: jenkins-root-datadir-pv namespace: magedu spec: capacity: storage: 100Gi accessModes: - ReadWriteOnce nfs: server: 172.16.88.169 path: /data/k8sdata/magedu/jenkins-root-data root@easzlab-deploy:~/jiege-k8s/20220807/k8s-data-n70-20220807/yaml/magedu/jenkins/pv# root@easzlab-deploy:~/jiege-k8s/20220807/k8s-data-n70-20220807/yaml/magedu/jenkins/pv# cd ../ root@easzlab-deploy:~/jiege-k8s/20220807/k8s-data-n70-20220807/yaml/magedu/jenkins# cat jenkins.yaml kind: Deployment #apiVersion: extensions/v1beta1 apiVersion: apps/v1 metadata: labels: app: magedu-jenkins name: magedu-jenkins-deployment namespace: magedu spec: replicas: 1 selector: matchLabels: app: magedu-jenkins template: metadata: labels: app: magedu-jenkins spec: containers: - name: magedu-jenkins-container image: harbor.magedu.net/magedu/jenkins:2.374 #imagePullPolicy: IfNotPresent imagePullPolicy: Always ports: - containerPort: 8080 protocol: TCP name: http volumeMounts: - mountPath: "/apps/jenkins/jenkins-data/" name: jenkins-datadir-magedu - mountPath: "/root/.jenkins" name: jenkins-root-datadir volumes: - name: jenkins-datadir-magedu persistentVolumeClaim: claimName: jenkins-datadir-pvc - name: jenkins-root-datadir persistentVolumeClaim: claimName: jenkins-root-data-pvc --- kind: Service apiVersion: v1 metadata: labels: app: magedu-jenkins name: magedu-jenkins-service namespace: magedu spec: type: NodePort ports: - name: http port: 80 protocol: TCP targetPort: 8080 nodePort: 38080 selector: app: magedu-jenkins root@easzlab-deploy:~/jiege-k8s/20220807/k8s-data-n70-20220807/yaml/magedu/jenkins#
root@easzlab-deploy:~/jiege-k8s/20220807/k8s-data-n70-20220807/yaml/magedu/jenkins# kubectl create ns magedu #创建所需命名空间 namespace/magedu created root@easzlab-deploy:~/jiege-k8s/20220807/k8s-data-n70-20220807/yaml/magedu/jenkins#
root@easzlab-deploy:~/jiege-k8s/20220807/k8s-data-n70-20220807/yaml/magedu/jenkins# kubectl apply -f jenkins.yaml -f pv/ #安装部署jenkins服务
deployment.apps/magedu-jenkins-deployment created
service/magedu-jenkins-service created
persistentvolume/jenkins-datadir-pv created
persistentvolume/jenkins-root-datadir-pv created
persistentvolumeclaim/jenkins-datadir-pvc created
persistentvolumeclaim/jenkins-root-data-pvc created
root@easzlab-deploy:~/jiege-k8s/20220807/k8s-data-n70-20220807/yaml/magedu/jenkins#
四、验证jenkins服务
初始密码查看
root@easzlab-deploy:~/jiege-k8s/20220807/k8s-data-n70-20220807/yaml/magedu/jenkins# kubectl logs -n magedu magedu-jenkins-deployment-79bbd88cb7-84999 Running from: /usr/share/jenkins/jenkins.war webroot: EnvVars.masterEnvVars.get("JENKINS_HOME") 2022-10-23 06:38:41.696+0000 [id=1] INFO winstone.Logger#logInternal: Beginning extraction from war file 2022-10-23 06:38:43.667+0000 [id=1] WARNING o.e.j.s.handler.ContextHandler#setContextPath: Empty contextPath 2022-10-23 06:38:43.753+0000 [id=1] INFO org.eclipse.jetty.server.Server#doStart: jetty-10.0.12; built: 2022-09-14T01:54:40.076Z; git: 408d0139887e27a57b54ed52e2d92a36731a7e88; jvm 11.0.16.1+1 2022-10-23 06:38:44.277+0000 [id=1] INFO o.e.j.w.StandardDescriptorProcessor#visitServlet: NO JSP Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet 2022-10-23 06:38:44.395+0000 [id=1] INFO o.e.j.s.s.DefaultSessionIdManager#doStart: Session workerName=node0 2022-10-23 06:38:45.019+0000 [id=1] INFO hudson.WebAppMain#contextInitialized: Jenkins home directory: /var/jenkins_home found at: EnvVars.masterEnvVars.get("JENKINS_HOME") 2022-10-23 06:38:45.226+0000 [id=1] INFO o.e.j.s.handler.ContextHandler#doStart: Started w.@481e91b6{Jenkins v2.374,/,file:///var/jenkins_home/war/,AVAILABLE}{/var/jenkins_home/war} 2022-10-23 06:38:45.248+0000 [id=1] INFO o.e.j.server.AbstractConnector#doStart: Started ServerConnector@5e8ac0e1{HTTP/1.1, (http/1.1)}{0.0.0.0:8080} 2022-10-23 06:38:45.264+0000 [id=1] INFO org.eclipse.jetty.server.Server#doStart: Started Server@765f05af{STARTING}[10.0.12,sto=0] @5602ms 2022-10-23 06:38:45.272+0000 [id=23] INFO winstone.Logger#logInternal: Winstone Servlet Engine running: controlPort=disabled 2022-10-23 06:38:45.618+0000 [id=28] INFO jenkins.InitReactorRunner$1#onAttained: Started initialization 2022-10-23 06:38:45.644+0000 [id=28] INFO jenkins.InitReactorRunner$1#onAttained: Listed all plugins 2022-10-23 06:38:46.889+0000 [id=28] INFO jenkins.InitReactorRunner$1#onAttained: Prepared all plugins 2022-10-23 06:38:46.895+0000 [id=28] INFO jenkins.InitReactorRunner$1#onAttained: Started all plugins 2022-10-23 06:38:46.929+0000 [id=29] INFO jenkins.InitReactorRunner$1#onAttained: Augmented all extensions 2022-10-23 06:38:47.251+0000 [id=28] INFO jenkins.InitReactorRunner$1#onAttained: System config loaded 2022-10-23 06:38:47.256+0000 [id=28] INFO jenkins.InitReactorRunner$1#onAttained: System config adapted 2022-10-23 06:38:47.257+0000 [id=28] INFO jenkins.InitReactorRunner$1#onAttained: Loaded all jobs 2022-10-23 06:38:47.260+0000 [id=28] INFO jenkins.InitReactorRunner$1#onAttained: Configuration for all jobs updated 2022-10-23 06:38:47.317+0000 [id=42] INFO hudson.model.AsyncPeriodicWork#lambda$doRun$0: Started Download metadata 2022-10-23 06:38:47.359+0000 [id=42] INFO hudson.util.Retrier#start: Attempt #1 to do the action check updates server WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.codehaus.groovy.vmplugin.v7.Java7$1 (file:/var/jenkins_home/war/WEB-INF/lib/groovy-all-2.4.21.jar) to constructor java.lang.invoke.MethodHandles$Lookup(java.lang.Class,int) WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.vmplugin.v7.Java7$1 WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release 2022-10-23 06:38:48.708+0000 [id=28] INFO jenkins.install.SetupWizard#init: ************************************************************* ************************************************************* ************************************************************* Jenkins initial setup is required. An admin user has been created and a password generated. Please use the following password to proceed to installation: 58379546795f405eb891ea87a42b0421 This may also be found at: /var/jenkins_home/secrets/initialAdminPassword ************************************************************* ************************************************************* ************************************************************* 2022-10-23 06:39:40.483+0000 [id=29] INFO jenkins.InitReactorRunner$1#onAttained: Completed initialization 2022-10-23 06:39:40.516+0000 [id=22] INFO hudson.lifecycle.Lifecycle#onReady: Jenkins is fully up and running 2022-10-23 06:39:41.743+0000 [id=42] INFO h.m.DownloadService$Downloadable#load: Obtained the updated data file for hudson.tasks.Maven.MavenInstaller 2022-10-23 06:39:41.744+0000 [id=42] INFO hudson.util.Retrier#start: Performed the action check updates server successfully at the attempt #1 2022-10-23 06:39:41.753+0000 [id=42] INFO hudson.model.AsyncPeriodicWork#lambda$doRun$0: Finished Download metadata. 54,426 ms 2022-10-23 06:45:55.611+0000 [id=63] INFO hudson.model.AsyncPeriodicWork#lambda$doRun$0: Started Periodic background build discarder 2022-10-23 06:45:55.617+0000 [id=63] INFO hudson.model.AsyncPeriodicWork#lambda$doRun$0: Finished Periodic background build discarder. 2 ms root@easzlab-deploy:~/jiege-k8s/20220807/k8s-data-n70-20220807/yaml/magedu/jenkins#
admin admin