通过云效流水线使用K8s YAML文件部署应用至SAE

您可以通过云效流水线从源码仓库构建镜像,并使用K8s YAML文件自动部署SAE应用。本文将通过简单的示例演示上述流程,并引导您将其用于实际业务。

方案概览

image

实现本方案需要执行以下步骤:

  1. 上传源码

  2. 配置云效流水线

    1. 设置代码源

    2. 镜像构建与上传

    3. 部署SAE应用

  3. 运行云效流水线并验证结果

快速体验

1. 上传源码

您可以将示例代码spring-boot-demo.zip上传到源码仓库中(例如自建Gitlab、Codeup、Github),用于快速体验流程。

示例代码中相关文件的作用如下:

  • Dockerfile:用于从源码构建镜像。

  • manifests/dp.yaml:通过K8s YAML文件指定SAE部署应用时的配置信息。

2. 配置云效流水线

登录云效流水线控制台,单击新建流水线

为了演示完整流程,本文使用空模板来创建流水线。选择空模板.空模板。单击创建

2. 1 设置代码源

流程配置页面,单击添加流水线源。选择代码源为示例代码所在的源码仓库类型,配置示例代码所在的代码仓库和使用的默认分支

初次使用时,需要添加服务连接企业公钥来授权云效流水线访问您的源码仓库。

image

2. 2 镜像构建与上传

在流水线的下个阶段,添加任务来执行镜像构建与上传:

  1. 单击系统默认创建的空任务节点,在编辑页面配置以下信息:

    • 选择构建集群云效中国香港构建集群,因为示例代码的Dockerfile中包含海外的镜像依赖。

    • 选择构建节点,仅支持Linux/amd64

  2. 单击添加步骤,在构建类别中根据实际情况选择镜像构建并推送至ACR(个人版)镜像构建并推送至ACR(企业版)

    本文假定您已开通容器镜像服务,且已创建个人版实例创建企业版实例

    镜像构建并推送至ACR(个人版)

    初次使用时,需要添加服务连接来授权云效流水线访问容器镜像服务。

    需要配置以下信息:

    • 选择镜像上传的目标地域仓库

    • 设置标签。可以为固定参数例如1.0,或者动态参数例如${DATETIME},表示镜像被推送到ACR后,将会以当前日期时间作为版本名称。

    • 设置Dockerfile路径。由于示例代码的Dockerfile文件位于代码库根目录,因此设置为Dockerfile

    image

    镜像构建并推送至ACR(企业版)
    重要

    需要ACR企业版目标实例开启镜像仓库公网进行通信,再将Flow构建集群公网出口地址添加到ACR公网白名单里,详见配置公网的访问控制。查看Flow构建集群公网出口地址的方法,请参见构建集群

    初次使用时,需要添加服务连接来授权云效流水线访问容器镜像服务。

    需要配置以下信息:

    • 选择镜像上传的目标地域企业实例命名空间仓库

    • 设置标签。可以为固定参数例如1.0,或者动态参数例如${DATETIME},表示镜像被推送到ACR后,将会以当前日期时间作为版本名称。

    • 设置Dockerfile路径。由于示例代码的Dockerfile文件位于代码库根目录,因此设置为Dockerfile

    image

2. 3 部署SAE应用

在流水线的下个阶段,添加任务来部署SAE应用:

  1. 单击新的任务,选择空白任务模板创建一个任务,在编辑页面配置以下信息:

    • 选择构建节点,仅支持Linux/amd64

  2. 单击添加步骤,在发布类别中选择Kubectl SAE 发布

    初次使用时,需要添加服务连接来授权云效流水线访问SAE。

    需要配置以下信息:

    • 选择SAE目标应用所属的地域命名空间。为简化流程,本示例设置命名空间default,即默认命名空间。

    • 设置YAML路径。由于示例代码的YAML文件位于代码库manifests目录下,因此设置为manifests

    • 设置变量。由于示例代码的YAML文件中引用了变量IMAGE,因此添加如下变量定义IMAGE = 镜像构建并推送至ACR(个人版/企业版).镜像公网地址。在部署应用时,会自动替换变量。

    image

3. 运行云效流水线并验证结果

  1. 保存并运行流水线。

  2. 运行完成后,可以点击各节点的日志,查看任务的执行过程和结果。部署SAE应用的节点日志中包含所有扫描到的YAML文件、通过K8s部署应用的标准输出、资源概要信息。

    image

  3. 登录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/DockerfileDockerfile

  • 设置YAML路径:YAML文件的父目录相对于代码库根目录的路径,例如manifests路径下包含YAML文件,则设置为manifests

自定义流水线

根据业务需求,您可以在流水线中添加代码扫描、测试等任务节点。

代码源自动触发流水线

如果您希望上传代码等操作可以自动触发流水线的执行,请参见代码源触发