360团队 临时目录的原始文件不是360合法文件_安装并使用360开源的kubernetes dashboard wayne...

Wayne是一个基于Web的Kubernetes多集群管理平台,支持1.15.x版本,用于降低业务接入成本。采用Angular前端和Beego后端,提供完整的权限管理。本文档介绍了Wayne的安装过程,包括数据库配置、前后端服务安装、集群和命名空间的创建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意:目前只支持的kubernetes版本为1.15.x ,高版本能使用,但是会有部分资源无法显示。目前官方暂无支持高版本的计划日期。

简介

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

Wayne 已大规模服务于 360 搜索,承载了内部绝大部分业务,稳定管理了近千个业务,上万个容器,运行了两年多时间,经受住了生产的考验。

命名的起源:360 搜索私有云团队多数项目命名都来源于 DC 漫画的角色,Wayne 也不例外,Wayne 是声名显赫的超级英雄蝙蝠侠 Bruce Wayne 的名字。

59828affcb02ba287ee2014b902e8bba.png

项目地址:https://github.com/Qihoo360/wayne.git

架构图

整体采用前后端分离的方案,其中前端采用 Angular 框架进行数据交互和展示,使用 Ace 编辑器进行 Kubernetes 资源模版编辑。后端采用 Beego 框架做数据接口处理,使用 Client-go 与 Kubernetes 进行交互,数据使用 MySQL 存储。

[dc38adea816ba21c744b3465d88f103b.png

Wayne 平台涉及到的基本概念如下:

WayneKubernetes
部门Namespace, 为 Kubernetes 集群提供虚拟的隔离作用,详细参考 Namespace 。Wayne 的部门可以对应 Kubernetes 的任意 Namespace, 具体参见配置文档。
项目无 Kubernetes 对应概念。是 Wayne 平台为了组织 Kubernetes 的资源虚拟出来的概念。项目下可以包含 Kubernetes 的资源,例如 Deployment,Service 等
部署Deployment,您在 Deployment 对象中描述了所需的状态,Deployment 控制器以受控速率将实际状态更改为所需状态。详细参考 Deployment 。
状态副本集StatefulSet,用来管理有状态应用,可以保证部署和 scale 的顺序,详细参考 StatefulSet 。
守护进程集DaemonSet,保证在每个 Node 上都运行一个容器副本,常用来部署一些集群的日志、监控或者其他系统管理应用,详细参考 Daemonset 。
计划任务CronJob,Job负责批处理任务,即仅执行一次的任务,它保证批处理任务的一个或多个容器成功结束。CronJob是基于调度的Job执行将会自动产生多个job,调度格式参考Linux的cron系统,详细参考 CronJob 。
负载均衡Service,Kubernetes Service 是一个抽象,它定义了一组逻辑 Pod 和一个访问它们的策略。详细参考 Service 。
路由Ingress,是用来聚合集群内服务的方式,对应的是 Kubernetes 的 Ingress 资源,后端使用了 Nginx Controller 来处理具体规则。Ingress 可以给 service 提供集群外部访问的 URL、负载均衡、SSL termination、HTTP 路由等。详细参考 Ingress 。
配置集ConfigMap,存放应用的配置信息。详细参考 ConfigMap
加密字典Secret,存放一些敏感配置,例如密码,证书等信息。详细参考 Secret
存储索取PersistentVolumeClaim(PVC),满足用户对于持久化存储的需求,用户将 Pod 内需要持久化的数据挂载至存储卷,实现删除 Pod 后,数据仍保留在存储卷内。

安装

克隆项目

 git clone https://github.com/Qihoo360/wayne.git[root@master01 kubernetes]# pwd/root/k8s/wayne/hack/kubernetes[root@master01 kubernetes]# lsmysql.yaml  wayne-backend.yaml  wayne-frontend.yaml

安装数据库

Wayne 依赖 MySQL ,其中 MySQL 是必须的服务,用户存储系统的各种数据。

 kubectl apply -f hack/kubernetes/mysql.yaml

默认数据未进行持久化,实际使用需要数据持久化,避免数据丢失

数据库初始化

  • 自动初始化(推荐)

Wayne 启动会自动创建数据库并初始化数据,使用自动初始化数据库的方式请勿手动创建数据库,否则系统检测到数据库已存在会跳过数据初始化步骤!

  • 手动初始化

如果您的环境不允许自动创建数据库,可以使用手动初始化数据的方式。

1.创建数据库

 CREATE DATABASE `wayne` CHARACTER SET utf8 COLLATE utf8_general_ci;

2.生成创建表结构 SQL

 make sqlall

3.生成数据库初始化 SQL

 make initdata

安装backend服务

在 hack/kubernetes/wayne-backend.yaml 中按照配置文档配置好Configmap相关的信息(例如数据库链接等信息)

如果使用的是hack/kubernetes/mysql.yaml 中启动的 MySQL,可以暂时不修改配置文件。默认配置文件中通过集群内部域名访问 MySQL。

 kubectl apply -f hack/kubernetes/wayne-backend.yaml

tarefik代理backend服务,注意这里一定要用https 不然访问前端时前端请求后端页面报错如下

 apiVersion: traefik.containo.us/v1alpha1kind: IngressRoutemetadata:  name: wayne-backend  namespace: waynespec:  entryPoints:    - websecure  routes:    - match: Host(`wayne-backend.baixue.fun`)      kind: Rule      services:        - name: wayne-backend          port: 8080  tls:    certResolver: myresolver

b28b1858e7dfa09bb1040977bd1387f3.png

由于前后端使用 JWT Token 通信,生产环境一定要重新生成 RSA 文件,确保安全,测试使用可以忽略该步骤。生成 RSA 加密对命令如下:

 $ ssh-keygen -t rsa -b 2048 -f jwtRS256.key$ # Don't add passphrase$ openssl rsa -in jwtRS256.key -pubout -outform PEM -out jwtRS256.key.pub

这个文件默认位于容器的/opt/wayne/apikey 目录下,实际使用我们可能需要挂载到该目录下,具体由配置文件中该段定义:

 RsaPrivateKey = "./apikey/rsa-private.pem"RsaPublicKey = "./apikey/rsa-public.pem"

安装frontend服务

修改hack/kubernetes/wayne-frontend.yaml中的Configmap,找到config.js这个key所对应的内容,将"nodeip"替换为我们上面用traefik代理的后端服务的域名,之后启动前端:

 $ kubectl apply -f hack/kubernetes/wayne-frontend.yaml

traefik代理后端

 apiVersion: traefik.containo.us/v1alpha1kind: IngressRoutemetadata:  name: wayne  namespace: wayne  annotations:    kubernetes.io/ingress.class: "traefik"spec:  entryPoints:    - websecure  routes:    - match: Host(`wayne.baixue.fun`)      kind: Rule      services:        - name: wayne-frontend          port: 80  tls:    certResolver: myresolver

我们此时可以访问https://wayne.baixue.fun登录,默认管理员账号 admin:admin

创建集群

eaa867d4b476e058d1c1592fd0193a64.png

09becf3864f93ebeab6cc923cb69508c.png

后台点击集群列表-> 关联集群

创建集群字段说明:

  • 名称:集群名称,英文简写,后续会使用此名称作为集群调用参数,例如 K8S

  • Master : Kubernetes Apiserver 地址

  • kubeConfig: 链接 Apiserver 的配置文件。配置示例:

     kind: ConfigapiVersion: v1preferences: {}clusters:- name: k8s-dev  cluster:    server: 'https://10.10.10.10'    certificate-authority-data: base64encodeusers:- name: admin  user:    client-certificate-data: base64encode    client-key-data: base64encodecontexts:- name: k8s-dev-context  context:    cluster: k8s-dev    user: admin    namespace: defaultcurrent-context: k8s-dev-context

这里我们可以使用使用默认的config文件,也可以生成一个具有特殊权限的config文件

  • 集群状态:目前有两种状态,在线和维护中。集群需要临时维护时,可以把集群状态设置为维护中,避免用户误操作影响维护中的集群。

  • MetaData:集群元数据(可选)

配置示例

 # 可选# 由于当前 Wayne 并没有完全管理 Kubernetes 资源(后续会完全管理 Kubernetes 资源),系统集成了 Kubernetes Dashboard 方便查看 Kubernetes 资源。# 此地址 schema 必须与平台一致,例如平台使用 https 部署,则 kubernetesDashboard 地址也必须为 httpskubernetesDashboard: 'http://10.10.10.10'# 可选# 如果配置了此选项,则当前集群创建 PV 时如果类型为 RBD 会自动替换此配置,避免了每次重复填写 rbd 配置rbd: monitors:   - '10.10.10.10:6789' fsType: xfs pool: k8s_pool user: xxx keyring: xxx# 可选。# 如果配置了此选项,则当前集群创建 PV 时如果类型为 cephfs 会自动替换此配置,避免了每次重复填写 cephfs 配置cephfs: monitors:   - 10.10.10.10 user: xxx secret: xxx# 可选。# env:默认增加的环境变量,默认为所有容器添加默认环境变量,如 IDC 等信息。env: - name: WAYNE_IDC   value: k8s# 可选。# imagePullSecrets:默认增加的拉取镜像 Secret,如果是从私有仓库拉取镜像并且需要拉取权限,可以配置此选项。imagePullSecrets: - name: wayne.cloud-secret

585d06d048b7e919a150b2d8a67f66ce.png

创建后我们就可以点击左侧边栏的kubernetes 查看集群资源概览了,注意目前wayne最高值支持的集群版本为1.15,高于此版本无法显示deployment,replaicaset, statefulset资源,但是不影响查看pod

697e3ee14b6aa834ffa7006e61cd7f4d.png

e851c94801248945d580ffcfb0372389.png

c3ba4ce5698f009b24e8bdeb3e72ee14.png

57e9322f3fd4299b0b999bfb1e5f4713.png

deployment,replaicaset, statefulset资源无法显示,并且后端服务会报错Failed to list *v1beta1.Deployment: the server could not find the requested resource

a3b5a3c7c844c9fce2e6cf367727299b.png

a2ca90eacf041f9982eee191e474c2e7.png

目前官方短期内不会支持1.15+ 以上版本,看issue发现这个问题19年中就已经出现,官方态度是后期会开发,但是大概360内部使用了1.15版本,所以对高级版本支持力度不是很高。

创建命令空间

首先进入后台创建命名空间

48b35591a24dd507c1a5c94a9ba6e4e4.png

我们可以切换到编辑模式看看创建了什么

80c5e50804d624f34c79e01c5927bc5a.png

提交后会在集群内创建一个名为wayne-demo的namespace

58b7cdb381e2ca8d8f5b64305d9fd467.png

创建项目

我们在前台切换到我们新建的命名空间下创建项目

b59fd33e4f74297dd455e0cfb7c620d5.png

a7f043711c7f3fccf238002fdda24b9f.png

点击新建的项目可以进入

38651cf7e7e2184b057dea2e04a777b8.png

创建configmap

21269a98078324082ee549ea9e789e17.png

8a3ebfe635df3b90ac3e267e6f40863b.png

0c5c2fe090f753361517fb2929cd2e32.png

点击高级配置可以查看详情

0c5c2fe090f753361517fb2929cd2e32.png

23845690556ada5e497ea1fe959f06f1.png

点击发布即可把这个configmap部署

a541ae7a487d37d8179f1f0be81f3194.png

55e516bc9cc82b10b90a76fbfa71faac.png

66e6e787a9310dc0a8fb02e5676e7347.png

创建secert

7b3849deb62add3f114ceac34fea2c0c.png

这里可以选择secert的类型,这里会自动base64编码

de00999d6d1f25ec9a333529eb5eaeda.png

a1384d17d0f78f5ec812ead190d977cd.png

9caf00ec7f12906c0b7dfa0933ef5575.png

d808516e6090c8000aea6c7023be3fac.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值