前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Wayne - 360开源多租户K8S管理平台(介绍和安装)

Wayne - 360开源多租户K8S管理平台(介绍和安装)

作者头像
喵了个咪233
发布2021-12-28 13:44:33
2.2K0
发布2021-12-28 13:44:33
举报

Wayne是笔者无意之间刷文章了解到的,简单使用之后发现能解决当前眼下诸多问题,出于推动公司容器化进程的原因选择开始使用,当前所有环境都已经在使用中。借助官方的介绍Wayne 是一个通用的、基于 Web 的 Kubernetes 多集群管理平台。通过可视化 Kubernetes 对象模板编辑的方式,降低业务接入成本,拥有完整的权限管理系统,适应多租户场景,是一款适合企业级集群使用的发布平台。

附上:

喵了个咪的博客:w-blog.cn

wayne官方Git地址:https://github.com/Qihoo360/wayne/blob/master/README-CN.md

PS:当前最新版本 v1.8.6,官方暂时不支持版本升级能力,不要轻易尝试版本升级; Wayne 已大规模服务于 360 搜索,承载了内部绝大部分业务,稳定管理了近千个业务,上万个容器,运行了两年多时间,经受住了生产的考验。

一、Wayne介绍

要引入任何一个工具首先需要看到问题,如果盲目的引入工具提出要求,有时候不但达不到效果还增加了研发成本。

当时笔者在公司推动容器化陷入了一个僵局,环境都已经准备好了,但是有很多遗留的包袱需要迁移里面就涉及到如下的难点了:

  • 基础yaml文件难以管理,之前使用git维护不便/更新迟滞
  • 开发水平不一,编写yaml文件经常出现各种问题
  • 开发环境需要排查问题登录容器shell,需要查看日志
  • 使用K8S-Dashbord权限无法把控,开发人员会不小心删除了别人内容
  • 强制资源限制,避免开发使用资源过度,优化不足
  • 和CI/CD对接,自动化更新不依赖于kubectl避免控制权泄露
  • 测试/集成/预发/生产,多环境管理难,原生Dashbord使用繁琐

当面临到一定规模的容器化场景都会多多少少遇到这些问题,估计360也是遇到了这些问题但是并没有特别好的解决方案才开发了这套系统。

多租户隔离支持LDAP,完备权限体系,命名空间 -> 项目 -> 资源

我们已团队建设出多个命名空间对应K8S的命名空间,项目作为团队内部的项目分组,在到对应不同的资源

PS:这里推荐两种区分环境的方法: 一种是多环境绑定在一起,通过部署名称来区分环境,并且分离测试集成(开发自助)和预发生产(运维管理)Wayne实例,保障不越权,避免误操作(推荐); 另外一种就是全部运维管理,通过一套模板控制所有环境;

基于独立数据库的Yaml配置存储,强制资源限制

OpenApi+Token校验机制提供足够灵活性

支持多集群同时管理,在线WebShell+日志查看能力

Wayne架构图

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

二、Wayne安装

需要准备好 docker 环境 和 docker-compose 可以参考笔者之前的文章:

代码语言:javascript
复制
git clone https://github.com/Qihoo360/wayne.git
cd wayne/hack/docker-compose

配置文件修改

wayne分为两个组件 wayne-backend 和 wayne-frontend

  • wayne-backend:主要API
  • wayne-frontend:WEB界面

锁定版本,如果使用latest可能会遇到版本更新导致的不兼容,最新版本 v1.8.6 上一稳定版本 v1.7.1都可以选择

代码语言:javascript
复制
vim docker-compose.yaml

image: 360cloud/wayne-backend:v1.8.6
image: 360cloud/wayne-frontend:v1.8.6

Wayne采用前后端分离方式,如果需要在内网或外网访问wayne系统需要访问地址配置,本地测试可以先用localhost

代码语言:javascript
复制
vim conf/config.js

window.CONFIG = {
    URL: 'http://yourip:8080',
    RAVEN: false,
    RAVEN_DSN: 'RAVEN_DSN'
};

运行程序

代码语言:javascript
复制
docker-compose up -d 

Creating docker-compose_mysql_1 ... done
Creating docker-compose_wayne-backend_1 ... done
Creating docker-compose_wayne-frontend_1 ... done

访问 http://localhost:4200/ 即可,默认用户名密码admin:

配置独立Mysql运行

一般来说我们会使用独立mysql来存储元数据保障数据的稳定,如果Wayne丢失了数据库回复会非常的麻烦

删除配置文件中的mysql和 link

代码语言:javascript
复制
vim docker-compose.yaml

  mysql:
    image: mysql:5.6.41
    environment:
      MYSQL_ROOT_PASSWORD: "root"
    networks:
    - default
    expose:
    - "3306"
    ports:
    - "3306:3306"
  rabbitmq:
    environment:
      RABBITMQ_NODENAME: "rabbit"
      RABBITMQ_DEFAULT_USER: "guest"
      RABBITMQ_DEFAULT_PASS: "guest"
    image: rabbitmq:3.7.8-management
    networks:
    - default
    expose:
    - "5672"
    ports:
    - "5672:5672"

    depends_on:
    - mysql

修改配置文件

代码语言:javascript
复制
vim conf/app.conf

# database configuration:
## mysql
DBName = "wayne"
DBTns = "tcp(mysql:3306)"
DBUser = "root"
DBPasswd = "root"
DBLoc = "Asia%2FShanghai"
DBConnTTL = 30

OAuth2 OR LDAP

代码语言:javascript
复制
vim conf/app.conf

# oauth2
[auth.oauth2]
enabled = false
redirect_url = "https://www.wayne.cloud"
client_id = client
client_secret = secret
auth_url = https://example.com/oauth2/v1/authorize
token_url = https://example.com/oauth2/v1/token
api_url = https://example.com/oauth2/v1/userinfo
# If your OAuth 2.0-based authorization service does not have email, name, and dispaly fields, use mapping criteria.
api_mapping = name:name,email:email,display:display

# ldap config
# enable ldap login
[auth.ldap]
enabled = false
ldap_url = ldap://127.0.0.1
ldap_search_dn = "cn=admin,dc=example,dc=com"
ldap_search_password = admin
ldap_base_dn = "dc=example,dc=com"
ldap_filter =
ldap_uid = cn
ldap_scope = 2
ldap_connection_timeout = 30

本文由博客一文多发平台 OpenWrite 发布!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Wayne介绍
    • 多租户隔离支持LDAP,完备权限体系,命名空间 -> 项目 -> 资源
      • 基于独立数据库的Yaml配置存储,强制资源限制
        • OpenApi+Token校验机制提供足够灵活性
          • 支持多集群同时管理,在线WebShell+日志查看能力
            • Wayne架构图
            • 二、Wayne安装
              • 配置独立Mysql运行
                • OAuth2 OR LDAP
                相关产品与服务
                容器服务
                腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档