linux cpu占用率如何看
290
2022-10-30
第五章 九析带你玩转 rancher - 流水线发布
本系列文章:第一章:九析带你玩转 rancher - 安装篇第二章:九析带你玩转 rancher - 导入集群篇第三章:九析带你玩转 rancher - 集成 gitlab第四章:九析带你玩转 rancher - 集成 harbor第五章:九析带你玩转 rancher - 流水线发布
目录
1 前言
2 设置流水线
2.1 关联代码库
2.1.1 指定项目空间
2.1.2 设置代码库
2.2 关联镜像库
2.3 全局流水线设置
2.4 项目空间流水线设置
3 执行流水线
4 流水线成功执行
1 前言
本文是在上章《九析带你玩转 rancher - 集成 gitlab》的基础上进行配置的,所以在发布 rancher 流水线前,需确保 rancher 和 gitlab 已经关联。
流水线是 DevOps 的实现,它提供非常友好的界面 UI,使开发人员仅仅通过鼠标,就可以完成整个微服务的发布上线。在 rancher 中,一个微服务就对应一条流水线。
2 设置流水线
设置流水线需同时设置全局流水线和项目流水线。全局流水线的设置会影响到项目流水线。
2.1 关联代码库
2.1.1 指定项目空间
本文 default 项目空间下配置流水线:
在 default 项目空间下,选择“资源” -> “流水线” 菜单:
2.1.2 设置代码库
选择“设置代码库”按钮:
选择“刷新代码库”按钮:
由于 gitlab 已经跟 rancher 关联,故刷新代码库之后,就会显示你在 gitlab 中的服务代码:
启用服务:
2.2 关联镜像库
本文在 default 空间下关联镜像库:
添加凭证:
填写相关信息:
2.3 全局流水线设置
选择指定集群(zcy-arch-k8s),再选择“工具”,最后选择“流水线”:
修改内容如下:
全局流水线会控制项目流水线的并发个数、资源占比情况等。
2.4 项目空间流水线设置
项目空间流水线需同时选中“集群”(zcy-arch-k8s)和“项目空间”(default):
选择 “编辑配置” 子菜单:
1 clone 阶段:这是系统默认的必须阶段,指从代码库下载微服务的源代码。2 build 阶段:编译源代码,并生成 Dockerfile 文件3 publish 阶段:根据上阶段的 Dockerfile 文件生成镜像,然后将镜像上传到指定镜像仓库4 deploy 阶段:从镜像仓库下载上阶段生成的服务镜像,然后启动容器运行
下面以 java 语言为例,在服务(这里是: chapter-001-helloworld)代码库创建 rancher 总流水线文件 .rancher-pipeline.yml,如下图所示:
文件定义了流水线 3 个阶段,文件内容如下:
stages:- name: Build steps: - runScriptConfig: image: jiuxi.harbor.org/stable/maven-3.6.0-jdk-8 shellScript: mvn -B -U -DskipTests clean package spring-boot:repackage- name: Publish steps: - publishImageConfig: dockerfilePath: ./Dockerfile buildContext: . tag: stable/${CICD_GIT_REPO_NAME}:${CICD_GIT_COMMIT} pushRemote: true registry: jiuxi.harbor.org env: PLUGIN_DEBUG: "true" PLUGIN_INSECURE: "true"- name: Deploy steps: - applyYamlConfig: path: ./Deployment.yamlnotification: {}
Publish 阶段是把 Build 阶段生成的 jar 文件,根据预先定义的 Dockerfile 文件做成服务镜像,并推送到私有镜像仓库中,其中自定义 Dockerfile 文件定义如下:
FROM jiuxi.harbor.org/stable/java:8MAINTAINER "jiuxi"<1494445739@qq.com>ADD ./target/application.jar application.jarEXPOSE 8080CMD ["/bin/sh", "-c", "java -jar application.jar"]
Deploy 阶段是在 k8s 中执行自定义部署文件 Deployment.yaml,创建服务的 service 和 deployment 资源,并运行容器,自定义 Deployment.yaml 文件内容如下:
apiVersion: v1kind: Servicemetadata: name: ${CICD_GIT_REPO_NAME} labels: app: ${CICD_GIT_REPO_NAME}spec: type: ClusterIP selector: app: ${CICD_GIT_REPO_NAME} ports: - port: 8080 targetPort: 8080---apiVersion: apps/v1kind: Deploymentmetadata: name: ${CICD_GIT_REPO_NAME}spec: replicas: 1 selector: matchLabels: app: ${CICD_GIT_REPO_NAME} minReadySeconds: 5 strategy: type: RollingUpdate template: metadata: labels: app: ${CICD_GIT_REPO_NAME} spec: containers: - name: ${CICD_GIT_REPO_NAME} image: jiuxi.harbor.org/stable/${CICD_GIT_REPO_NAME}:${CICD_GIT_COMMIT} livenessProbe: tcpSocket: port: 8080 imagePullPolicy: Always env: - name: TZ value: "Asia/Shanghai" - name: MY_POD_IP valueFrom: fieldRef: fieldPath: status.podIP - name: jiuxi_logs_${CICD_GIT_REPO_NAME}-stdout value: "stdout" - name: jiuxi_logs_${CICD_GIT_REPO_NAME}-logs value: "/data/logs/${CICD_GIT_REPO_NAME}/*.log" volumeMounts: - name: logs mountPath: /data/logs/${CICD_GIT_REPO_NAME} - name: time mountPath: /etc/localtime resources: limits: memory: 1Gi volumes: - name: time hostPath: path: /etc/localtime - name: logs emptyDir: {} restartPolicy: Always
流水线已经自动配置好:
确定一下 Publish 阶段的镜像仓库地址是否正确:
3 执行流水线
选择“运行”菜单来执行流水线:
选择指定代码分支,我这里是“master”:
echo "10.110.101.100 jiuxi.gitlab.com jiuxi.harbor.org jiuxi.nexus.org" >> /etc/hosts
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~