Flow 提供了通用的 Kubernetes 部署能力支持,通过内置的 Kubectl 工具将 Kubernetes YAML资源描述文件部署到任意集群中。在原生 Kubectl 的能力基础上, Flow 还内置了动态模板的能力,从而帮助用户快速实现容器应用的构建与发布。本文主要介绍了如何通过Flow添加并配置Kubernetes发布任务,以及如何查看部署后的日志。
方案概览
添加部署任务
可以通过两种形式添加部署任务。
-
创建流水线时,选择包含 Kubernetes 发布的模板。
在 可视化编排 页签下,选择左侧 Java 分类,选中 Java · 测试、构建镜像,发布到Kubernetes集群/阿里云容器服务 模板,单击 创建。
-
在流水线中添加空任务,并添加 Kubernetes 发布步骤。
在任务面板左侧选择部署分类,在右侧选择Kubernetes发布。
配置部署任务
进入 Kubectl 步骤,进行如下配置:
-
选择或者新建 Kubernetes集群连接,关于如何新建 Kubernetes 集群连接请参见Kubernetes集群管理。
配置 Kubectl 发布步骤的其他参数:设置 Kubectl 版本(例如
v1.16.4)、命名空间(例如default)、YAML 路径(例如app-configs/manifest2),并根据需要勾选 使用Replace模式、跳过 TLS 校验、跳过模板校验等选项,然后在 变量区域配置镜像等参数。 -
输入发布的目标命名空间。
-
输入当前需要部署的YAML路径,并添加需要传递的变量。
-
在 Kubernetes 资源描述 YAML 文件中,通过${IMAGE} 占位符将 Docker 镜像定义为一个动态变量。
apiVersion: apps/v1 kind: Deployment metadata: labels: run: spring-boot-sample name: spring-boot-sample spec: replicas: 4 selector: matchLabels: run: spring-boot-sample template: metadata: labels: run: spring-boot-sample spec: containers: image: ${image} name: nginx -
在Kubectl 步骤中传递变量给 YAML文件,在 Kubectl 步骤配置中,点击添加变量,并定义变量名称以及变量来源,即可发布时使用这些变量动态替换 YAML 文件中的占位符。在 Kubectl 发布 步骤的变量区域,将
image变量的值设置为镜像构建步骤的输出(即 镜像构建并推送至阿里云镜像仓库 步骤产出的镜像地址),使部署时 YAML 中的 ${IMAGE} 占位符被实际镜像地址替换。同时配置集群连接(如corefile-test)、Kubectl 版本(如v1.16.4)、命名空间(如default)及 YAML 路径(如app-configs/manifest2)。
说明Kubernetes常用资源YAML使用方式,请参见Kubernetes常用资源 YAML 规范参考。
-
查看部署日志
在配置完成后,运行流水线执行部署任务,即会将源码中对应的 YAML 文件部署到指定的Kubernetes 集群中。
-
在部署过程中点击日志,可以查看当前的部署过程以及相应记录。
-
日志输出中会包含当前所有扫描到的 YAML 文件,kubectl apply后的标准输出,以及当前变更执行后的所有资源概要信息。
示例中,
kubectl apply输出deployment.apps/spring-boot-sample configured,资源概要显示spring-boot-sample已运行 105m,最终提示[SUCCESS] 步骤运行成功,表明应用已成功部署到 Kubernetes 集群。
Kubernetes常用资源 YAML 规范参考
工作负载
服务发现与网络
|
资源类型 |
官方文档链接 |
|
Service |
https://kubernetes.io/docs/concepts/services-networking/service/ |
|
Ingress |
https://kubernetes.io/docs/concepts/services-networking/ingress/ |