Kubernetes - 腾讯蓝鲸配置平台(CMDB)开源版部署

 

Kubernetes - 腾讯蓝鲸配置平台(CMDB)开源版部署

蓝鲸CMDB

  蓝鲸配置平台(蓝鲸CMDB)是一个基于运维场景设计的企业配置管理服务。主要功能:

  1. 拓扑化的主机管理:主机基础属性、主机快照数据、主机归属关系管理

  2. 组织架构管理:可扩展的基于业务的组织架构管理

  3. 模型管理:既能管理业务、集群、主机等内置模型,也能自定义模型

  4. 进程管理:基于模块的主机进程管理

  5. 事件注册与推送:提供基于回调方式的事件注册与推送

  6. 通用权限管理:灵活的基于用户组的权限管理

  7. 操作审计:用户操作行为的审计与回溯

  

  官网地址:http://bk.tencent.com/

  源码地址: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和各个业务场景模块、资源管理模块交互。

 

在线预览

  http://cmdb.erikxu.net

  当前的CMDB基于web pack打包的js文件比较大,第一次加载会比较慢。

  服务器在香港,有可能会稍有延迟。

  站点做了流量控制,一个ip每秒100次,一个ip每天100000次,如果接收到“Too Many Requests”的错误,请稍后再试。

  

 图1

 

  

图2

部署步骤

  0. 环境准备

名称操作系统IP说明
masterCentOS 7192.168.132.130

k8s master

nodeCentOS 7192.168.132.136k8s node
dbCentOS 7192.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/bashset -e# get local IP.
localIp=`python ip.py`# get zookeeper path from environment variables 
zookeeperPath="127.0.0.1:2181"
if [ "$ZOOKEEPER_PATH" ]; thenzookeeperPath=$ZOOKEEPER_PATH
fi# set execute 
chmod +x cmdb_apiserver
./cmdb_apiserver --addrport=${localIp}:8080 --logtostderr=true --v=3 --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-apiserverlabels:app: cmdb-apiservernamespace: default
spec:replicas: 1template:metadata:labels:app: cmdb-apiserverspec:nodeSelector:kubernetes.io/role: nodecontainers:- name: cmdb-apiserverimage: cmdb-apiserver:3.1.0env:- name: ZOOKEEPER_PATHvalue: 192.168.132.139:2181ports:- containerPort: 8080---kind: Service
apiVersion: v1
metadata:name: cmdb-apiserverlabels:app: cmdb-apiservernamespace: default
spec:selector:app: cmdb-apiserverports:- name: cmdb-apiservertargetPort: 8080port: 8080protocol: 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/26151.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源公告|运维基础操作管理系统-蓝鲸作业平台正式开源!

蓝鲸作业平台项目背景 蓝鲸作业平台是一套运维基础操作管理系统,具备海量任务并发处理能力;除了支持脚本执行、文件分发、定时任务等一系列基础运维场景以外,还支持通过流程调度能力将零碎的单个任务组装成一个自动化作业流程;而每…

【腾讯开源项目】蓝鲸配置平台开源项目亮相北京“OSCAR开源先锋日”

我们秉承腾讯开源的理念,蓝鲸配置平台将会进一步完善各个业务领域的支持,在易用性、效率、功能深度上持续打磨,以开源分享的心态打造业界通用的业务驱动CMDB产品,凝聚IT运维圈子的同仁,共同构建一个友好、活跃的开源社…

分布式高频量化交易系统架构讲解(企业版,期货ctp,股票xtp,数字货币,附全部源码)(值得收藏)

目录 1.量化交易系统简介 1.1行情数据 1.2交易策略 1.3交易 2. 分布式高频量化交易系统 2.1. 架构图 2.1.1量化交易系统教程地址 2.1.2量化交易系统教程中讲解的期货ctp知识点 2.2. 交易系统功能介绍 2.3. 账户系统介绍 2.3.1. 交易员账户 2.3.2. …

记中科院ChatGPT 学术版部署时出现:ModuleNotFoundError: No module named ‘gradio‘

出现此问题的原因是因为gradio版本和目前某些软件包出现版本不兼容的问题,我试了两次安装全部的包然后运行项目均会出现如下报错ModuleNotFoundError: No module named gradio,于是先用requirements.txt文件把其他包都给装上,再使用pip直接安…

Python + ChatGPT,简直太好用了!

前言 近来chatGPT挺火的,也试玩了一下,确实挺有意思。这里记录一下在Python中如何去使用chatGPT。 知识点📖📖 pip install openai看看 chatGPT的表现: 使用python编写一段发送网络请求的代码 python如何md5 也有抽…

Java初级程序员与ChatGPT(文心一言)使用感受

前言: 随着23年三月初开始ChatGPT迅速发展,爆红网络。也有不少人说这个东西会顶替程序员。刚好身边同事有一个需要是读取word文档中的内容,保存到数据库。 我们就用百度的文心一言试下吧。 交互开始: 总的来说从提问到问题的反馈…

让资深猎头-GPT帮你修改简历,Get 心动的offer

正文共 1391 字,阅读大约需要 4 分钟 求职者必备技巧,您将在4分钟后获得以下超能力: 根据JD修改简历 Beezy评级 :B级 *经过简单的寻找, 大部分人能立刻掌握。主要节省时间。 推荐人 | Kim 编辑者 | Linda ●图片来源…

一位大佬的亲身经历总结:告诉大家写简历和面试的技巧

点击上方 "code小生" ,关注公众号 8点40分,在看真爱 来自:hsm_computer | 责编:乐乐 链接:cnblogs.com/JavaArchitect/p/10720897.html 00 前言 在18年底到19年3月,陆续面试了几家公司&#xf…

教你写出会说话的【数据分析岗】简历

秋招来势汹汹,有些学弟学妹私下问了我很多简历相关的问题。 总结来看,他们碰到的情况如下: ▶ 明明专业学历过关,实习经验丰富,有些大厂的简历关都未能通过? ▶ 身边的同学明明经历和经验不如自己&#xff…

安卓面试中高级安卓开发工程师总结之——如何写一份让HR主动邀请你面试的简历

简历是用人单位做人事筛选的评判标准。如何让自己的简历被更多公司HR看到,并且通过技术部简历初步审核呢? 博主这次跳槽,只投过一次8个公司(小公司)的简历。然后就再也没有主动投递过简历,仅仅把自己的简历…

最近去TalentOrg投简历,接到了面试内容跟大家分享一下

TalentOrg,一个远程办公雇佣中介,通过国内协调x国外雇佣的方式达成目标 背景介绍第一轮:海选来源筛选 第二轮:笔试上传简历远程办公测试代码挑战技术栈测试我的选择关于违规测试结果 个人资料 第三轮:面试通知面试面试…

chatgpt赋能python:Python编程游戏

Python编程游戏 Python是一种简单易学的编程语言,非常适合初学者和有经验的开发人员制作游戏。在这篇文章中,我们将介绍如何使用Python编写游戏,并为搜索引擎优化做出努力。 简介 Python是一种高级编程语言,具有易于阅读的语法…

个人简历制作时的自我评价应该怎么写?

在进行简历表格制作的时候,大部分简历模板上都有一项是自我评价,其实在实际的投递简历招聘的过程中,如果应聘者的自我评价写的比较好,可以起到加分的作用,但是如果写的没有特色,只是从网上找的一些套话放在…

个人自我评价格式范文五篇

★个人自我评价1 工作已经进行两周多了,突然发现自己似乎又重蹈覆辙了,再一次一次的不经意中和某些人的就距离却是越来越来大,总是想偷一下懒,总是想着马马虎虎过去算了,没有那么精打细算过。结果不经意有些人人开始脱…

简历中满分的自我评价是啥样?

人事经理在浏览简历时,自我评价是关注的重点之一。自我评价优缺点应该简明扼要地说明你最大的优势,才能让你从众多竞争对手中脱颖而出。 误区 很多人的自我评价写的跟学生一样,也就是假大空。比如“工作认真负责”、“学习能力强”、“合作能…

个人简历特长及自我评价怎么写?

虽然说在个人简历模板中特长爱好的作用不大,并不是HR最关心的地方,但是兴趣爱好也是做为招聘方对求职者一个全面综合的评估,特长爱好是你简历的加分项,写好了锦上添花,我们在制作个人简历表的时候该如何表述特长爱好和…

简历中的自我评价怎么写?

简历中自我评价怎么写呢?今天七分简历(简历制作_简历模板_简历下载-七分简历编辑器)就和大家来谈一谈如何写好自我评价。要写好自我评价首先要认清自己,知道自己想要什么,才会使自己更加有自信。对于刚毕业或是还没毕业…

简历中的“自我评价“怎么写?记录一个满分模板

你的自我评价还在这样写吗? 给我一个机会,还你一份惊喜 工作认真负责,学习能力强 不介意加班,肯吃苦 简历当中的“自我评价”到底该怎么写? 四个点 核 心 经 验 \color{#FF7D00}{核心经验} 核心经验 - 最重要的“岗…

如何成为一名合格的软件架构师

目录 一、架构师的分类 技术型 综合型 业务型 理论型 二、架构师的工作 业务沟通 技术设计 实施推广 四、招聘与应聘 招聘架构师 需要了解业务真相 了解雇员 被神话了的T职级 如何应聘架构师 五、修行 在一个信息爆炸却多半无用的世界,清晰的见解就…

期刊论文科普大锅炖5

前言 这个破系列终于更完了,最近也是超级忙,后面会更新python相关练习,看时间吧…… 目录 7.1 查找期刊 重要内容选刊工具7.2 准备论文7.3 提交和修改 投稿网站7.4 跟踪您的论文 审稿相关跟踪论文7.5 分享和推广论文8.1 课程8.2 提高效率的软…