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

Knative提供了简单的应用模型,并且支持流量管理能力,支持根据流量百分比进行灰度发布。您可以通过云效实现Knative服务的持续交付,简化应用部署、灰度发布等操作,让您专注于业务开发。本文以基于Java代码构建Docker镜像、推送至ACR镜像仓库并部署到ACK集群为例,介绍如何通过云效实现Knative服务的持续交付。

前提条件

步骤一:创建流水线

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

  2. 流水线 Flow页面,单击新建流水线。在选择流水线模板对话框,选择如下模板,单击创建。流水线模板创建

步骤二:配置代码源

添加流水线源面板,选择代码源,单击添加。本文选择Flow提供的示例代码源选择代码源

步骤三:配置镜像构建任务

构建区域,单击Java 构建Docker镜像并推送镜像仓库。在编辑面板,配置相关配置项。示例如下所示。

  • 单击镜像构建并推送至阿里云仓库镜像个人版,选择地域仓库,本示例选择的镜像仓库为个人版实例。

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

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

任务输出区域,您可以看到该任务输出的变量,这些变量会在后续的任务中引用。

步骤四:配置部署任务

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

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

  3. 连接到Kubernetes集群对话框,集群类型选择容器服务集群,选择需要连接的集群,然后单击保存

    如果您没有进行过授权,可以单击去授权,完成集群授权后,再进行集群选择。

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

  5. 配置变量。单击变量右边的添加,选择上游任务 制品/镜像 下载地址,输入名称为image,选择镜像的VPC地址作为变量值。

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

步骤五:运行流水线

  1. 单击页面右上方的保存并运行触发流水线。

  2. 在Knative产品页面,查看服务是否部署成功。

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

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

    Knative

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

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

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

    Greetings from Spring Boot! V4

相关文档

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