前言:
而今小伙伴们对“请先由cd安装游戏”大概比较看重,兄弟们都想要分析一些“请先由cd安装游戏”的相关知识。那么小编在网上汇集了一些有关“请先由cd安装游戏””的相关内容,希望咱们能喜欢,各位老铁们一起来学习一下吧!Jenkins是在CI/CD持续集成发布的市场上占有绝对的主导地位,是我们工作中最常用的持续集成发布的工具之一。Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。
Jenkins从根本上被设计成一个分布式系统,它包含一个负责协调分配构建任务的master和多个实际执行工作的agent构成。
在云原生的场景下,我们也可以通过Jenkins的“Kubernetes插件”支持将分布式的Jenkins系统部署到k8s集群。
本文将使用Jenkins Operator来简单快速在k8s集群上安装Jenkins。这个Operator是k8s的原生operator,用来管理k8s上的jenkins的操作。
Jenkins Operator支持Jenkins的全生命周期管理(扩展、升级、备份等),并集成了Kubernetes插件。支持使用Jenkinsfile来构建流水线。
准备k8s实验集群如果你在本机测试,可以使用MiniKube、Docker Desktop、Rancher Desktop、k3d等工具进行。如果你有专用的home lab主机,可使用microk8s、k3s等安装单节点k8s。当然你有可用的k8s集群都可以使用k8s强大UI客户端-Lens
Lens()是功能强大的k8s图形客户端,建议可以试用一下。
安装1、安装Jenkins Operator安装Jenkins CRD(Custom Resource Definition,自定义资源定义),这时k8s集群里就有了资源类型为Jenkins的资源(kind: Jenkins)
kubectl apply -f
安装Jenkins Operator和其他需要的资源
kubectl apply -f
查看Jenkins Operator安装情况
kubectl get pods -w
Jenkins Operator将会被安装在default 命名空,也可以用Lens查看:
安装Jenkins
因为我们安装了Jenkins的CRD,k8s集群里已经有类型为Jenkins的自定义资源。这意味着我们可以像使用k8s内置资源(Deployment,Pod)一样定义yaml文件来部署Jenkins。
编写jenkins_instance.yaml
apiVersion: jenkins.io/v1alpha2kind: Jenkinsmetadata: name: example namespace: defaultspec: configurationAsCode: configurations: [] secret: name: "" groovyScripts: configurations: [] secret: name: "" jenkinsAPISettings: authorizationStrategy: createUser master: disableCSRFProtection: false containers: - name: jenkins-master image: jenkins/jenkins:2.319.1-lts-alpine imagePullPolicy: Always livenessProbe: failureThreshold: 12 httpGet: path: /login port: http scheme: HTTP initialDelaySeconds: 100 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 5 readinessProbe: failureThreshold: 10 httpGet: path: /login port: http scheme: HTTP initialDelaySeconds: 80 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: limits: cpu: 1500m memory: 3Gi requests: cpu: "1" memory: 500Mi seedJobs: - id: jenkins-operator targets: "cicd/jobs/*.jenkins" description: "Jenkins Operator repository" repositoryBranch: master repositoryUrl:
安装Jenkins到k8s
kubectl create -f jenkins_instance.yaml
观察jenkins实例是否部署成功:
获取jenkins的账号密码
kubectl get secret jenkins-operator-credentials-example -o 'jsonpath={.data.user}' | base64 -dkubectl get secret jenkins-operator-credentials-example -o 'jsonpath={.data.password}' | base64 -d
或者在Lens上查看:
代理Jenkins端口到本地访问:
kubectl port-forward jenkins-example 8080:8080
或者在Lens上直接操作:
访问Jenkins地址:,输入账号密码。
Jenkins的k8s配置
因为我们使用Jenkins Operator安装Jenkins,所以Jenkins Kubernetes插件无需我们手动配置连接到k8s集群,我们的Jenkins实例已经配置好了连接。
首页点击“Manage Jenkins -> Manage Node and Clouds -> Configure Clouds”,或者访问:,我们可以看到已经为我们直接配置好了连接Kubernetes:
我们可以通过“Add a new cloud”自己配置连接新的k8s集群,或者通过“Delete cloud”删除当前的k8s集群连接。
我们可以点击“Kubernetes Cloud details...”和“Pod Templates...”查看当前的连接配置。
定义一个流水线任务在首页点击“New Item”,任务名“first_test”,构建类型为“Pipeline”(流水线),点击“OK”后进入下一页。
在“Build Trigger”页签下,“Pipeline”部分填入“Pipeline script”:
#!/usr/bin/env groovydef label = "k8s-${UUID.randomUUID().toString()}"def home = "/home/jenkins"def workspace = "${home}/workspace/build-jenkins-operator"def workdir = "${workspace}/src/github.com/jenkinsci/kubernetes-operator/"podTemplate(label: label, containers: [ containerTemplate(name: 'alpine', image: 'alpine:3.11', ttyEnabled: true, command: 'cat'), ], ) { node(label) { stage('Run shell') { container('alpine') { sh 'echo "hello world"' } } }}
在代码中我们可以看出,流水线中定义了podTemplate ,而podTemplate 在里面定义了Jenkins流水线所需要的所有容器containerTemplate。如果我们想要使用流水线完成Spring Boot程序自动化集成和发布的话,那我们就需要定义容器:
a)、git容器:拉取代码;
b)、gradle/maven容器:编译程序;
c)、docker容器:编译Docker镜像并推送到镜像中心(若k8s的容器方案不是docker的话,此方案不通,在后续文章会讲解解决方案);
d)、helm/kubectl容器:部署或更新程序。
开始编译,点击“test_first”进入详情页,点击“Build now”,我们可以“Console Output”中查看编译过程。
通过编译过程和观察k8s集群变化,可发现我们的Jenkins master(jenkins-example)实例,在k8s集群中新建了一个agent实例:k8s-dc0d4e7a-8d88-4932-8467-6cd58918c4f1-380bq-0r80k,这个名称是在上面脚本中的label中定义的。
结语
本文主要目的是演示最佳安装Jenkins的方式,使用Jenkins Operator安装。在安装好了Jenkins之后,我们使用定义流水线脚本来显示一个简单的流水线任务。
在下一篇文章中,我将演示生产级别的Jenkins的使用方式,使用Jenkinsfile来定义流水线脚本,使一个Spring Boot程序完成自动化的集成和发布的过程,敬请期待。
参考资料:
标签: #请先由cd安装游戏