公众号关注 「奇妙的 Linux 世界」

设为「星标」,每天带你玩转 Linux !

a362d6971e12db61e13c4f8870308682.png

KubeGems 是一款以围绕 Kubernetes 通过自研和集成云原生项目而构建的通用性开源 PaaS 云管理平台。经过近一年的持续迭代,当前 KubeGems 的核心功能已经初步具备多云多租户场景下的统一管理。并通过插件化的方式,在用户界面中灵活控制包括监控系统日志系统微服务治理等众多插件的启用和关闭。

作为一个面向云原生的通用型云平台,KubeGems 从立项开始就把支持多集群、多租户场景下的资源隔离作为其主要实现设计目标。用户可以对接入平台的 Kubernetes 集群做 租户级 的自定义资源规划。除此之外,我们提供了比原生 Dashboard 功能更加丰富且人性化操作的 UI 界面,让用户/企业根据自身场景规划平台元数据,而不用担心自己的业务和数据出现错乱。

同时 KubeGems 也提供过了众多丰富的功能模块来为个人或企业用户带来更好的使用体验,例如 访问控制、资源规划、网络隔离、租户网关、存储卷、可观察性、用户审计、证书管理、金丝雀发布、istio治理 等功能。

515457fb783e0d47d2f3648b9a1cbe4b.png

介绍

KubeGems 广泛的使用来自包括 云原生基金会(CNCF) 和 Istio社区 开源的产品,并在此基础上做了二次开发和适配。针对产品内部比较通用的需求,KubeGems也会及时将代码以PR的方式回馈社区,以保证产品能够与社区进行同步更新。

为更好地降低用户对云原生生态内的熟悉门槛,KubeGems 提供了专门的安装控制器对集成的三方插件进行集中管理,并以此保证我们的产品能始终如一的部署在不同方式构建的 Kubernetes 集群之上,使用户能更完整能够体验到 KubeGems 的功能。

在 v1.20.0 版本中,KubeGems 内部集成了近 30 来个服务,您可以自由选择是否启用它们。

d89be6a33f9fab496bb9d58a9a6b99da.png

安装

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 列表:

af630e517a9117a316473ad94d4f5e98.png

当部署成功后,可以在 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> 访问页面。

f10fddf94f373ea7fef4e98888e90f12.png

使用

导入集群

  • 使用 admin 账号登录 KubeGems 管理后台,点击右下角 【工具箱】 图标,进入 【系统管理】e9a3d83068110f42292fdee1f85de6da.png

  • 点击 【创建集群】,将集群的 kubeconfig 文件粘贴至文本框。

5f929f1534df60d33962edf2b7d26384.png

输入集群名称和集群容器运行时类型,勾选上 控制集群

9e6fae8402e56b3514fc10bf6a64e5f1.png

信息

控制集群不会注入 gem-insatller-manager 服务。

  • 集群导入成功,并且状态正常后,点击 【详情】进入集群信息管理页面

5348fdb552c6df8892eefd6276529a54.png

b7dcc5baa41172f98541ac1ece13bcb6.png

集群详情页包含了集群的基本状态证书信息监控指标物理资源资源类型以及使用统计等信息。

租户管理

  • 使用 admin 账号登录 KubeGems 管理后台,点击左上角【集群资源】卡片,进入【平台管理】e057697e74df58743fde248e623649d4.png

  • 点击租户列表右上角的 创建租户 按钮,创建一个名为 demo 的租户ed7d9b809e3f310b3ff81bbe4bcc3b56.png

  • 点击 demo,进入租户详情页,里面可以管理租户成员以及集群的资源配额管理07cb2d20d7fbaf41ca08223abde4cb57.png

  • 点击 添加集群资源,选择cluster-demo集群,为 demo 租户分配 8Core 16G 内存和 100G 硬盘2b1c3a099ddb11ff80493c6c8e7ed5b3.png

租户空间

  • 点击 KubeGems 顶部栏中的【工作台】进入租户空间,并点击【用户头像】可以自由切换租户空间b06cc55b6d983fd1079c90eb7fa15f7e.png

  • 点击 【创建项目】 为租户创建一个名为 demo 项目空间,并选择可以按照角色添加成员至该项目空间897b8fbaab0cad7e86c6e63955cac223.png

  • 进入 demo 项目空间,点击右上角的【创建环境】创建一个名为 demo-env 的环境空间eb90477fec2620677c61241fba40b4c1.png

注意:环境空间的删除策略为 仅删除关联 和 删除整个命名空间,它们之间的主要区别控制删除环境时,控制器的行为。

创建工作负载

  1. 创建 Deployment

  • 进入环境空间,点击左部侧边栏,选择【运行时】 - 【工作负载】,进入工作负载管理页面bbe21ad642392b1e8829430815109ceb.png

  • 点击右上角 【创建工作负载】,根据页面引导创建 deployment 资源7be8c12c97760d364a31643d6ccb2906.pnge9bf0aa0e0de24636b7c92111790b01e.png6f31cf991c738000f3545e4019b3f651.png61ce46fd4da0861278a2b7a294d7f27b.png4a2bb96c8210f836244c8dccb3e78f17.png

当 deployment 资源创建成功后可以【工作负载】和【容器组】页面内查看创建的容器资源信息。您也可以点击相关资源进入详情页浏览资源细节。

169b178a53cf90144c838b3ba7fcadd2.png

详情页提供的资源包含不限于:

  • 工作负载基本信息

  • 元数据

  • 容器状态

  • 事件

  • 监控

  1. 创建 Service

  • 进入环境空间,点击左部侧边栏,选择【运行时】 - 【服务】,进入服务管理页面,根据页面引导创建 Serivce535c5b17965c6a75714ae44130307bf3.pngcbf03ac37ee405b1e43e39ccaa0b02da.png

  1. 创建 Ingress

  • 进入环境空间,点击左部侧边栏,选择【运行时】 - 【路由】,进入服务路由管理界面,根据页面引导创建 Ingress1c1a03ee53d321b3b2c24b2ad4965985.png

  • 创建完成后点击 demo-http ,进入 ingress 详情页,在路由【路由规则】处,点击【访问】可以直接访问服务 Web 页面420bdde275c8f5c6c312265a0071260d.png

更多使用方式可查看官方文档了解更多信息: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,版权归原作者所有。欢迎投稿,投稿邮箱: editor@hi-linux.com。

ce253efaaa75acb577dc6de4391fdc87.gif

最近,我们建立了一个技术交流微信群。目前群里已加入了不少行业内的大神,有兴趣的同学可以加入和我们一起交流技术,在 「奇妙的 Linux 世界」 公众号直接回复 「加群」 邀请你入群。

4a70f53e992940b17002a4f1040b3c34.png

你可能还喜欢

点击下方图片即可阅读

5c453c5a4d0ff7a5815bfd675bc1760e.png

如何优雅升级 Kubernetes 集群的 Docker 和 Containerd 版本

3fc41761c9a75c1f6040e944a1f9122b.png
点击上方图片,『美团|饿了么』外卖红包天天免费领

d974db7b236433202cf296dbc343575b.png

更多有趣的互联网新鲜事,关注「奇妙的互联网」视频号全了解!

Logo

秉承“创新、开放、协作、共享”的开源价值观,致力于为大规模开源开放协同创新助力赋能,打造创新成果孵化和新时代开发者培养的开源创新生态!支持公有云使用、私有化部署以及软硬一体化私有部署。

更多推荐