kubernetes-x/Yaml文件/KubeGems简介.md

313 lines
16 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<h1><center>KubeGems简介</center></h1>
------
**作者:行癫<盗版必究>**
## 一KubeGems简介
KubeGems 是一款开源的企业级多租户容器云平台。围绕云原生社区KubeGems 提供了多 Kubernetes 集群接入能力,并具备丰富的组件管理和资源成本分析功能,能够帮助企业快速的构建和打造一个本地化、功能强大且低成本的云管理平台
<img src="D:\行癫kubernetes\KubeGems\KubeGems简介.assets\image-20220828200846527.png" alt="image-20220828200846527" style="zoom:50%;" />
#### 1.KubeGems生态
KubeGems广泛的使用来自包括 云原生基金会CNCF) 和 Istio社区 开源的产品,并在此基础上做了二次开发和适配
为更好的降低用户对云原生生态内的熟悉门槛KubeGems提供了专门的安装控制器对集成的三方插件进行集中管理
部署在不同方式构建的Kubernetes集群之上使用户能更完整能够体验到KubeGems的功能
<img src="D:\行癫kubernetes\KubeGems\KubeGems简介.assets\image-20220828201129007.png" alt="image-20220828201129007" style="zoom:50%;" />
#### 2.产品架构
KubeGems 采用前后端分离的架构设计,后端通过 gems-service服务对外部提供 Rest API同时内部实现对个模块的集成与封装
通过 gems-controller 服务对 kubernetes 的资源进行管理,已实现实现操作不同基础设施的集群
依托Kubernetes架构KubeGems 无底层基础设施依赖,它可以在任何遵循带有 Kubernetes一致性认证 的平台上运行
<img src="D:\行癫kubernetes\KubeGems\KubeGems简介.assets\image-20220828201357167.png" alt="image-20220828201357167" style="zoom:50%;" />
<img src="D:\行癫kubernetes\KubeGems\KubeGems简介.assets\image-20220828201408818.png" alt="image-20220828201408818" style="zoom:50%;" />
#### 3.组件列表
gems-dashbaordKubeGems 用户管理界面,用户在上面可以完成平台支持的所有功能操作
gems-serviceKubeGems 核心服务负责管理API 接口和集群内部各个模块之间通信的枢纽,以及集群安全、审计控制
gems-msgbusKubeGems 实时消息服务负责处理前端对Kubernetes实时性较强的业务逻辑
gems-workerKubeGems 异步任务服务,负责执行系统的后台异步任务
gems-agentKubeGems 集群Agent负责处理平台业务逻辑直接与 Kubernetes API通信
gems-controller-managerKubeGems Operator负责完成 Kubernetes 的 CRD 与 Webhook 的处理
gems-installer-managerKubeGems Operator负责完成 KubeGems 产品的部署与 Kubernetes 初始化
nginx-ingress-operatorNginx Ingress Operator负责提供KubeGems产品多租户独立网关的能力
cert-managerKubernetes 证书管理套件负责处理平台内TLS证书的自动管理
prometheus-operatorkubernetes 监控控制器为KubeGems提供主机、容器、微服务等监控告警等功能
logging-operatorkubernetes 监控控制器为KubeGems提供容器日志采集等功能
grafana开源的监控指标展示平台为KubeGems提供指标展示的扩展
fluentd日志采集客户端具备丰富灵活的插件配置为KubeGems提供主机、容器的日志采集
loki云原生日志分析服务为KubeGems提供日志存储、查询和分析服务
helm一种应用容器打包和部署标准为KubeGems提供应用商店接入的能力
kustomize一种应用容器编排的方法为KubeGems提供用户应用编排的能力
argocd一套开源实现ci/cd流程的系统为KubeGems提供用户CD的部署能力
istio服务网格为KubeGems提供微服务治理和流量管控的能力
jaeger应用分布式链路跟踪服务为Sidecar和应用提供数据接受的服务
calicoKubernetes容器组网服务负责容器间通信和网络隔离策略管理
## 二:功能介绍
#### 1.多租户管理
在 KubeGems 中,资源(例如集群)可以在租户之间共享。管理员或运维人员掌握了平台内不同的用户角色的权限设置。普通用户在环境空间对各种计算资源进行操作。基础设施层上的计算资源由 **KubeGems管理员** 集中管理和分配,由于 KubeGems 在租户层面实现了资源的隔离,因此用户不必担心计算资源分配额度以及资源竞争问题
角色身份: 内置多身份类型,平台内用户可按照角色进行授权
多认证方式: 平台内置用户账号认证同时也支持OpenLdap、GitLab、GitHub和遵循 Oauth2.0 协议的第三方用户系统
成员管理: 普通用户与租户(空间),项目(空间),环境(空间) 进行关联,可为空间做精细化的成员管理
网络隔离: 支持基于 Calico 模式下的网络策略管理,在平台内部为租户在基于租户、项目、环境实现网络隔离的策略分发
KubeGems的租户控制主要在Tenant和Enviroments两个CRD中实现管理里面分别定义了租户以及环境包含项目等信息
##### CostomResourceDefinition
KubeGems通过自定义 CRD(Custom Resource Definitions) 将租户资源抽象为5个类型进行统一管理
Tenant (租户)
Enviroments (环境)
TenantResourceQuotas (资源)
TenantGateways (网关)
TenantNetworkPolicys (网络策略)
<img src="D:\行癫kubernetes\KubeGems\KubeGems简介.assets\image-20220828202450109.png" alt="image-20220828202450109" style="zoom:50%;" />
##### 相关术语
| 术语 | 解释 |
| :-----------------: | :----------------------------------------------------------: |
| 用户User | KubeGems 上一个可登录的用户,用户的权限可以是平台管理员租户或者普通用户,用户的角色可以由各级管理员进行控制。 |
| 应用Application | 部署在 KubeGmes 的一个应用它可以是一个进程或进程组通常它等同于Pods。应用是 KubeGems 上最小的部署单元 |
| 环境Enviroments | KubeGems 应用部署的在 Kubernets 上一个命名空间,它等同于 Namespaces |
| 项目Project | KubeGems 内多个环境组成的一个抽象集合项目下的环境可以分布在多个Kubernets集群也可以分布在一个Kubernetes集群内 |
| 集群Cluster | 一个Kubernetes集群 |
| 租户Tenant | KubeGems 上服务用户的主体单位,用户的计算资源运行在租户空间内,它与平台内的其他租户共享 Kubernetes 资源 |
##### Kubernetes集群关系
<img src="D:\行癫kubernetes\KubeGems\KubeGems简介.assets\image-20220828202725950.png" alt="image-20220828202725950" style="zoom:50%;" />
##### 用户角色说明
| 角色 | 类别 | 说明 |
| :--------: | :--: | :--------------------------------: |
| 系统管理员 | 系统 | 可以操作系统所有的资源,用户,租户 |
| 系统成员 | 系统 | 没有任何系统级别的权限 |
| 租户管理员 | 租户 | 可以操作租户下所有资源 |
| 租户成员 | 租户 | 只能看到自己参与的项目 |
| 项目管理员 | 项目 | 可以操作项目下的所有资源 |
| 项目测试 | 项目 | 仅可以操作测试属性的环境 |
| 项目研发 | 项目 | 仅可以操作研发属性的环境 |
| 项目运维 | 项目 | 可以操作所有环境 |
| 环境成员 | 环境 | 只可以查看环境下的资源 |
| 环境管理员 | 环境 | 可以操作环境下的资源 |
#### 2.集群部署与资源管理
KubeGems 支持对接多套 Kubernetes 集群,并可以通过自身 Operator 完成集群的安装任务无论您是采用裸金属部署的Kubernetes还是由公有云厂家托管的Kubernetes它们都能运行 Agent 服务并接入到中心集群进行管理
<img src="D:\行癫kubernetes\KubeGems\KubeGems简介.assets\mutil-cluster-5374431bf4eff4d5cacf2b8e4d3169a6.jpg" alt="img" style="zoom:50%;" />
##### 多种网络方案接入
支持Calico、Flannel 和 KubeOvn 等开源的网络解决方案
##### 多种存储方案接入
支持开源存储解决方案例如GlusterFS、CephRBD、OpenEBS 和Longhorn等存储系统
支持其他商业存储以CSI插件方式连接到KubeGems平台中的各种块存储服务
<img src="D:\行癫kubernetes\KubeGems\KubeGems简介.assets\image-20220829211207755.png" alt="image-20220829211207755" style="zoom:50%;" />
##### 计算资源管理
gems-service服务于维护了 Kubernetes 集群资源的使用统计和注册。当 Kubernetes 集群在 KubeGems 平台上成功导入gems-agent便会被推送到kubernetes集群内运行并将集群资源上报给 service交由用户在 KubeGems 后端进行资源的分配
![img](D:\行癫kubernetes\KubeGems\KubeGems简介.assets\cluster-resources-2928a8677bfbff980f9ad90446a48a2c.jpg)
KubeGems提供了多维度的集群资源管理配置功能
资源超分: 支持 Kubernetes 集群资源超分规划更好的提高集群资源使用率降低IT成本
资源管理: 支持对租户空间内的资源进行扩容、监控等管理
细粒度资源控制: 基于ResouceQuota和LimitRange对用户环境空间内各应用进行细粒度资源的控制
资源智能分析: KubeGems 根据用户过去的时间周期,在后台离线为用户资源进行资源使用率分析,并推荐用户进行资源调整
灵活分配: 租户可以在 KubeGems 内提交资源工单,并在平台内部扭转给后台管理员进行审批和分配
#### 3.应用管理
在KubeGems中应用是一等公民其内部的功能大都以围绕应用管理展开。KubeGems内定义了两种应用管理渠道分别是应用商店和用户编排
##### 应用商店
KubeGems 内部提供了一个基于Helm v3的应用仓库里面集成了众多的定制中间件应用。除此之外应用商店还提供了额外的功能
多仓库支持: 无缝对接外部 Helm 仓库,并自动离线同步到本地
人性化定制: 用户可以通过填写应用表单或者编写Values文件方式灵活定制自己的应用
资源可视化: 用户可以在应用详情中对应用拓扑结构和生命周期进行完整管理
![img](D:\行癫kubernetes\KubeGems\KubeGems简介.assets\appstore-c62985ea23194fde36ffe54c7f077542.jpg)
##### 应用管理和编排
应用中心为用户/企业提供了私有化应用的编排和管理在KubeGems内部我们提供了以Kustomize风格的应用编排方式用户只需在平台的界面上就可以自主进行 kubernetes 的资源编排
可视化编排: Kustomize风格的应用编排方式
版本化管理: KubeGems内置GitOps引擎为应用编排提供版本变更的追踪、回滚和历史等高级功能
镜像安全: 支持对用户镜像进行CVE漏洞分析和风险等级报告 需对接 Harbor
应用管理: 提供用户应用完整的生命周期管理
灵活发布: 应用编排可灵活推送到用户环境,并提供一键批量部署
##### 策略部署
金丝雀发布:
自定义流量比例: 可根据用户定义的流量比例进行发布
自定义灰度策略: 根据用户请求头(header) 、路径url和进行流量比例分配
应用监控分析: 灰度过程中全程监控应用请求的状态,用户可根据灰度监控数据进行流程控制
![img](D:\行癫kubernetes\KubeGems\KubeGems简介.assets\gray-deploy-2c57905f5b501b73ac06a003b2163bc5.jpg)
蓝绿发布:
双重资源保障: 控制蓝绿两个版本的应用容量,避免出现雪球效应
操作简洁: 一键完成应用蓝绿部署
应用监控: 蓝绿过程中全程监控应用请求的状态,可根据应用监控数据进行流程控制
![img](D:\行癫kubernetes\KubeGems\KubeGems简介.assets\blue-green-60723dc76833478aeee8d86d4ecea9ef.jpg)
#### 4.可观察性
##### 监控与告警
![img](D:\行癫kubernetes\KubeGems\KubeGems简介.assets\observability-monitoring-356abca7222c19befc82a8c278d88c60.jpg)
多维度监控: KubeGems 内置了对主机、Kubernetes集群、容器和中间件等服务的监控模板通过内置的查询器为用户提供精细化的监控
自定义告警策略和规则: 支持多租户模式下的监控指标采集,用户可自定义被监控应用的指标采集策略,如监控端口,请求路径、频率等信息
兼容 Prometheus KubeGems 采用 Prometheus Operator可与用户现有环境无缝集成
平台组件状态: KubeGems 集成了内部组件和 Kubernetes 三方组件状态的监控,避免因平台组件故障造成的不必要停机
自定义告警策略和规则: 支持租户模式下的监控指标采集策略,用户可根据监控模板自助设定告警策略
丰富的阈值规则: 支持用户在告警规则中设置告警事件的重复时间、持续时间、告警级别、黑名单等功能
分级告警: 支持用户自定义的告警级别,并进行分级告警,避免无效告警
历史跟踪: KubeGems 为每一条告警记录都设置了详情页,里面完整记录了该规则自创建以来发生的每一次事件,为用户提供告警事件的回溯
告警渠道: 支持 邮件(SMTP协议) 和 Webhook 两种渠道告警
告警实时通知: KubeGems 内置的实时消息组件,在发生告警时可将内容实时推送到用户界面
##### 日志与分析
![img](D:\行癫kubernetes\KubeGems\KubeGems简介.assets\observability-logging-0d094d03e1d3d7e07e612975234fe44f.jpg)
日志采集管理: 支持多租户模式下的日志采集管理,利用 CRD 可在租户空间内进行自定义控制容器日志采集和解析规则
标签化查询语句: 注入多维度的日志标签(项目、环境、容器组、应用、集群等关键字),用户可以灵活查询或者实时分析日志
日志告警: 支持关键字过滤,可以在用户应用发生告警时通知到运维、研发等同事
多种日志收集平台: 支持多种日志收集平台,例如 Elasticsearch、Loki、Kafka、S3 等
高性能和水平扩展: 采用 FluenBit/d 分级架构,满足日志高吞吐情况下,汇聚层 水平扩展 以提高采集吞吐量
#### 5.基于Istio的微服务网格
##### 服务治理
![img](D:\行癫kubernetes\KubeGems\KubeGems简介.assets\service-mesh-3560e46a2a4e8cb7c37c013f7eb37acc.jpg)
##### 流量管理
负载均衡: 为 HTTP、gRPC、WebSocket 和 TCP 流量自动负载均衡
访问控制: 支持丰富的路由规则、重试、故障转移和故障注入对流量行为进行细粒度控制
流量控制: 可插拔的策略层和配置 API支持访问控制、速率限制和配额
##### 安全
丰富的认证策略: 使用 peer 和 request 认证策略为在 Istio 网格中接收请求的工作负载指定认证
自定义应用授权: 支持基于 RBAC 的应用权限控制
公钥基础设施 (PKI): 使用 X.509 证书为每个工作负载都提供 tls 双向认证
##### 可观察性
应用指标: 基于 4 个监控的黄金标识(延迟、流量、错误、饱和)生成了一系列服务指标
分布式追踪: 为每个服务生成分布式追踪 span对网格内的服务调用进行追踪
访问日志: 记录应用流量生成请求的完整记录,包括源和目标的元数据
##### 微服务网关
![img](D:\行癫kubernetes\KubeGems\KubeGems简介.assets\api-gateway-basic-8a339807cfee4e457d06768c8d29702a.jpg)
KubeGems 内置微服务网关控制器,以支持应用南北向流量的代理,网关类型分为基础版(Basic Nginx)和微服务版(Mesh Istio)
基础版网关:
租户独占网关: 每个租户可创建独占的 ingress 网关,通过 class 方式关联 ingress 资源
应用路由管理: 支持 TCP/UDP, HTTP/HTTPS, GRPC/HTTP2.0 等协议的支持和路由转发
流量负载均衡: 支持对 ingress 关联的上游 pod 进行流量负载均衡
访问监控:支持以 Prometheus 的方式暴露内部监控指标