Kubernetes - 腾讯蓝鲸配置平台(CMDB)开源版部署
蓝鲸CMDB
蓝鲸配置平台(蓝鲸CMDB)是一个基于运维场景设计的企业配置管理服务。主要功能:
1. 拓扑化的主机管理:主机基础属性、主机快照数据、主机归属关系管理
2. 组织架构管理:可扩展的基于业务的组织架构管理
3. 模型管理:既能管理业务、集群、主机等内置模型,也能自定义模型
4. 进程管理:基于模块的主机进程管理
5. 事件注册与推送:提供基于回调方式的事件注册与推送
6. 通用权限管理:灵活的基于用户组的权限管理
7. 操作审计:用户操作行为的审计与回溯
源码地址:https://github.com/tencent/bk-cmdb
架构设计

1. 资源层(store):提供系统所需的资源存储、消息队列以及缓存系统服务
2. 服务层(service layer): 服务层划分为两大模块
a. 资源管理模块:
在配置平台中我们把资源类型进行了抽象,目前划分为主机、进程、通用对象三大类,支持横向扩展,每一类资源由一类微服务进程来管理。
b. 业务场景模块:
业务场景模块是基于资源管理模块的原子接口对应用场景的封装。
基于操作的相关度,目前划分出admin、event、host、topo、process、datacollection几个微服务:
admin服务负责系统的配置刷新、初始化数据写入等操作;
event服务负责系统的事件订阅与推送服务;
process、topo、host分别负责系统进程、拓扑模型、主机数据的使用场景;
datacollection 服务负责系统快照数据的接收与写入。
3. 接口层(api): 这一层是系统的api服务网关。
4. web层(web): web层是系统提供的web服务。通过配置平台提供的web服务界面,用户可以进行资源的操作。
交互说明

1. Zookeeper作为配置中心,利用Admin Server推送配置到Zookeeper,Zookeeper再把配置同步到各个服务的本地。
2. Zookeeper作为服务中心,服务启动时自上报IP端口到Zookeeper,Zookeeper把各个服务的访问地址同步到各个服务本地。
3. Zookeeper Node Watch机制:配置或服务地址更新,都将同步到各个服务本地。
4. Web只通过ajax与Web Server交互,Web Server与Api Server交互,Api Server和各个业务场景模块、资源管理模块交互。
在线预览
当前的CMDB基于web pack打包的js文件比较大,第一次加载会比较慢。
服务器在香港,有可能会稍有延迟。
站点做了流量控制,一个ip每秒100次,一个ip每天100000次,如果接收到“Too Many Requests”的错误,请稍后再试。

图1

图2
部署步骤
0. 环境准备
| 名称 | 操作系统 | IP | 说明 |
| master | CentOS 7 | 192.168.132.130 |
k8s master |
| node | CentOS 7 | 192.168.132.136 | k8s node |
| db | CentOS 7 | 192.168.132.139 | 数据库服务器,安装mongodb、redis、zookeeper |
| registry | -- | -- | 镜像仓库(可选),可使用公有云仓库,可自建仓库 |
1. 安装mongodb(db服务器,docker安装,版本4.0.4)
docker pull mongo:4.0.4
mkdir -p /opt/mongo
docker run --name mongo -v /opt/mongo:/data/db -d -p 27017:27017 mongo:4.0.4
2. 安装redis(db服务器,docker安装,版本5.0.2)
docker pull redis:5.0.2
mkdir -p /opt/redis
docker run --name redis -v /opt/redis:/data -d -p 6379:6379 redis:5.0.2 redis-server --requirepass cc
3. 安装zookeeper(db服务器,docker安装,版本3.4.13)
docker pull zookeeper:3.4.13
mkdir -p /opt/zookeeper
docker run --name zookeeper -v /opt/zookeeper:/data -d -p 2181:2181 zookeeper:3.4.13
4. 配置mongodb(db服务器)
docker exec -it mongo /bin/bash
mongo
use cmdb
db.createUser({user: "cc",pwd: "cc",roles: [ { role: "readWrite", db: "cmdb" } ]})

5. 源码编译
可以按照官方文档进行编译,我这里直接使用可执行文件(linux),版本3.1.0
6. 下载可执行文件,并解压到k8s的node节点上,在node节点上直接打docker镜像(单node,不使用镜像仓库)
cd /root
tar -zvxf cmdb.tar.gz -C /root
7. 初始化配置文件(k8s node节点)
cd /root/cmdb
python init.py --discovery 192.168.132.139:2181 --database cmdb --redis_ip 192.168.132.139 --redis_port 6379 --redis_pass cc --mongo_ip 192.168.132.139 --mongo_port 27017 --mongo_user cc --mongo_pass cc --blueking_cmdb_url http://127.0.0.1:8083 --listen_port 8083
上述指令根据实际填写
8. 调整配置文件(k8s node节点)
cd /root/cmdb/cmdb_adminserver/configures
a. 修改html_root
vi webserver.conf
把html_root=/root/cmdb/web修改为html_root=/cmdb_webserver/web
b. 修改mongo连接串支持mongo 3.6以上版本(可选)
由于MongoDB 从3.6开始更改了默认加密方式,所以如果安装的MongoDB的版本大于等于3.6。
需要手动将configures中每个配置文件中MongoDB的配置项中增加mechanism=SCRAM-SHA-1

9. 启动Admin Server,并把配置文件写入Zookeeper(k8s node节点)
cd /root/cmdb/cmdb_adminserver/
chmod +x start.sh
./start.sh
curl -X POST -H 'Content-Type:application/json' -H 'BK_USER:migrate' -H 'HTTP_BLUEKING_SUPPLIER_ID:0' http://192.168.132.138:60004/migrate/v3/migrate/community/0

10. 拷贝web目录到cmdb_webserver目录(k8s node节点)
cp -rf /root/cmdb/web /root/cmdb/cmdb_webserver/web
11. 把可执行程序打包成docker镜像(k8s node节点)
a. start.sh样例
#!/bin/bash set -e # get local IP.
localIp=`python ip.py` # get zookeeper path from environment variables
zookeeperPath="127.0.0.1:2181"
if [ "$ZOOKEEPER_PATH" ]; then
zookeeperPath=$ZOOKEEPER_PATH
fi # set execute
chmod +x cmdb_apiserver
./cmdb_apiserver --addrport=${localIp}: --logtostderr=true --v= --regdiscv=${zookeeperPath}
b. Dockerfile样例
FROM centos:7.6.1810
COPY . /cmdb_apiserver
WORKDIR /cmdb_apiserver
EXPOSE 8080/tcp
RUN chmod +x start.sh
ENTRYPOINT ./start.sh
在k8s的node节点上构建镜像
docker build -t cmdb-apiserver:3.1.0 .

如果不想自己打镜像,可以直接使用打好的镜像:https://console.cloud.tencent.com/tke/registry/qcloud/default?rid=1,搜索erik_xu/cmdb:

12. 执行yaml脚本完成部署(k8s master节点)
yaml样例:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: cmdb-apiserver
labels:
app: cmdb-apiserver
namespace: default
spec:
replicas: 1
template:
metadata:
labels:
app: cmdb-apiserver
spec:
nodeSelector:
kubernetes.io/role: node
containers:
- name: cmdb-apiserver
image: cmdb-apiserver:3.1.0
env:
- name: ZOOKEEPER_PATH
value: 192.168.132.139:2181
ports:
- containerPort: 8080 --- kind: Service
apiVersion: v1
metadata:
name: cmdb-apiserver
labels:
app: cmdb-apiserver
namespace: default
spec:
selector:
app: cmdb-apiserver
ports:
- name: cmdb-apiserver
targetPort: 8080
port: 8080
protocol: TCP
把环境变量ZOOKEEPER_PATH的值改成对应的Zookeeper地址,执行脚本完成部署:
kubectl create -f /root/yamls/all-in-one.yaml
yaml地址:https://github.com/ErikXu/bk-cmdb-kubernetes-deploy/blob/master/yamls/all-in-one.yaml


注:cmdb只有web server需要外部访问,因此,只有web server通过node port的方式映射到虚拟机上,yaml文件里的映射端口是30000,可以根据实际调整。
Zookeeper使用介绍
Zookeeper在CMDB充当了配置管理以及服务注册发现的重要角色,因此,我们有必要去了解它。
使用zkCli连接容器中的Zookeeper
docker run -it --rm --link zookeeper:zookeeper zookeeper:3.4.13 zkCli.sh -server zookeeper
查看Zookeeper目录
ls /

发现有一个目录cc,但是无权限查看
ls /cc

查看Acl
getAcl /cc

使用帐号密码认证,可以看到cc目录里的内容
addauth digest cc:3.0#bkcc

帐号密码从CMDB的源码取得

找到配置文件的目录
ls /cc/services/config

查看其中一个配置文件
get /cc/services/config/webserver

查看服务注册目录
ls /cc/services/endpoints

查看其中一个服务注册内容,可以看到它自上报的ip及端口

脚本地址
https://github.com/ErikXu/bk-cmdb-kubernetes-deploy
Kubernetes - 腾讯蓝鲸配置平台(CMDB)开源版部署的更多相关文章
- 这个接口管理平台 eoLinker 开源版部署指南你一定不想错过
本文主要内容是讲解如何在本地部署eoLinker开源版. 环境要求 1.PHP 5.5+ / PHP7+(推荐) 2.Mysql 5.5+ / Mariadb 5.5+ 3.Nginx(推荐) / A ...
- 开发腾讯移动游戏平台SDK ios版Ane扩展 总结
本文记录了在开发 腾讯移动游戏平台SDK(MSDK) ios版Ane扩展 过程中所遇到的问题 文中非常多问题都是基础的问题.对object c和xcode配置了解不深入导致的.(没办法,开发ane的程 ...
- 开发腾讯移动游戏平台SDK Android版Ane扩展 总结
本文记录了在开发 腾讯移动游戏平台SDK(MSDK) Android版Ane扩展 过程中所遇到的问题和相关解决方式 问题一:编译报错:Unable to resolve target 'android ...
- 这份接口管理平台 eoLinker 开源版的部署指南教程你一定不想错过
本文主要内容是讲解如何在本地部署eoLinker开源版. 环境要求 1.PHP 5.5+ / PHP7+(推荐) 2.Mysql 5.5+ / Mariadb 5.5+ 3.Nginx(推荐) / A ...
- 简单描述如何安装配置一个apache开源版hadoop,只描述即可,无需列出完整步骤,能列出步骤更好
1 ) 安装JDK并配置环境变量(/etc/profile) 2) 关闭防火墙 3) 配置hosts文件,方便hadoop通过主机名访问(/etc/hosts) 4) 设置ssh免密码登录 5) 解压 ...
- 腾讯蓝鲸cmdb部署
蓝鲸配置平台 (CMDB)http://172.16.6.10:8088 环境(单机测试): Centos6 16G 200G 依赖环境: Java 1.8.0_92 python 2.7 ZooKe ...
- Centos 7 搭建蓝鲸V4.1.16社区版
第一次搭建蓝鲸平台,参考了蓝鲸社区的官方搭建文档. 友情链接:蓝鲸智云社区版V4.1.16用户手册 搭建时遇到了不少的坑,这里做一个详细的安装梳理 主机硬件要求 官方的推荐如下: 在本地用VMware ...
- 腾讯基于Kubernetes的企业级容器云平台GaiaStack (转)
GaiaStack介绍 GaiaStack是腾讯基于Kubernetes打造的容器私有云平台.这里有几个关键词: 腾讯:GaiaStack可服务腾讯内部所有BG的业务: Kubernetes:Gaia ...
- 腾讯蓝鲸cmdb源码编译
腾讯蓝鲸 cmdb 源码编译环境依赖 环境包参考: golang >= 1.8 python >= nodejs >= (编译过程中需要可以连公网下载依赖包) Python 环境 w ...
随机推荐
- @WebFilter注解
@WebFilter @WebFilter 用于将一个类声明为==过滤器==,该注解将会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为过滤器.该注解具有下表给出的一些常用属性 ( 以下所 ...
- ReactNative开发笔记(持续更新...)
本文均为RN开发过程中遇到的问题.坑点的分析及解决方案,各问题点之间无关联,希望能帮助读者少走弯路,持续更新中... (2019年3月29日更新) 原文链接:http://www.kovli.com/ ...
- 阿里云ECS服务器部署Node.js项目全过程详解
本文详细介绍如何部署NodeJS项目到阿里云ECS上,以及本人在部署过程中所遇到的问题.坑点和解决办法,可以说是全网最全最详细的教程了.同时讲解了如何申请阿里云免费SSL证书,以及一台ECS服务器配置 ...
- 大二学生党的Security+备考宝典(一次过)
刚出成绩的一刹那,我的心里是慌的很的,因为可能知识点复习的不够扎实,考试上的题目全都回归了课本,而我的知识回归了老师(滑稽),一下给大家分享下我的经验,希望大家引以为戒,都能考出好成绩. 一.直播阶段 ...
- redis cluster简介和配置(3)
前面我介绍了 redis sentinel,既然有了sentinel,为什么还要一个cluster呢?因为随着业务量的增加,不可避免要对redis进行扩容,扩容方式一般由2种:1. 垂直扩容 2. 水 ...
- ubuntu上安装multi-mechanize步骤
第一步:先安装pip pip 是 Python 包管理工具,该工具提供了对Python 包的查找.下载.安装.卸载的功能. 目前如果你在 python.org 下载最新版本的安装包,则是已经自带了该工 ...
- thrift使用
一.什么是thrift Thrift是一种接口描述语言和二进制通讯协议,它被用来定义和创建跨语言的服务.它被当作一个远程过程调用(RPC)框架来使用,是由FaceBook为“大规模跨语言服务开发”而开 ...
- 2018-2019-2 实验二 Java面向对象程序设计
实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D原则 5.了解设计模式 实验要求 1.没有Linux基础的同学 ...
- OpenCV初步
目录 一 写在开头 1.1 本文内容 二 涉及的API 三 OpenCV 3.4.2在Ubuntu 16.04 LTS下的编译安装 四 OpenCV安装测试与图像的加载和显示 4.1 安装测试 4.2 ...
- Python——Python+Pydev出现SyntaxError: Non-UTF-8 code
搭建好Python+Pydev后发现每次输入中文,包括注释,会出现语法错误提示,如: SyntaxError: Non-UTF-8 code starting with... 可通过下面方法解决. 1 ...