部署基于 Web 的 Kubernetes 多集群管理平台 -- 360 Wayne

Wayne 是一个通用的、基于 Web 的 Kubernetes 多集群管理平台。通过可视化 Kubernetes 对象模板编辑的方式,降低业务接入成本, 拥有完整的权限管理系统,适应多租户场景,是一款适合企业级集群使用的发布平台。

特性

  • 基于 RBAC(Role based access control)的权限管理:用户通过角色与部门和项目关联,拥有部门角色允许操作部门资源,拥有项目角色允许操作项目资源,更加适合多租户场景。

  • 简化 Kubernetes 对象创建:提供基础 Kubernetes 对象配置文件添加方式,同时支持高级模式直接编辑 Json/Yaml文件创建 Kubernetes 对象。

  • LDAP/OAuth 2.0/DB 多种登录模式支持:集成企业级 LDAP 登录及 DB 登录模式,同时还可以实现 OAuth2 登录。

  • 支持多集群、多租户:可以同时管理多个 Kubernetes 集群,并针对性添加特定配置,更方便的多集群、多租户管理。

  • 提供完整审计模块:每次操作都会有完整的审计功能,追踪用于操作历史,同时支持用户自定义 webhook。

  • 提供基于 APIKey 的开放接口调用:用户可自主申请相关 APIKey 并管理自己的部门和项目,运维人员也可以申请全局 APIKey 进行特定资源的全局管理。

  • 保留完整的发布历史:用户可以便捷的找到任何一次历史发布,并可轻松进行回滚,以及基于特定历史版本更新 Kubernetes 资源。

  • 具备完善的资源报表:用户可以轻松获取各项目的资源使用占比和历史上线频次(天级)以及其他基础数据的报表和图表。

  • 提供基于严密权限校验的 Web shell:用户可以通过 Web shell 的形式进入发布的 Pod 进行操作,自带完整的权限校验。

  • 提供站内通知系统:方便管理员推送集群、业务通知和故障处理报告等。

架构

wayne

部署 Wayne

下载相关文件并部署

Wayne 依赖 MySQL 和 RabbitMQ,其中 MySQL 是必须的服务,用户存储系统的各种数据,RabbitMQ 是可选的,主要用户扩展审计功能使用。

这里使用了 ceph 进行数据持久化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# git clone https://github.com/Qihoo360/wayne.git
# cd wayne/hack/kubernetes/

# vim dependency/mysql-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-wayne-pvc
namespace: default
labels:
app: mysql-wayne
spec:
storageClassName: default-rbd
accessModes:
- ReadWriteOnce
resources:
requests:
storage: "10Gi"

# vim dependency/rabbitmq-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: rabbitmq-wayne-pvc
namespace: default
labels:
app: rabbitmq-wayne
spec:
storageClassName: default-rbd
accessModes:
- ReadWriteOnce
resources:
requests:
storage: "5Gi"

# kubectl apply -f dependency/
persistentvolumeclaim/mysql-wayne-pvc created
deployment.extensions/mysql-wayne created
service/mysql-wayne created
persistentvolumeclaim/rabbitmq-wayne-pvc created
deployment.extensions/rabbitmq-wayne created
service/rabbitmq-wayne created
# kubectl get pod
NAME READY STATUS RESTARTS AGE
mysql-wayne-75947575d-mc972 1/1 Running 0 107s
rabbitmq-wayne-7c6dd8f475-l4pqj 1/1 Running 0 106s

# kubectl apply -f wayne/
configmap/infra-wayne created
deployment.extensions/infra-wayne created
deployment.extensions/infra-wayne-woker created
deployment.extensions/infra-wayne-webhook created
service/infra-wayne created
# kubectl get pod
NAME READY STATUS RESTARTS AGE
infra-wayne-5d84cf49b4-lggzs 1/1 Running 0 7m44s
infra-wayne-webhook-85dcf87c48-w4tcj 1/1 Running 0 7m44s
infra-wayne-woker-84bff6f8c9-mt7h5 1/1 Running 0 7m44s

现在可以通过 http://yourip:NodePort 访问 Wayne 平台,默认管理员账号 密码admin:admin。

注: 项目启动后还需要配置集群和 Namespace 等信息才可正常使用。

配置集群和 Namespace

配置集群

进入后台创建集群并将 .kube/config 复制并粘贴至该集群下

1
# cat .kube/config

kubeconfig

配置 namespace

在 wayne 后台创建命名空间(需在 kubernetes 集群中进行创建,然后与 wayne 进行绑定)

1
2
# kubectl create namespace test
namespace/test created

namespaces

查看资源状况

all

配置完成,在左侧边栏的 kubernetes 菜单栏可以查看当前集群的相关 node 信息、deployment 信息以及 PV 信息。

应用 Wayne

创建项目

返回前台,切换至当前集群的选项卡”创建项目”

app

创建部署

进入该项目部署页“创建部署”进行部署,之后“创建部署模板”,之后点击“发布”,在弹出的选择框中选择需要部署的机房并“确认”即可部署到kubernetes。

deployment

部署成功后,可以选择“重启”、“下线”:

pod1

点击上线机房,通过弹出的选择框可以“进入容器”、“查看日志”:

pod2

创建负载均衡

点击该项目下左侧边栏的“负载均衡”项,之后“创建负载均衡”,配置“名称”和“机房”并提交。之后“创建负载均衡模板”,之后点击“发布”,在弹出的选择框中选择需要部署的机房并“确认”即可部署到kubernetes。

service

创建ingress

点击该项目下左侧边栏的“ingress”项,之后“创建ingress”,配置“名称”和“机房”并提交。之后“创建ingress模板”,之后点击“发布”,在弹出的选择框中选择需要部署的机房并“确认”即可部署到kubernetes。

ingress

确认部署情况

nginx

注: 这里使用了 https 是因为我之前部署了 TLS 认证的 traefik。

  • 更多详情请访问 Wayne 官方 wiki: wayne
ZhiJian wechat
欢迎您扫一扫上面的二维码,订阅我的微信公众号!
-------------本文结束,感谢您的阅读-------------