v2.1
v2.0
v1.0
  1. Release Notes
    1. Release Notes - 2.1.1最新
    1. Release Notes - 2.1.0
    1. Release Notes - 2.0.2
    1. Release Notes - 2.0.1
    1. Release Notes - 2.0.0
  1. 产品介绍
    1. 什么是 KubeSphere
    1. 平台功能
    1. 为什么选择 KubeSphere
    1. 架构说明
    1. 应用场景
    1. 名词解释
  1. 安装指南
    1. 安装说明
      1. 概览
      2. 网络防火墙配置
      3. 集群其它参数配置
    1. 在 Linux 快速安装 KubeSphere
      1. All-in-One 模式
      2. Multi-Node 模式
      3. 完整安装(开启所有功能组件)
    1. 在 Kubernetes 安装 KubeSphere
      1. 准备工作
      2. 在 Kubernetes 安装 KubeSphere
    1. 安装可插拔的功能组件
      1. 可插拔功能组件概览
      2. 安装应用商店
      3. 安装内置的 DevOps 系统
      4. 安装内置的日志系统
      5. 安装微服务治理组件(Service Mesh)
      6. 安装告警通知系统
      7. 安装 Metrics-server 开启 HPA
      8. 验证可插拔功能组件的安装
    1. 集群高可用配置安装
      1. 在青云安装 HA 集群
      2. 在华为云安装 HA 集群
      3. 持久化存储配置说明
    1. 相关工具与插件
      1. 安装内置 Grafana
      2. 访问 SonarQube 和 Jenkins 服务端
      3. 安装 Porter 负载均衡器插件
      4. 安装 QingCloud 负载均衡器插件
    1. 认证配置
      1. 接入 LDAP / AD 域账号(Beta)
    1. 集群运维
      1. 安装后添加新的存储类型
      2. 集群节点扩容
      3. 卸载
  1. 升级指南
    1. 升级必读
    1. All-in-One 升级
    1. Multi-node 升级
  1. 快速入门
    1. 入门必读
    1. 1. 多租户管理快速入门
    1. 2. 应用路由与服务示例
    1. 3. 创建 Wordpress 应用并发布至 K8s
    1. 4. 一键部署应用
    1. 5. 创建简单任务
    1. 6. 设置弹性伸缩 (HPA)
    1. 7. Source-to-Image
    1. 8. Binary-to-Image
    1. 9. 基于Spring Boot项目构建流水线
    1. 10. 图形化构建流水线
    1. 11. Bookinfo 微服务的灰度发布
    1. 12. 使用 Ingress-Nginx 进行灰度发布
    1. 13. 应用商店
  1. 管理员指南
    1. 多租户管理
      1. 多租户管理概述
      2. 角色权限概览
    1. 平台管理
      1. 企业空间管理
      2. 账号管理
      3. 平台角色
    1. 基础设施
      1. 服务组件
      2. 主机管理
      3. 存储类型
    1. 监控中心
      1. 监控概述
      2. 如何利用监控定位问题
      3. 集群状态监控
      4. 应用资源监控
      5. 监控策略 - 节点级别
      6. 监控消息 - 节点级别
    1. 平台设置
      1. 应用仓库
      2. 基于本地仓库搭建应用仓库部署Redis
      3. 上传应用到 KubeSphere 官方仓库
      4. 基于 GitHub 搭建自有应用仓库
      5. 邮件服务器
      6. 日志收集
      7. 添加 Fluentd 作为日志接收者
      8. 添加 Kafka 作为日志接收者
    1. 工具箱
      1. Web Kubectl
      2. 日志收集
    1. DevOps 配置
      1. 系统配置修改
      2. 上传镜像至 Harbor
      3. 流水线配置邮件服务器
      4. Jenkins 系统设置
    1. FAQ
      1. DevOps 运维FAQ
  1. 用户指南
    1. 应用
      1. 应用模板
      2. 自制应用
      3. 流量治理
      4. 熔断
    1. 工作负载
      1. 工作负载概述
      2. 部署
      3. 有状态副本集
      4. 守护进程集
      5. 任务
      6. 定时任务
      7. 设置健康检查器
      8. 工作负载管理
      9. 落盘日志收集
    1. 存储
      1. 存储概述
      2. 存储卷
      3. Local Volume 使用方法
    1. 网络与服务
      1. 服务管理
      2. 灰度发布
      3. 应用路由
    1. 监控告警
      1. 告警策略 - 工作负载级别
      2. 告警消息 - 工作负载级别
    1. 配置中心
      1. 密钥
      2. 配置
      3. 镜像仓库
    1. 项目设置
      1. 基本信息
      2. 成员角色
      3. 项目成员
      4. 外网访问
    1. DevOps 工程
      1. DevOps 工程概述
      2. 管理 DevOps 工程
      3. 流水线
      4. 凭证管理
      5. 添加代码仓库
      6. 访问 SonarQube 并创建 Token
      7. 设置自动触发扫描
      8. Jenkins Agent 说明
      9. 流水线常见问题
  1. 开发者指南
    1. Helm 应用开发
      1. 开发模板规范
      2. Helm 应用开发入门
    1. Source to Image(S2I) 自定义模版开发
      1. S2I 原理及流程介绍
      2. 自定义 S2I 模版
  1. API 文档
    1. API 文档
    1. 如何调用 API
    1. API 常用术语对照
    1. 监控指标说明
  1. 常见问题
    1. 安装常见问题
    1. 存储常见问题
    1. 控制台使用常见问题
    1. DevOps 常见问题
  1. 附录
    1. 部署 Ceph 存储服务端
    1. 部署 GlusterFS 存储服务端
    1. 安装 OpenEBS 创建 LocalPV 存储类型
    1. 云平台配置端口转发和防火墙
KubeSphere®️ 2020 All Rights Reserved.

Source-to-image

编辑

什么是Source-to-image

Source-to-image (S2I) 是一个允许用户直接输入源代码然后打包成可运行程序到 Docker 镜像的工具,在用户不需要了解 Dockerfile 的情况下方便构建镜像。它是通过将源代码放入一个负责编译源代码的 Builder image 中,自动将编译后的代码打包成 Docker 镜像。在 KubeSphere 中支持 S2I 构建镜像,也支持以创建服务的形式,一键将源代码生成镜像推送到仓库,并创建其部署 (Deployment) 和服务 (Service) 最终自动发布到 Kubernetes 中。

Source-to-image 特性

Source-to-image (S2I)能够在实际的项目快速部署上线、微服务改造的过程中,极大地赋能开发者和运维用户。S2I 无需编写一行 Dockerfile,降低学习成本的同时提升发布效率,使用户能够更好地专注在业务本身。

下图简述了 S2I 的业务实现流程,S2I 已将以下多个步骤工具化和流程化,因此只需要在一个表单中完成。

  • ① 在 KubeSphere 创建 S2I 类型的服务,上传项目源代码
  • ② S2I 将在后台创建 K8s Job、Deployment 和 Service
  • ③ 将源代码自动打包成 Docker 镜像
  • ④ 推送镜像至 DockerHub 或 Harbor 或其他 Registry
  • ⑤ S2I Job 将在第二步创建的 Deloyment 中使用仓库中的镜像
  • ⑥ 自动发布至 Kubernetes

说明:在上述流程中,S2I Job 还会在后台执行状态上报的功能

接下来将用一个 Java 示例来演示介绍 S2I 的使用方式。

演示目的

本示例通过官方给出的 Java 示例,演示如何在 KubeSphere 上使用 Source to Image 来实现构建镜像,并且实现自动推送到镜像仓库,最后部署到集群中,暴露给外网访问。其中测试示例仓库中的 dependency 分支主要用于构建镜像的缓存测试。

前提条件

视频教程

预估时间

20-30 分钟(时间由于网速等因素而有所不同)。

操作示例

创建密钥

需要预先创建 DockerHub 镜像仓库和 GitHub 代码仓库的密钥,分别为 dockerhub-idgithub-id,参考 创建常用的几类密钥

Fork 项目

登录 GitHub,将本示例用到的 GitHub 仓库 devops-java-sample Fork 至您个人的 GitHub。

fork

创建服务

第一步:填写基本信息

1、在左侧的工作负载菜单下,点击服务,进入服务管理界面。

2、点击创建服务,在 通过代码构建新的服务 下选择 Java

3、然后输入基本信息。

  • 名称:必填,给服务起一个名字,以便在使用的时候容易区分,此处使用 s2i-test
  • 别名:为了方便理解可自定义设置;
  • 描述信息:简单描述该部署的相关信息,可自定义;

第二步:构建设置

1、点击 「下一步」,进入构建设置界面。

2、服务类型选择 无状态服务,构建环境为 java-8-centos7,然后复制之前 Fork 后的个人示例仓库的 git 地址。

3、参考如下提示填写信息。

说明: KubeSphere 内置了常用的 Java、Node.js、Python 等 S2I 的模板,若需要自定义其它语言或依赖环境的 S2I 模板,请参考 自定义 S2I 模板

  • 代码地址:粘贴上一步复制的 git 地址(目前支持 Git,支持 HTTP、HTTPS,并且可以指定代码分支以及在源代码终端的相对路径);
  • 分支:执行构建的分支,此示例默认使用 master,若希望测试缓存,可输入分支 dependency
  • 密钥:若为公共仓库则无需填写,私有仓库选择创建的 Github 账户密钥;
  • 映像模板:选择 kubespheredev/java-8-centos7 作为此示例的 Builder image;
  • 映像名称:可根据自己情况定义,此示例使用 DockerHub, 镜像名称为<dockerhub_username>/s2i-sampledockerhub_username 为自己的账户名称,确保具有推拉权限;
  • tag:镜像标签使用默认 latest 即可;
  • 目标镜像仓库:选择之前创建的 dockerhub-id
  • 高级设置-代码相对路径:使用默认的 / 即可;

提示:若希望将镜像推送到其他镜像仓库(如阿里云、Harbor镜像仓库等),2.1.0版本需要在映像名称中输入完整镜像名称,包括 Registry 地址,2.1.1 版本中已实现根据密钥自动加入 Registry 地址,无需手动添加。

4、点击 「下一步」,设置容器的访问策略,协议 默认为 HTTP名称 可以自定义,如 http-1容器端口服务端口 设置为8080。

5、配置「健康检查器」下的「容器就绪检查」,选择 「HTTP请求检查」。

  • 协议:必填,该示例默认使用 HTTP
  • 路径:必填,该示例默认使用根路径 /
  • 端口:必填,修改为示例应用所暴露的端口 8080
  • 初始延迟(秒):在检查其运行状况之前,容器启动后需要等待多长时间,该示例推荐延迟 30s
  • 超时时间(秒):等待探针完成多长时间。如果超过时间,则认为探测失败,该示例推荐延迟 10s

第三步:挂载存储及高级设置

1、配置完成后保存,然后点击「下一步」,无需挂在存储,存储默认即可,继续下一步,设置 外网访问 方式为 NodePort,最后「创建」

第三步:查看构建进度

1、在左侧的工作负载菜单下,点击 构建镜像,进入构建镜像管理界面。可看到镜像正在构建。

2、点击「构建的镜像」,进入查看详情,点击下拉箭头可看到构建日志。

第四步:验证运行结果

若通过 S2I 部署顺利,则将会在设置的 Dockerhub 中查看到设置的镜像,名称和标签为 构建设置 中设置的值。若想在浏览器中查看到部署结果,可进行如下配置。

验证访问

若在内网环境访问部署的示例服务,在浏览器中访问,可通过 NodeIP + 暴露的端口访问。或者通过 SSH 登陆集群节点,或使用集群管理员登陆 KubeSphere 在 web kubectl 中输入以下命令验证访问:

# curl {$Virtual IP}:{$Port} 或者 curl {$内网 IP}:{$NodePort}
curl 10.233.40.25:8080
Really appreaciate your star, that's the power of our life.

提示:若需要在外网访问该服务,可能需要绑定公网 EIP 并配置端口转发和防火墙规则。在端口转发规则中将 内网端口 转发到 源端口 ,然后在防火墙开放这个源端口,保证外网流量可以通过该端口,外部才能够访问。例如在 QingCloud 云平台进行上述操作,则可以参考 云平台配置端口转发和防火墙

查看推送的镜像

由于我们在容器组模板设置中设置的目标镜像仓库为 DockerHub,此时可以登录您个人的 DockerHub 查看 Source to Image 示例推送的镜像,以下验证发现 s2i-sample:latest 镜像已成功推送至 DockerHub。