配置 S2I 和 B2I Webhooks
KubeSphere 提供 Source-to-Image (S2I) 和 Binary-to-Image (B2I) 功能,以自动化镜像构建、推送和应用程序部署。在 KubeSphere v3.1 中,您可以配置 S2I 和 B2I Webhook,以便当代码仓库中存在任何相关活动时,自动触发镜像构建器。
本教程演示如何配置 S2I 和 B2I webhooks。
准备工作
- 您需要启用 KubeSphere DevOps 系统,该系统已集成 S2I。
- 您需要创建一个创建企业空间,一个项目 (
demo-project
) 和一个帐户 (project-regular
)。project-regular
需要被邀请到项目中,并赋予operator
角色。有关详细信息,请参考创建企业空间、项目、帐户和角色。 - 您需要创建一个 S2I 镜像构建器和 B2I 镜像构建器。有关更多信息,请参见 Source to Image:无需 Dockerfile 发布应用和Binary to Image:发布制品到 Kubernetes。
配置 S2I Webhook
步骤 1: 暴露 S2I trigger 服务
-
以
admin
身份登录 KubeSphere Web 控制台。在左上角点击平台管理,然后选择集群管理。 -
选择在应用负载下面的服务,从下拉框中选择 kubesphere-devops-system,然后点击 s2ioperator-trigger-service 进入详情页面。
-
点击更多操作,选择编辑外网访问。
-
在出现的窗口中,从访问方法的下拉菜单中选择 NodePort,然后点击确定。
备注
本教程出于演示目的选择 NodePort。根据您的需要,您也可以选择 LoadBalancer。 -
在详情界面可以查看 Node Port。Node Port 会包括在 S2I webhook URL 中。
步骤 2:配置一个 S2I webhook
-
登出 KubeSphere 并以
project-regular
帐户登回。然后转到demo-project
。 -
在镜像构建器中,点击 S2I 镜像构建器,进入详情页面。
-
您可以在远程触发链接中看到自动生成的链接。复制
/s2itrigger/v1alpha1/general/namespaces/demo-project/s2ibuilders/felixnoo-s2i-sample-latest-zhd/
,因为这个链接将包含在 S2I webhook URL 中。 -
登录您的 GitHub 帐户,转到用于 S2I 镜像构建器的源代码仓库。转到 Settings 下的 Webhooks,然后点击 Add webhook。
-
在 Payload URL,输入
http://<IP>:<Service NodePort>/s2itrigger/v1alpha1/general/namespaces/demo-project/s2ibuilders/felixnoo-s2i-sample-latest-zhd/
。您可以基于您的需要选择触发事件,然后点击 Add webhook。本教程出于演示目的将会选择 Just the push event。备注
<IP>
是您自己的 IP 地址,<Service NodePort>
是您在第一步中获得的 NodePort。/s2itrigger/v1alpha1/general/namespaces/demo-project/s2ibuilders/felixnoo-s2i-sample-latest-zhd/
来自 S2I 的远程触发链接。确保您用的是您自己的 IP 地址、Service NodePort 和 S2I 远程触发链接。您可能还需要配置必要的端口转发规则,并根据 Kubernetes 群集的部署位置,在安全组中打开端口。 -
添加 webhook 后,您可以点击 webhook 查看 Recent Deliveries 中的交付详细信息。如果有效负载 URL 有效,您可以看到绿色的勾号。
-
完成上述所有操作后,如果源代码仓库中存在推送事件,则会自动触发 S2I Image Builder。
配置 B2I Webhook
您可以按照相同的步骤配置 B2I webhook。
-
暴露 S2I 触发服务。
-
在 B2I 镜像构建器的详细信息页面中查看 Remote Trigger Link。
-
在源代码仓库中添加有效负载 URL。B2I 有效负载 URL 格式与 S2I 有效负载 URL 格式相同。
备注
根据 Kubernetes 群集的部署位置,您可能需要配置必要的端口转发规则并在安全组中打开端口。 -
如果源代码仓库发生相关事件,B2I 镜像构建器将自动触发。
反馈
这篇文章对您有帮助吗?
感谢您的反馈。如果您有关于如何使用 KubeSphere 的具体问题,请在 Slack 上提问。如果您想报告问题或提出改进建议,请在 GitHub 存储库中打开问题。