Binary to Image:发布制品到 Kubernetes
在 B2I 工作流中,您不需要编写 Dockerfile。这不仅能降低学习成本,也能提升发布效率,使用户更加专注于业务。
本教程演示在 B2I 工作流中基于制品构建镜像的两种不同方式。最终,镜像会发布至 Docker Hub。
以下是一些示例制品,用于演示和测试,您可以用来实现 B2I 工作流:
- 您已启用 KubeSphere DevOps 系统。
- 您需要创建一个企业空间、一个项目和一个用户 (),请务必邀请该用户至项目中并赋予
operator
角色。有关更多信息,请参见。 - 设置一个 CI 专用节点用于构建镜像。该操作不是必需,但建议开发和生产环境进行设置,专用节点会缓存依赖项并缩短构建时间。有关更多信息,请参见为缓存依赖项设置 CI 节点。
下图中的步骤展示了如何在 B2I 工作流中通过创建服务来上传制品、构建镜像并将其发布至 Kubernetes。
您必须创建 Docker Hub 保密字典,以便将通过 B2I 创建的 Docker 镜像推送至 Docker Hub。以 project-regular
身份登录 KubeSphere,转到您的项目并创建一个 Docker Hub 保密字典。有关更多信息,请参见。
步骤 2:创建服务
在该项目中,转到应用负载下的服务,点击创建。
下拉至通过制品构建服务,选择 WAR。本教程使用 项目作为示例并上传 WAR 制品至 KubeSphere。设置一个名称,例如
b2i-war-java8
,点击下一步。在构建设置页面,请提供以下相应信息,并点击下一步。
服务类型:本示例选择无状态服务。有关不同服务的更多信息,请参见服务类型。
制品文件:上传 WAR 制品 ()。
构建环境:选择 kubesphere/tomcat85-java8-centos7:v2.1.0。
镜像名称:输入 或
<HARBOR-PROJECT_NAME>/<IMAGE NAME>
作为镜像名称。镜像标签:镜像标签,请输入
latest
。目标镜像仓库:镜像会推送至 Docker Hub,故请选择 Docker Hub 保密字典。
-
备注
有关如何在容器设置页面设置其他参数的更多信息,请参见容器组设置。
在存储卷设置页面,您可以为容器添加存储卷。有关更多信息,请参见。
在高级设置页面,选中外部访问并选择 NodePort 作为访问方式。点击创建完成整个操作过程。
点击左侧导航栏的镜像构建器,您可以看到正在构建示例镜像。
稍等片刻,您可以看到镜像构建器状态变为成功。
点击该镜像前往其详情页面。在任务记录下,点击记录右侧的 查看构建日志。如果一切运行正常,您可以在日志末尾看到
Build completed successfully
。在您的 Docker Hub 仓库,您可以看到 KubeSphere 已经向仓库推送了带有预期标签的镜像。
步骤 4:访问 B2I 服务
在服务页面,请点击 B2I 服务前往其详情页面,您可以查看暴露的端口号。
通过
http://<Node IP>:<NodePort>/<Binary-Package-Name>/
访问服务。备注
取决于您的部署环境,您可能需要在安全组中放行端口并配置端口转发规则。
前述示例通过创建服务来实现整个 B2I 工作流。此外,您也可以直接使用镜像构建器基于制品构建镜像,但这个方式不会将镜像发布至 Kubernetes。
请确保您已经创建了 Docker Hub 保密字典。有关更多信息,请参见。
以
project-regular
身份登录 KubeSphere,转到您的项目。在左侧导航栏中选择镜像构建器,然后点击创建。
在弹出的对话框中,选择 二进制 并点击下一步。
在构建设置页面,请提供以下相应信息,然后点击创建。
上传制品:下载 b2i-binary 并上传至 KubeSphere。
构建环境:选择 kubesphere/s2i-binary:v2.1.0。
镜像名称:自定义镜像名称。
镜像标签:镜像标签,请输入 。
目标镜像仓库:镜像会推送至 Docker Hub,故请选择 Docker Hub 保密字典。
在镜像构建器页面,您可以看到正在构建镜像。
步骤 2:检查结果
稍等片刻,您可以看到镜像构建器状态变为成功。
点击该镜像构建器前往其详情页面。在任务记录下,点击记录右侧的 查看构建日志。如果一切运行正常,您可以在日志末尾看到
Build completed successfully
。前往任务页面,您可以看到该镜像相应的任务已成功创建。