Knative 提供简化的应用模型,支持流量管理和基于百分比的灰度发布。您可以使用云效实现 Knative 服务的持续交付,简化部署与灰度发布流程。本文以 Java 代码构建 Docker 镜像、推送至 ACR 并部署到 ACK 集群为例,介绍如何通过云效实现Knative服务持续交付。
前提条件
已在集群中部署Knative,请参见部署与管理Knative组件。
已创建ACR镜像仓库,请参见创建个人版实例、使用企业版实例构建镜像、个人版和企业版实例差异化说明。
为了能够快速拉取镜像,建议ACK集群与ACR处于同一地域。若不在同一地域,请选择VPC公网地址。
步骤一:创建流水线并配置代码源
登录云效工作台,单击云效产品区域的流水线。
在流水线 Flow页面,单击新建流水线。在可视化编排页签下选择如下模板,单击创建。
单击添加流水线源,选择代码源,单击添加。
本示例选择Flow提供的示例代码源。
重要本示例代码源中用于部署Knative服务的容器镜像需通过公有镜像仓库拉取。如您的镜像仓库为私有,您可以自定义示例Knative Service的YAML,并在其中配置镜像拉取的Secret。
步骤二:配置镜像构建和部署任务
配置镜像构建任务
在构建区域,单击Java 构建Docker镜像并推送镜像仓库。在编辑面板,配置相关配置项。
下文仅介绍核心配置项。其余配置项可参见控制台指引按需配置。
在镜像构建并推送至ACR区域,选择地域和仓库。
本示例选择的镜像仓库为个人版实例。
在标签文本框输入
${DATETIME}
,表示以流水线触发时的时间戳作为镜像的标签。您也可以将分支名或者Tag作为镜像的标签。在Dockerfile路径文本框输入
Dockerfile
。
本示例可删除Maven 单元测试,以便快速验证后续步骤。
配置部署任务
在部署区域,单击Kubernetes发布。
下文仅介绍核心配置项。其余配置项可参见控制台指引按需配置。
在编辑面板,单击任务步骤下的Kubectl发布。单击集群连接右侧的新建连接。
选择集群类型为容器服务集群,选择目标集群,然后单击保存。
如此前未授权,可按照页面提示完成相关授权。
配置YAML路径。本文配置为app-configs/knative。
单击变量对应的添加,选择上游任务 制品/镜像 下载地址,输入变量Key为image,Value选择使用镜像VPC公网地址。
运行过程中,Flow会把YAML路径下所有文件中的
${image}
都替换为镜像地址,然后再进行kubectl发布。配置完成后,单击右上角的保存并运行,按照页面提示完成任务的提交。
流水线运行成功的结果如下。
结果验证
前置操作完成后,您可以在Knative的服务管理页面,查看服务是否部署成功。
登录容器服务管理控制台。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
单击服务管理,在服务列表中查看应用是否成功运行。
使用以下命令进行验证。
curl -H "Host: spring-boot-knative.default.example.com" http:{访问网关的地址}
预期输出结果如下所示,表明服务已经部署成功。
Greetings from Spring Boot! V4
相关文档
关于使用Knative时可能遇到的常见问题及对应的解决方案,请参见Knative FAQ。