https://www.kubegems.io

https://github.com/kubegems

概述

KubeGems是一款以围绕 Kubernetes 通过自研和集成云原生项目而构建的通用性开源 PaaS 云管理平台。经过我们内部近一年的持续迭代,当前 KubeGems 的核心功能已经初步具备多云多租户场景下的统一管理。并通过插件化的方式,在用户界面中灵活控制包括 监控系统、日志系统、微服务治理 等众多插件的启用和关闭。
作为一个面向云原生的通用型云平台,KubeGems 从立项开始就把支持多集群、多租户场景下的资源隔离作为其主要实现设计目标。用户可以对接入平台的 Kubernetes 集群做 租户级 的自定义资源规划。除此之外,我们提供了比原生 Dashboard 功能更加丰富且人性化操作的 UI 界面,让用户/企业根据自身场景规划平台元数据,而不用担心自己的业务和数据出现错乱。同时 KubeGems 也提供过了众多丰富的功能模块来为个人或企业用户带来更好的使用体验,例如 访问控制、资源规划、网络隔离、租户网关、存储卷、可观察性、用户审计、证书管理、金丝雀发布、istio治理 等功能。
image.png

image.png

部署

Installation

  1. KUBEGEMS_VERSION=v1.20.0-beta.1
  2. wget -O- https://github.com/kubegems/installer-operator/releases/download/${KUBEGEMS_VERSION}/centrol.yaml \
  3. | sed "s#image: kubegems#image: registry.cn-beijing.aliyuncs.com/kubegems#g" \
  4. | kubectl apply -f -
  1. wget -O - https://github.com/kubegems/installer-operator/releases/download/${KUBEGEMS_VERSION}/centrol.installer.yaml \
  2. | sed "s#repository: docker.io#repository: registry.cn-beijing.aliyuncs.com#g" \
  3. | kubectl apply -f -

查看容器状态

  1. kubectl get pod --all-namespaces |grep gems

使用默认网关访问 gems-dashboard

  1. apiVersion: extensions/v1beta1
  2. kind: Ingress
  3. metadata:
  4. annotations:
  5. nginx.org/proxy-buffering: "false"
  6. nginx.org/websocket-services: gems-dashboard
  7. name: gems-dashboard
  8. namespace: gemcloud-system
  9. spec:
  10. ingressClassName: default-gateway
  11. rules:
  12. - host: console.kubegems.io
  13. http:
  14. paths:
  15. - backend:
  16. serviceName: gems-dashboard
  17. servicePort: 8000
  18. path: /
  19. pathType: ImplementationSpecific

查看默认网关端口

  1. kubectl get svc -n gemcloud-gateway-system

将域名console.kubegems.io解析到 Kubernetes 集群内任意节点后,即可通过
http://console.kubegems.io: 访问登陆界面

创建租户

1 登陆账户 admin 密码 demo!@#admin
1651633658(1).png

2 平台管理—-创建集群

image.png
image.png
image.png
image.png
image.png
image.png

3 平台管理—-租户
image.png
添加成员
image.png
添加集群
image.png
4 工作台—-添加项目
image.png
image.png
5 工作台—-创建环境
image.png
6 应用部署
image.png
7 资源管理
image.png
8017d951c10d9f58934d712729c113d.png
1651642313.png

Delete/Re-deploy KubeGems

  1. kubectl scale --replicas=0 deploy/kubegems-installer-manager -n kubegems-installer
  2. kubectl delete mutatingwebhookconfigurations gems-mutating-webhook-configuration
  3. kubectl delete validatingwebhookconfigurations gems-validating-webhook-configuration
  4. kubectl delete ClusterRoleBinding `kubectl get ClusterRoleBinding|grep gems|awk -F " " '{print$1}'`
  5. kubectl delete ClusterRole `kubectl get ClusterRole|grep gems|awk -F " " '{print$1}'`
  6. kubectl delete ns gemcloud-gateway-system
  7. kubectl delete ns gemcloud-logging-system
  8. kubectl delete ns gemcloud-monitoring-system
  9. kubectl delete ns gemcloud-workflow-system
  10. kubectl delete ns gemcloud-system
  11. kubectl delete ns kubegems-installer

如果您的命名空间卡在终止状态。请阅读此内容以强制删除。
https://computingforgeeks.com/how-to-force-delete-a-kubernetes-namespace

  1. kubectl get namespace local-path-storage -o json \
  2. | tr -d "\n" | sed "s/\"finalizers\": \[[^]]\+\]/\"finalizers\": []/" \
  3. | kubectl replace --raw /api/v1/namespaces/local-path-storage/finalize -f -
  • 删除 KubeGems CRD(可选)
    1. kubectl delete crd environments.gems.kubegems.io
    2. kubectl delete crd tenantgateways.gems.kubegems.io
    3. kubectl delete crd tenantnetworkpolicies.gems.kubegems.io
    4. kubectl delete crd tenantresourcequotas.gems.kubegems.io
    5. kubectl delete crd tenants.gems.kubegems.io