KubeSphere 提供 Source-to-Image (S2I) 和 Binary-to-Image (B2I) 功能,以自动化构建、推送镜像和部署应用程序。您可以配置 S2I 和 B2I Webhook,当代码仓库发生特定事件时,自动触发镜像构建器。

本教程演示如何配置 S2I 和 B2I webhooks。

准备工作

已创建一个 S2I 镜像构建器和 B2I 镜像构建器。有关更多信息,请参阅使用源代码创建镜像构建器使用制品创建镜像构建器

配置 S2I Webhook

步骤 1: 暴露 S2I trigger 服务

  1. 以具有应用负载管理权限的用户登录 KubeSphere 企业版 Web 控制台并进入您的集群。

  2. 前往应用负载下的服务,搜索 s2ioperator-trigger-service

  3. 点击more,选择编辑外部访问

  4. 在弹出的对话框中,从访问模式的下拉菜单中选择 NodePort,然后点击确定

    提示

    根据需要,您也可以选择 LoadBalancer

  5. 在列表中可以查看该服务的 NodePort。S2I webhook URL 中将包含此 NodePort。

    说明

    访问服务前,您可能需要配置端口转发规则并在安全组中放行该端口。

步骤 2:配置 S2I webhook

  1. 进入您的企业空间。

  2. 镜像构建器中,点击 S2I 镜像构建器,进入详情页面。

  3. 复制远程触发器中的链接,S2I webhook URL 中将包含这个链接。示例:

    http://s2ioperator-trigger-service.extension-s2ibuilder.svc/s2itrigger/v1alpha1/general/namespaces/project1/s2ibuilders/felixnoo-s2i-sample-latest-zhd/
  4. 登录您的 GitHub 帐户,进入用于 S2I 镜像构建器的源代码仓库。点击 Settings > Webhooks,然后点击 Add webhook

  5. Payload URL,参照如下链接,修改 IP 地址、Service NodePort 和远程触发器链接,然后输入实际链接。示例:

    http://<IP>:<Service NodePort>/s2ioperator-trigger-service.extension-s2ibuilder.svc/s2itrigger/v1alpha1/general/namespaces/project1/s2ibuilders/felixnoo-s2i-sample-latest-zhd/
    注意

    您需要在远程触发器的链接中添加 <IP>:<Service NodePort>/。其中 <IP> 是您自己的 IP 地址,<Service NodePort> 是您在步骤 1 中获得的 NodePort。

  6. 按需选择触发事件,比如选择 Just the push event,然后点击 Add webhook

  7. 添加 webhook 后,点击 webhook 查看 Recent Deliveries 中的交付详细信息。如果 Payload URL 有效,您会看到绿色的勾号。

  8. 完成上述所有操作后,如果源代码仓库中存在 push 事件,则会自动触发 S2I 镜像构建器。

配置 B2I Webhook

按照相同的步骤,配置 B2I webhook。

  1. 暴露 s2ioperator-trigger-service 服务。

  2. 在 B2I 镜像构建器的详细信息页面中查看远程触发器

  3. 在源代码仓库中添加 webhook。B2I 的 Payload URL 格式与 S2I 的 Payload URL 格式相同。

  4. 如果源代码仓库发生指定事件,B2I 镜像构建器将自动触发。