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.

DevOps 工程概述

编辑

由于软件开发复杂度的增高和更多的协同工作,团队开发成员间如何更好地在协同工作中确保软件开发和交付质量,逐渐成为研发过程中不可回避的问题。众所周知,敏捷开发 (Agile) 在业内日趋流行,团队如何在不断变化的需求中快速适应和保证软件质量就变得极其重要了。而 CI/CD 就是专门为解决上述需求的软件开发实践。CI/CD 要求每次的集成都是通过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件,减轻了软件发布时的压力。

KubeSphere DevOps 特点

相较于易捷版,DevOps 工程是高级版独有的功能,针对企业实际的快速迭代和快速交付业务需求和场景,可以发现很多企业和 IT 团队都有持续集成和持续交付的需求。DevOps 工程提供 Jenkinsfile in & out of SCM 两种模式,从仓库 (SVN/Git/GitHub)、代码编译、镜像制作、镜像安全、推送到仓库、应用版本、到定时构建的端到端流水线设置,支持用户在开发、测试等环境下的端到端高效流水线能力,支持用户成员管理,同时提供完整的日志功能,记录 CI/CD 流水线的每个过程。

KubeSphere v2.1 提供的 DevOps 具有以下功能:

  • 开箱即用的 DevOps 功能,无需对 Jenkins 进行复杂的插件配置;
  • 支持 Source to Image (S2I),快速交付容器镜像;
  • 多语言代码静态检查,持续提升代码质量;
  • 独立 DevOps 工程,提供访问可控、安全隔离的 CI/CD 操作空间;
  • 兼容 Jenkinsfile in & out of SCM (Source Code Management) 两种模式;
  • 可视化流水线编辑工具,降低 CI/CD 学习成本;
  • 使用 KubeSphere 基于 Kubernetes 提供弹性、干净、可定制的构建环境。

理解 KubeSphere DevOps

KubeSphere 的 DevOps 工程目前支持 GitHub、Git 和 SVN 这一类源代码管理工具,提供可视化的 CI/CD 流水线构建,或基于代码仓库已有的 Jenkinfile 构建流水线。

软件开发的生命周期中,持续构建和发布是 IT 团队在日常工作中必不可少的步骤。但是,相比较传统的 Jenkins 集群一主多从的方式必然存在一些痛点:

  • Master 一旦发生单点故障,那么整个 CI/CD 流水线就崩溃了;
  • 资源分配不均衡,有的 Slave 要运行的 job 出现排队等待,而有的 Slave 处于空闲状态;
  • 不同的 Slave 的配置环境可能不一样,需要完成不同语言的编译打包,这类差异化的配置进一步导致管理不便,维护起来也不是一件易事。

KubeSphere 的 CI/CD 是基于底层 Kubernetes 的动态 Jenkins Slave,也就是说 Jenkins Slave 具有动态伸缩的能力,能够根据任务的执行状态进行动态创建或自动注销释放资源。实际上,Jenkins Master 和 Jenkins Slave 以 Pod 形式运行在 KubeSphere 集群的 Node 上,Master 运行在其中一个节点,并且将其配置数据存储到一个 Volume 中,Slave 运行在各个节点上,并且它不是一直处于运行状态,它会按照需求动态的创建并自动删除。

上述的工作流程可以理解为:当 Jenkins Master 接受到 Build 请求时,会根据配置的 Label 动态创建运行在 Pod 中的 Jenkins Slave 并注册到 Master 上,当这些 Slave 运行完任务后,就会被注销,并且相关的 Pod 也会自动删除,恢复到最初状态。

所以,这种动态的 Jenkins Slave 优势就显而易见了:

  • 动态伸缩,合理使用资源,每次运行任务时,会自动创建一个 Jenkins Slave,任务完成后,Slave 自动注销并删除容器,资源自动释放,而且 KubeSphere 会根据每个资源的使用情况,动态分配 Slave 到空闲的节点上创建,降低出现因某节点资源利用率高,还排队等待在该节点的情况;
  • 扩展性好,当 KubeSphere 集群的资源严重不足而导致任务排队等待时,可以很容易的添加一个 KubeSphere Node 到集群中,从而实现扩展;
  • 高可用,当 Jenkins Master 出现故障时,KubeSphere 会自动创建一个新的 Jenkins Master 容器,并且将 Volume 分配给新创建的容器,保证数据不丢失,从而达到集群服务高可用。

快速上手 CI/CD

我们提供了几篇具有代表性的示例和文档,帮助您快速上手 CI/CD。

Jenkins Agent 说明

在 DevOps 工程中,KubeSphere 使用 Kubernetes Jenkins Agent 来执行具体的构建。Agent 部分指定整个 Pipeline 或特定阶段将在 Jenkins 环境中执行的位置,具体取决于该 Agent 部分的放置位置。该部分必须在 Pipeline 块内的顶层或 Stage 内部定义,详见 Jenkins Agent 说明

添加代码仓库

在创建 Jenkinsfile in SCM 这类流水线时,可参考 添加代码仓库 选择添加 Git 或 SVN 这类代码仓库。

设置自动触发扫描

在构建已有 SCM (Source Code Management) 的流水线中,用户如果需要为流水线设置自动发现远程分支的变化,以生成新的流水线并使其自动地重新运行,可参考 设置自动触发扫描

高级设置

KubeSphere 使用了 Configuration-as-Code 进行 Jenkins 的系统设置,详见 Jenkins 系统设置

流水线常见问题

本篇文档总结了流水线运行可能遇到的问题以及如何排错,详见 流水线常见问题