通过云效实现Knative服务持续交付

Knative 提供简化的应用模型,支持流量管理和基于百分比的灰度发布。您可以使用云效实现 Knative 服务的持续交付,简化部署与灰度发布流程。本文以 Java 代码构建 Docker 镜像、推送至 ACR 并部署到 ACK 集群为例,介绍如何通过云效实现Knative服务持续交付。

前提条件

步骤一:创建流水线并配置代码源

  1. 登录云效工作台,单击云效产品区域的流水线

  2. 流水线 Flow页面,单击新建流水线。在可视化编排页签下选择如下模板,单击创建

    image

  3. 单击添加流水线源,选择代码源,单击添加

    本示例选择Flow提供的示例代码源。

    重要

    本示例代码源中用于部署Knative服务的容器镜像需通过公有镜像仓库拉取。如您的镜像仓库为私有,您可以自定义示例Knative ServiceYAML,并在其中配置镜像拉取的Secret。

    image

步骤二:配置镜像构建和部署任务

配置镜像构建任务

  1. 构建区域,单击Java 构建Docker镜像并推送镜像仓库。在编辑面板,配置相关配置项。

    下文仅介绍核心配置项。其余配置项可参见控制台指引按需配置。

  2. 在镜像构建并推送至ACR区域,选择地域和仓库。

    本示例选择的镜像仓库为个人版实例。

  3. 标签文本框输入${DATETIME},表示以流水线触发时的时间戳作为镜像的标签。您也可以将分支名或者Tag作为镜像的标签。

  4. Dockerfile路径文本框输入Dockerfile构建镜像

本示例可删除Maven 单元测试,以便快速验证后续步骤。

配置部署任务

  1. 部署区域,单击Kubernetes发布

    下文仅介绍核心配置项。其余配置项可参见控制台指引按需配置。

  2. 编辑面板,单击任务步骤下的Kubectl发布。单击集群连接右侧的新建连接集群连接

  3. 选择集群类型容器服务集群,选择目标集群,然后单击保存

    如此前未授权,可按照页面提示完成相关授权。

  4. 配置YAML路径。本文配置为app-configs/knative。

  5. 单击变量对应的添加,选择上游任务 制品/镜像 下载地址,输入变量Keyimage,Value选择使用镜像VPC公网地址。

    运行过程中,Flow会把YAML路径下所有文件中的${image}都替换为镜像地址,然后再进行kubectl发布。

  6. 配置完成后,单击右上角的保存并运行,按照页面提示完成任务的提交。

    流水线运行成功的结果如下。

    image

结果验证

前置操作完成后,您可以在Knative服务管理页面,查看服务是否部署成功。

  1. 登录容器服务管理控制台

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择应用 > Knative

  3. 单击服务管理,在服务列表中查看应用是否成功运行。

    image

  4. 使用以下命令进行验证。

    curl -H "Host: spring-boot-knative.default.example.com" http:{访问网关的地址}

    预期输出结果如下所示,表明服务已经部署成功。

    Greetings from Spring Boot! V4

相关文档

关于使用Knative时可能遇到的常见问题及对应的解决方案,请参见Knative FAQ