您可以通过云效流水线从源码仓库构建镜像,并使用K8s YAML文件自动部署SAE应用。本文将通过简单的示例演示上述流程,并引导您将其用于实际业务。
方案概览
实现本方案需要执行以下步骤:
上传源码
配置云效流水线
设置代码源
镜像构建与上传
部署SAE应用
运行云效流水线并验证结果
快速体验
1. 上传源码
您可以将示例代码spring-boot-demo.zip上传到源码仓库中(例如自建Gitlab、Codeup、Github),用于快速体验流程。
示例代码中相关文件的作用如下:
Dockerfile
:用于从源码构建镜像。manifests/dp.yaml
:通过K8s YAML文件指定SAE部署应用时的配置信息。
2. 配置云效流水线
登录云效流水线控制台,单击新建流水线。
为了演示完整流程,本文使用空模板来创建流水线。选择空模板.空模板。单击创建。
2. 1 设置代码源
在流程配置页面,单击添加流水线源。选择代码源为示例代码所在的源码仓库类型,配置示例代码所在的代码仓库和使用的默认分支。
初次使用时,需要添加服务连接或企业公钥来授权云效流水线访问您的源码仓库。
2. 2 镜像构建与上传
在流水线的下个阶段,添加任务来执行镜像构建与上传:
单击系统默认创建的空任务节点,在编辑页面配置以下信息:
选择构建集群为云效中国香港构建集群,因为示例代码的
Dockerfile
中包含海外的镜像依赖。选择构建节点,仅支持Linux/amd64。
单击添加步骤,在构建类别中根据实际情况选择镜像构建并推送至ACR(个人版)或镜像构建并推送至ACR(企业版)。
本文假定您已开通容器镜像服务,且已创建个人版实例或创建企业版实例。
镜像构建并推送至ACR(个人版)
初次使用时,需要添加服务连接来授权云效流水线访问容器镜像服务。
需要配置以下信息:
选择镜像上传的目标地域、仓库。
设置标签。可以为固定参数例如
1.0
,或者动态参数例如${DATETIME}
,表示镜像被推送到ACR后,将会以当前日期时间作为版本名称。设置Dockerfile路径。由于示例代码的
Dockerfile
文件位于代码库根目录,因此设置为Dockerfile
。
镜像构建并推送至ACR(企业版)
初次使用时,需要添加服务连接来授权云效流水线访问容器镜像服务。
需要配置以下信息:
选择镜像上传的目标地域、企业实例、命名空间、仓库。
设置标签。可以为固定参数例如
1.0
,或者动态参数例如${DATETIME}
,表示镜像被推送到ACR后,将会以当前日期时间作为版本名称。设置Dockerfile路径。由于示例代码的
Dockerfile
文件位于代码库根目录,因此设置为Dockerfile
。
2. 3 部署SAE应用
在流水线的下个阶段,添加任务来部署SAE应用:
单击新的任务,选择空白任务模板创建一个任务,在编辑页面配置以下信息:
选择构建节点,仅支持Linux/amd64。
单击添加步骤,在发布类别中选择Kubectl SAE 发布。
初次使用时,需要添加服务连接来授权云效流水线访问SAE。
需要配置以下信息:
选择SAE目标应用所属的地域、命名空间。为简化流程,本示例设置命名空间为default,即默认命名空间。
设置YAML路径。由于示例代码的YAML文件位于代码库
manifests
目录下,因此设置为manifests
。设置变量。由于示例代码的YAML文件中引用了变量
IMAGE
,因此添加如下变量定义IMAGE = 镜像构建并推送至ACR(个人版/企业版).镜像公网地址
。在部署应用时,会自动替换变量。
3. 运行云效流水线并验证结果
保存并运行流水线。
运行完成后,可以点击各节点的日志,查看任务的执行过程和结果。部署SAE应用的节点日志中包含所有扫描到的YAML文件、通过K8s部署应用的标准输出、资源概要信息。
登录SAE控制台,在左侧导航栏选择 ,然后选择目标地域和目标命名空间。可以查看已部署的应用,应用名称为
test-deployment
。
4. 清理资源
单击已部署的应用,在基础信息页面,单击
。根据页面提示,完成应用的删除。了解更多
工作原理
云效流水线利用kubectl-sae工具,根据代码源包含的YAML文件操作SAE应用底层的Kubernetes集群资源,实现 SAE 上的应用部署与资源管理。
如果您希望了解如何在本地或云服务器ECS中使用kubectl-sae工具,请参见kubectl-sae工具快速入门。
在您的生产环境中使用
编写YAML文件
如果您希望了解如何编写YAML文件,请参见kubectl-sae工具目录下的相关文档。
示例代码中使用manifests/dp.yaml
指定SAE部署应用时的配置信息。生产环境中,您也可以在manifests
路径下包含多个YAML文件,管理SAE的多种资源。根据多个YAML文件执行资源部署时不能保证执行顺序,如果您对执行顺序有要求,建议拆分成多个流水线按照您期望的顺序手动执行。
设置正确的文件路径
生产环境中,代码源的Dockerfile文件、YAML文件的路径可能与示例代码不同。配置云效流水线时,需要设置正确的路径。
设置Dockerfile路径:Dockerfile相对于代码库根目录的路径,如
META/config/Dockerfile
或Dockerfile
。设置YAML路径:YAML文件的父目录相对于代码库根目录的路径,例如
manifests
路径下包含YAML文件,则设置为manifests
。
自定义流水线
根据业务需求,您可以在流水线中添加代码扫描、测试等任务节点。
代码源自动触发流水线
如果您希望上传代码等操作可以自动触发流水线的执行,请参见代码源触发。