微服务如何自动化部署CI/CD


这篇文章将为大家详细讲解有关微服务如何自动化部署CI/CD,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
apiVersion: v1kind: Servicemetadata: name: jenkins-service namespace: default labels: app: jenkinsspec: type: NodePort ports: – port: 8080 targetPort: 8080 protocol: TCP nodePort: 30600 name: jenkins – port: 30000 targetPort: 30000 nodePort: 30000 protocol: TCP name: agent selector: app: jenkins tier: jenkins—
apiVersion: apps/v1kind: Deploymentmetadata: name: jenkins-deployment labels: app: jenkinsspec: replicas: 1 strategy: type: Recreate template: metadata: labels: app: jenkins tier: jenkins spec: containers: – name: jenkins image: jenkinsci/blueocean:latest imagePullPolicy: Always ports: – containerPort: 8080 name: jenkins – containerPort: 30000 name: agent volumeMounts: – mountPath: /var/jenkins_home name: jenkins-data – mountPath: /data/jenkins name: jenkins-log-path volumes: – name: jenkins-data hostPath: path: /home/demo/jenkins – name: jenkins-log-path hostPath: path: /data/jenkins接下来通过页面访问该服务,首次打开后,会让输入一个admin的密钥,这一串字符可以在日志中找到,执行kubectl logs -f test-jenkins-c6bd58bf9-tgmsa即可,输入一串字符后,进入下一步,需要安装一些插件,在安装插件的时候,需要注意的是,选择jenkins的image不同,其所需安装的插件也是不一样的,有的可能image已经存在了。具体请看:https://jenkins.io/zh/doc/book/installing/安装完插件后,进入下一步,创建第一个账户,管理员账户,一般建议创建,方便后面使用,注:邮箱也需要填写。
完成以上后,我们进入正式界面:
第一步:点击系统管理—>插件管理,添加一些插件,这里有用到kubernetes的插件,故安装了kubernetes plugins,其他的可根据自行项目确定下载、安装。
第二步:点击系统管理—>系统设置添加jenkins的地址以及邮件地址第三步:拉动滚动框到最下面,新增一个云
这里我加了kubernetes的配置,为什么后面会讲。第四步:新建任务在触发器中新增规则,最下面要生成token。第五步:接下来就是选择与gitlab互动,gitlab的地址以及凭据,凭据可通过首页加上可访问gitlab的用户信息,脚本路径需要根据自身的Jenkinsfile路径情况填写。第六步:
如果启用全 香港云主机局安全,这个端口本身是50000,但由于k8s的默认nodePort范围是30000-32767,故可以修改在这区间内,比如:30000,这也是为什么上面创建时service的nodePort是30000了。至此,jenkins环境配置完成
第七步:配置gitlab
这里的url就是在新建任务时生成的Gitlab webhook,token就是上面截图生成的token,最后add webhook。第八步:
关于Harbor,自己可以简单搭建一个harbor服务,找度娘问一下很多,此处略。
第九步:
新建Jenkinsfile文件,如果刚才的路径是在项目根目录,则直接在项目根目录下创建Jenkinsfile文件def label = “mypod-${UUID.randomUUID().toString()}”def k8sPodYaml = “”” apiVersion: “v1” kind: “Pod” metadata: labels: jenkins: “slave” name: “${label}” spec: containers: – env: – name: “CI_ENV” value: “YES” – name: “JENKINS_AGENT_WORKDIR” value: “/home/jenkins/agent” image: “jenkins/jnlp-slave” imagePullPolicy: “Always” name: “jnlp” resources: limits: {} requests: {} securityContext: privileged: false tty: false volumeMounts: – mountPath: “/home/jenkins/.kube” name: “volume-2” readOnly: false – mountPath: “/var/run/docker.sock” name: “volume-0” readOnly: false – mountPath: “/var/inference/config” name: “volume-1” readOnly: false – mountPath: “/usr/local/bin/kubectl” name: “volume-3” readOnly: false – mountPath: “/home/jenkins/agent” name: “workspace-volume” readOnly: false workingDir: “/home/jenkins/agent” nodeSelector: {} restartPolicy: “Never” volumes: – hostPath: path: “/var/run/docker.sock” name: “volume-0” – hostPath: path: “/home/leinao/.kube” name: “volume-2” – hostPath: path: “/home/leinao/inference-deploy/output_config” name: “volume-1” – emptyDir: {} name: “workspace-volume” – hostPath: path: “/usr/local/bin/kubectl” name: “volume-3″”””****************下面是自己的任务构建项目时的逻辑,由于我们这块用了自己的框架写的编译逻辑,故比较简单的,这里不合适公开,但是逻辑都差不多,大家可自行编写。
这块解释上面的k8s的yaml,这个就是为了在k8s中启动一个pod,通过该pod来执行构建逻辑的过程。
到此,关于Jenkins结合harbor、gitlab、k8s来实现CI/CD结束了,有几点注意的地方: 1. 如果jenkins是在容器中启动的一定要记得将这个端口(30000)暴露到外部,不然jenkins-master会不知道slave是否已经启动,会反复去创建pod直到超过重试次数。 2. 如果提示Jenkins doesn’t have label jenkins-jnlp-slave,可能原因: 1). 因为slave节点无法链接到jenkins节点开放端口50000导致 2). 因为slave镜像中slave启动失败导致的 3). 因为jenkins和k8s通信有延时导致超时jenkins会反复创建pod 4). 因为slave pod启动失败 5). 因为pipeline中指定的label与配置中的不一致导致 3. 也可以通过Ingress暴露的方式来进行暴露。关于“微服务如何自动化部署CI/CD”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

相关推荐: windows中如何解决电脑桌面图标变大问题

这篇文章将为大家详细讲解有关windows中如何解决电脑桌面图标变大问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。方法一:在桌面空白处点击鼠标右键,在 香港云主机查看中把大图标改为中等图标或者小图标。方法二:按住键盘上的…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 08/17 18:12
下一篇 08/17 18:12

相关推荐