KubeGems: 一款超强大面向云原生的通用开源 PaaS 管理平台,支持 Argo CD、Istio 等 30+ 开源服务
KubeGems 是一款以围绕 Kubernetes 通过自研和集成云原生项目而构建的通用性开源 PaaS 云管理平台。经过近一年的持续迭代,当前 KubeGems 的核心功能已经初步具备多云多租户场景下的统一管理。并通过插件化的方式,在用户界面中灵活控制包括监控系统、日志系统、微服务治理等众多插件的启用和关闭。
作为一个面向云原生的通用型云平台,KubeGems 从立项开始就把支持多集群、多租户场景下的资源隔离作为其主要实现设计目标。用户可以对接入平台的 Kubernetes 集群做 租户级 的自定义资源规划。除此之外,我们提供了比原生 Dashboard 功能更加丰富且人性化操作的 UI 界面,让用户/企业根据自身场景规划平台元数据,而不用担心自己的业务和数据出现错乱。
同时 KubeGems 也提供过了众多丰富的功能模块来为个人或企业用户带来更好的使用体验,例如 访问控制、资源规划、网络隔离、租户网关、存储卷、可观察性、用户审计、证书管理、金丝雀发布、istio治理 等功能。
介绍
KubeGems 广泛的使用来自包括 云原生基金会(CNCF) 和 Istio社区 开源的产品,并在此基础上做了二次开发和适配。针对产品内部比较通用的需求,KubeGems也会及时将代码以PR的方式回馈社区,以保证产品能够与社区进行同步更新。
为更好地降低用户对云原生生态内的熟悉门槛,KubeGems 提供了专门的安装控制器对集成的三方插件进行集中管理,并以此保证我们的产品能始终如一的部署在不同方式构建的 Kubernetes 集群之上,使用户能更完整能够体验到 KubeGems 的功能。
在 v1.20.0 版本中,KubeGems 内部集成了近 30 来个服务,您可以自由选择是否启用它们。
安装
KubeGems Installer Operator 是一个通过 Operator SDK 构建的 Ansible Kubernetes 控制器。通过 CRD 中的定义的字段对 Ansible 进行变量传递。Installer Operator 的运行需要具备集群管理员的 RBAC 权限,所以在部署前需要联系您的集群管理员,以保证有足够的授权执行以下操作。
首先使用如下所示命令安装 KubeGems Installer 控制器:
KUBEGEMS_VERSION=v1.20.0-beta.1
kubectl apply -n kubegems-installer -f \
https://github.com/kubegems/installer-operator/releases/download/${KUBEGEMS_VERSION}/centrol.yaml
CRD 与控制器部署完成后就可以开始创建 installer 对象进行安装:
kubectl apply -f https://github.com/kubegems/installer-operator/releases/download/${KUBEGEMS_VERSION}/centrol.installer.yaml
KubeGems 部署完成后,正常会有如下所示的 Pod 列表:
当部署成功后,可以在 gemcloud-gateway-system
命名空间下找到一个名叫 deftault-gateway
的网关,它由 KubeGems 自动创建。
kubectl get pod -n gemcloud-gateway-system
NAME READY STATUS RESTARTS AGE
default-gateway-5bcb8bc59c-2fcq4 1/1 Running 0 7d7h
nginx-ingress-operator-controller-manager-56bcddd997-kbjqw 2/2 Running 0 7d7h
kubectl get svc -n gemcloud-gateway-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default-gateway NodePort 10.102.206.7 <none> 80:32717/TCP,443:30557/TCP 7d7h
nginx-ingress-operator-controller-manager-metrics-service ClusterIP 10.96.47.121 <none> 8443/TCP 7d8h
nginx-ingress-operator-metrics ClusterIP 10.111.159.25 <none> 9113/TCP 7d8h
可以再创建一条 ingress 规则将 kubegems dashboard 服务暴露出来,如下所示:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: gems-dashboard
namespace: gemcloud-system
annotations:
nginx.org/proxy-buffering: "false"
nginx.org/websocket-services: gems-dashboard
spec:
rules:
- host: console.kubegems.io
http:
paths:
- backend:
serviceName: gems-dashboard
servicePort: 8000
path: /
pathType: ImplementationSpecific
此时,您需要将域名 console.kubegems.io
解析到 Kubernetes 集群内任意节点后,即可通过 http://console.kubegems.io:<NodePort>
访问页面。
使用
导入集群
使用
admin
账号登录 KubeGems 管理后台,点击右下角 【工具箱】 图标,进入 【系统管理】点击 【创建集群】,将集群的
kubeconfig
文件粘贴至文本框。
输入集群名称
和集群容器运行时类型,勾选上 控制集群
。
信息
控制集群不会注入 gem-insatller-manager
服务。
集群导入成功,并且状态正常后,点击 【详情】进入集群信息管理页面
集群详情页包含了集群的基本状态
、证书信息
、监控指标
、物理资源
、资源类型
以及使用统计
等信息。
租户管理
使用
admin
账号登录 KubeGems 管理后台,点击左上角【集群资源】卡片,进入【平台管理】点击租户列表右上角的
创建租户
按钮,创建一个名为 demo 的租户点击 demo,进入租户详情页,里面可以
管理租户成员
以及集群的资源配额管理
点击 添加集群资源,选择
cluster-demo
集群,为 demo 租户分配 8Core 16G 内存和 100G 硬盘
租户空间
点击 KubeGems 顶部栏中的【工作台】进入租户空间,并点击【用户头像】可以自由切换租户空间
点击 【创建项目】 为租户创建一个名为 demo 项目空间,并选择可以按照角色添加成员至该项目空间
进入 demo 项目空间,点击右上角的【创建环境】创建一个名为 demo-env 的环境空间
注意:环境空间的删除策略为
仅删除关联
和删除整个命名空间
,它们之间的主要区别控制删除环境时,控制器的行为。
创建工作负载
创建 Deployment
进入环境空间,点击左部侧边栏,选择【运行时】 - 【工作负载】,进入工作负载管理页面
点击右上角 【创建工作负载】,根据页面引导创建 deployment 资源
当 deployment
资源创建成功后可以【工作负载】和【容器组】页面内查看创建的容器资源信息。您也可以点击相关资源进入详情页浏览资源细节。
详情页提供的资源包含不限于:
工作负载基本信息 元数据 容器状态 事件 监控
创建 Service
进入环境空间,点击左部侧边栏,选择【运行时】 - 【服务】,进入服务管理页面,根据页面引导创建 Serivce
创建 Ingress
进入环境空间,点击左部侧边栏,选择【运行时】 - 【路由】,进入服务路由管理界面,根据页面引导创建
Ingress
创建完成后点击 demo-http ,进入 ingress 详情页,在路由【路由规则】处,点击【访问】可以直接访问服务 Web 页面
更多使用方式可查看官方文档了解更多信息:https://www.kubegems.io/。另外官方也提供了一个在线的 Demo 体验地址:https://demo.kubegems.io,账号 admin,密码 demo!@#admin。
GitHub 仓库:https://github.com/kubegems/kubegems
本文转载自:「Github爱好者」,原文:https://url.hi-linux.com/Vn7vw,版权归原作者所有。