Kubernetes Kubectl 发布

更新时间:
复制 MD 格式

Flow 提供了通用的 Kubernetes 部署能力支持,通过内置的 Kubectl 工具将 Kubernetes YAML资源描述文件部署到任意集群中。在原生 Kubectl 的能力基础上, Flow 还内置了动态模板的能力,从而帮助用户快速实现容器应用的构建与发布。本文主要介绍了如何通过Flow添加并配置Kubernetes发布任务,以及如何查看部署后的日志。

方案概览

  1. 添加部署任务

  2. 配置部署任务

  3. 查看部署日志

添加部署任务

可以通过两种形式添加部署任务。

  • 创建流水线时,选择包含 Kubernetes 发布的模板。

    可视化编排 页签下,选择左侧 Java 分类,选中 Java · 测试、构建镜像,发布到Kubernetes集群/阿里云容器服务 模板,单击 创建

  • 在流水线中添加空任务,并添加 Kubernetes 发布步骤。

    在任务面板左侧选择部署分类,在右侧选择Kubernetes发布

配置部署任务

进入 Kubectl 步骤,进行如下配置:

  1. 选择或者新建 Kubernetes集群连接,关于如何新建 Kubernetes 集群连接请参见Kubernetes集群管理

    配置 Kubectl 发布步骤的其他参数:设置 Kubectl 版本(例如 v1.16.4)、命名空间(例如 default)、YAML 路径(例如 app-configs/manifest2),并根据需要勾选 使用Replace模式跳过 TLS 校验跳过模板校验等选项,然后在 变量区域配置镜像等参数。

  2. 输入发布的目标命名空间

  3. 输入当前需要部署的YAML路径,并添加需要传递的变量。

    1. 在 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
    2. 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 集群中。

  1. 在部署过程中点击日志,可以查看当前的部署过程以及相应记录。

  2. 日志输出中会包含当前所有扫描到的 YAML 文件,kubectl apply后的标准输出,以及当前变更执行后的所有资源概要信息。

    示例中,kubectl apply 输出 deployment.apps/spring-boot-sample configured,资源概要显示 spring-boot-sample 已运行 105m,最终提示 [SUCCESS] 步骤运行成功,表明应用已成功部署到 Kubernetes 集群。

Kubernetes常用资源 YAML 规范参考

工作负载

资源类型

官方文档链接

Deployments

https://kubernetes.io/docs/concepts/workloads/controllers/deployment/

StatefulSets

https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/

DaemonSet

https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/

服务发现与网络

资源类型

官方文档链接

Service

https://kubernetes.io/docs/concepts/services-networking/service/

Ingress

https://kubernetes.io/docs/concepts/services-networking/ingress/