BK-CMDB Web 服务 Helm Chart 部署实战指南:架构、配置参数与外部组件接入

  • 后端
  • 企业应用
  • 运维

【免费下载链接】bk-cmdb

蓝鲸智云配置平台(BlueKing CMDB)

项目地址: https://gitcode.com/gh_mirrors/bk/bk-cmdb
点击查看 免费下载

蓝鲸配置平台(BlueKing CMDB,bk-cmdb)是面向资产及应用的企业级配置管理平台。本文基于仓库 docs/support-file/helm/web 下的官方 Helm Chart 文档,系统讲解如何通过 Helm 3 在 Kubernetes 集群中部署 BK-CMDB 的 Web 服务(前端控制台与 webserver 网关),包括 Chart 依赖体系、values.yaml 全量参数解读、外接 MongoDB/Redis/Zookeeper/Elasticsearch 的配置案例、Ingress/NodePort 服务暴露、权限验证与蓝鲸登录接入,以及部署后的常见问题排查。读完本文,你将具备独立定制并交付一套生产级 BK-CMDB Web 环境的能力。

BK-CMDB Web Chart 与整体架构定位

在 BK-CMDB 的 Kubernetes 交付体系中,官方提供了两个互相配合的 Helm Chart:

  • bk-cmdb-web(本文主角,即 docs/support-file/helm/web):负责部署 Web 服务相关组件,包括承载前端控制台与后端 API 代理的 webserver 服务,以及它依赖的存储与中间件(MongoDB、Redis、Zookeeper、Elasticsearch 等)。
  • bk-cmdb-backend(docs/support-file/helm/backend):负责部署 adminserver、coreservice、toposerver、hostserver 等全部后台微服务。

Web Chart 的核心组件是 webserver 服务(对应源码目录 src/web_server)。它一方面向浏览器提供 CMDB 前端页面与登录会话管理,另一方面通过 service.ApiCli(见 src/web_server/app/server.go)代理转发前端发起的业务 API 请求。从源码结构看,部署在 Web 层之外的 apiserver 是这些业务请求的实际后端入口,因此 Web Chart 与 Backend Chart 需要部署在同一套 CMDB 体系中才能构成完整可用的平台。

关于整个平台的微服务架构设计,可参考仓库中的 架构设计文档。

环境要求与镜像准备

环境要求

项目版本要求说明
Kubernetes1.12+集群基本可用即可,Chart 模板会根据 common.capabilities 自动选择 Ingress、Deployment 的合适 apiVersion
Helm3+Chart 为 apiVersion: v2(见 Chart.yaml),必须使用 Helm 3
golang>= 1.20仅在需要自行编译镜像时使用
nodejs>= 4.0.0编译前端 UI 时使用,建议使用 nodejs 14 LTS 版本

快速搭建 Kubernetes 集群可参考蓝鲸官方白皮书中 get-k8s-create-bcssh 的说明;本地体验可选用 minikube。

镜像制作

Chart 默认从 image.registry 拉取预构建镜像。如果需要自行编译镜像,请参考 CMDB 编译指南。编译时可通过 make VERSION=xxxx 指定版本号,并注意:

  • 编译环境要求 golang >= 1.20、python >= 2.7.5(建议 python2);
  • src 目录下 make 支持三种模式:同时编译前端 UI 和后端服务、仅编译后端、仅编译前端;
  • 由于 cloud-server 使用了 crypto-golang-sdk,编译前需要安装铜锁(Tongsuo)8.3.2 环境,Makefile 内置了安装步骤,默认安装到 ${cmdb编译路径}/tongsuo,可通过 TONGSUO_PATH 环境变量指定安装路径;
  • 编译前端 make ui 若因内存不足导致 fibers 安装失败(ELIFECYCLE / Permission denied 等报错),可通过 nvm 安装 nodejs 解决。

Chart 依赖体系

Web Chart 依赖关系定义在 Chart.yaml 中,与锁文件 Chart.lock 保持一致:

依赖 Chart仓库版本启用条件
commonbitnami2.2.2始终启用
redisbitnami17.3.17redis.enabled
mongodbbitnami13.6.1mongodb.enabled

文档同时列出了可选依赖 bitnami/zookeeper 与 bitnami/elasticsearch。这些依赖组件在 Chart 中默认启用,但官方特别强调:内置的 mongodb、redis 等组件仅用于测试环境,正式环境部署必须配置为外部组件。

安装与卸载 Chart

安装

使用以下命令安装 release(<bkcmdb helm repo url> 代表存放 bk-cmdb-web Chart 的 helm 仓库地址,password 为自定义密码):

# 添加 helm 仓库
$ helm repo add bitnami https://charts.bitnami.com/bitnami
$ helm repo add bkee <bkcmdb helm repo url>
# 更新并拉取依赖
$ helm dependency update
# 执行部署,同时为内置 mongodb/redis 设置认证密码
$ helm install cmdb-web bkee/cmdb-web --set mongodb.auth.password=${password} --set redis.auth.password=${password}

命令执行成功后,Chart 的 NOTES.txt 会输出验证步骤与访问地址。需要注意:

  • 执行部署前,请检查 values.yaml 中镜像配置的镜像地址,确认镜像源可达;
  • 从 _helpers.tpl 的 cmdb.redis.pwd、cmdb.mongodb.pwd 模板(见 templates/_helpers.tpl)可以看到,当 mongodb.enabled 或 redis.enabled 为 true 时,必须通过 --set 提供 mongodb.auth.password 与 redis.auth.password,否则 Helm 渲染会直接报 required "xxx password is required" 错误。

卸载

$ helm uninstall cmdb-web

该命令将移除所有与 cmdb-web 相关的 Kubernetes 组件(Deployment、Service、Ingress、ConfigMap、StatefulSet 等)。如需同时清理持久化卷,请按 Helm 默认策略另行处理 PVC。

全局配置参数详解

各项配置集中在 Chart 根目录的 values.yaml 一个文件之中,按功能分区组织。下面逐一展开。

镜像与拉取策略

参数描述默认值
global.imageRegistry全局镜像源域名,设置后会覆盖所有子 Chart(含依赖组件)的镜像源空
global.imagePullSecrets私有仓库拉取凭据 Secret 名称数组[]
global.storageClass持久化卷使用的 StorageClass空
image.registrybk-cmdb 自身镜像源域名hub.bktencent.com
image.pullPolicy镜像拉取策略IfNotPresent
image.pullSecretNamebk-cmdb 镜像拉取 Secret 名称空

从 webserver-dpl.yaml 可以看到实际渲染逻辑:Pod 镜像地址为 {{ .Values.image.registry }}/{{ .Values.webserver.image.repository }}:v{{ default .Chart.AppVersion .Values.webserver.image.tag }},即当 webserver.image.tag 未设置时,自动使用 Chart 的 appVersion(当前仓库中为 3.14.8-beta1)并拼接 v 前缀。

蓝鲸产品 URL 配置

参数描述默认值
bkPaasUrl蓝鲸 PaaS 地址http://paas.example.com
bkIamApiUrlbk-iam 后端地址http://bkiam-web
bkComponentApiUrl蓝鲸 ESB 地址http://bkapi.paas.example.com
bkLoginApiUrl蓝鲸登录地址http://bk-login-web
bkNodemanUrl节点管理地址http://apps.paas.example.com/bk--nodeman
bkGseApiGatewayUrl蓝鲸 GSE API Gateway URLhttp://bkapi.example.com
bkNoticeApiGatewayUrl蓝鲸 Notice API Gateway URLhttp://bkapi.example.com
bkCmdbApiGatewayUrlCMDB API Gateway URLhttp://bkapi.example.com

这些 URL 会被渲染进 configmap.yaml 生成的 web.yaml 配置中:bkComponentApiUrl 对应 esb.addr,bkLoginApiUrl 用于生成 site.checkUrl(/accounts/get_user/?bk_token= 形式的登录态校验地址),bkNodemanUrl 对应 app.agentAppUrl。当 web.webServer.login.version 为 blueking 时,_helpers.tpl 中的 cmdb.webserver.bkLoginUrl 模板还会基于 bkPaasUrl 拼接出 /login/?app_id=%s&c_url=%s 形式的统一登录跳转地址。

webserver 服务配置

参数描述默认值
webserver.enabled是否启动 webservertrue
webserver.image.repository服务镜像名blueking/cmdb_webserver
webserver.image.tag服务镜像版本空(自动使用 appVersion)
webserver.replicasPod 副本数量1
webserver.port服务 HTTP 端口80
webserver.dnsPolicyDNS 策略ClusterFirst
webserver.hostNetwork是否使用主机网络false
webserver.ingress.enabled开启 Ingress 访问true
webserver.ingress.hostIngress 代理访问的域名cmdb.example.com
webserver.ingress.annotationsIngress 注解kubernetes.io/ingress.class: nginx
webserver.ingress.tls是否启用 TLSfalse
webserver.service.typeService 类型ClusterIP
webserver.service.portsService 端口定义(含 nodePort)80 -> 80
webserver.service.externalPortIngress 代理的目标端口80
webserver.configDir配置文件目录/data/cmdb/cmdb_webserver/configure
webserver.errors错误文案目录/data/cmdb/cmdb_webserver/conf/errors
webserver.language多语言文案目录/data/cmdb/cmdb_webserver/conf/language
webserver.workDir工作目录/data/cmdb/cmdb_webserver
webserver.command.logDir日志存放路径/data/cmdb/cmdb_webserver/logs
webserver.command.logLevel日志等级3
webserver.command.logToStdErr是否把日志输出到 stderrfalse
webserver.podAnnotationsPod 注解{}
webserver.resources容器资源请求/限制limits: 200m/1024Mi;requests: 200m/512Mi
webserver.nodeSelector / affinity / tolerations调度相关配置空 / {} / []

从 Deployment 模板(webserver-dpl.yaml)可以看到 webserver 容器的启动命令:

./cmdb_webserver --addrport=$(POD_IP):80 --config=.../web.yaml --log-dir=... --regdiscv=<zk地址> --v=3 --logtostderr=false

其中 --regdiscv 指向配置发现中心/服务发现中心地址(即 configAndServiceCenter.addr),POD_IP 来自 status.podIP 的 fieldRef 注入;同时 Pod 配置了 livenessProbe 与 readinessProbe,均以 /healthz 路径、initialDelaySeconds: 30、periodSeconds: 10 进行探活,这解释了为什么 Chart 启动后需要等待约 30 秒服务才会就绪。Pod 标签中还会注入 values-hash(对全部 values 取 sha256 摘要),保证配置变更能够触发滚动更新。

web.webServer 前端站点配置

web.webServer 段对应 CMDB web.yaml 中的 webServer 专属配置,经 configmap 渲染后由 webserver 进程读取,其中与源码强相关的关键项如下:

参数描述默认值
web.webServer.site.domainUrl浏览器访问 CMDB 的网址http://cmdb.example.com
web.webServer.site.httpsDomainUrlHTTPS 域名地址空
web.webServer.site.appCode站点 app codebk_cmdb
web.webServer.site.htmlRoot前端页面根目录/data/cmdb/cmdb_webserver/web
web.webServer.site.resourcesPath前端资源目录/tmp/
web.webServer.site.authScheme前端权限模式,可选 internal、iaminternal
web.webServer.site.bkDomain前端 Cookie domain 地址空
web.webServer.site.helpDocUrl帮助文档地址空
web.webServer.session.name会话名cc3
web.webServer.session.multipleOwner是否允许同一用户同时多端登录,0 不支持、1 支持0
web.webServer.session.userInfo登录账号密码,以 : 分隔空
web.webServer.app.authAppCode / authUrl / authScheme权限中心接入配置空
web.webServer.login.version登录系统,skip-login 免登录、blueking 蓝鲸登录、oa 公司 OAskip-login
web.webServer.changelogPath.ch / en中英文版本日志存放路径/data/cmdb/cmdb_webserver/changelog_user/{ch,en}
web.webServer.jwt.enabled / publicKey / privateKeywebserver 使用的 JWT 认证开关与密钥false / 空
web.webServer.enableNotification是否启用消息通知false

从源码 src/web_server/app/server.go 的 onServerConfigUpdate 回调可以看出这些配置的实际消费方式:webServer.site.domainUrl、htmlRoot、bkLoginUrl、appCode、checkUrl、authscheme 会被写入运行时 Site 结构;其中 authscheme 读取失败时默认回退为 internal,es.fullTextSearch 读取失败时默认回退为 off。deploymentMethod == BluekingDeployment 时,前端 API 请求走 apigw 客户端(apigw.Cmdb),否则走引擎内置的 CoreAPI.ApiServer(),这与 Web 层依赖 apiserver 的架构一致。

存储组件配置

MongoDB
参数描述默认值
mongodb.enabled是否部署内置 mongodb;使用外部数据库时设为 falsetrue
mongodb.persistence.size内置 mongodb 持久化容量10Gi
mongodb.architecture部署架构replicaset
mongodb.replicaCount副本数1
mongodb.arbiter.enabled是否启用 arbiterfalse
mongodb.auth.enabled是否启用认证true
mongodb.auth.username内置认证用户名cc
mongodb.auth.password内置认证密码(必填)空
mongodb.auth.database认证数据库cmdb
mongodb.host内置 mongodb 的 headless 服务地址mongodb-headless.default.svc.cluster.local

当使用外部 MongoDB 时,按 mongodb.externalMongodb 前缀配置(默认值见 values.yaml):

参数描述默认值
mongodb.externalMongodb.enabled是否启用外部 mongodbtrue
mongodb.externalMongodb.usr认证用户名空
mongodb.externalMongodb.pwd认证密码空
mongodb.externalMongodb.database数据库名cmdb
mongodb.externalMongodb.host连接地址空(示例 127.0.0.1:27017)
mongodb.externalMongodb.maxOpenConns最大打开连接数3000
mongodb.externalMongodb.maxIdleConns最大空闲连接数100
mongodb.externalMongodb.mechanism认证机制SCRAM-SHA-1
mongodb.externalMongodb.rsName副本集名称rs0
mongodb.externalMongodb.socketTimeoutSecondssocket 超时(秒),最小 5s、最大 30s10
mongodb.externalMongodb.tls.caFile/certFile/keyFile/pemFile/insecureSkipVerifyTLS 相关配置证书文件名(拼 certPath)/ true

从 _helpers.tpl 的 cmdb.mongodb.addr 模板可以看到:当 mongodb.enabled=true 时,webserver 实际连接 {{ releaseName }}-mongodb-0.{{ releaseName }}-mongodb-headless...:27017;设为 false 后则改用 externalMongodb.host。configmap.yaml 中 mongodb 段的 maxOpenConns、maxIdleConns、mechanism、rsName、socketTimeoutSeconds、enable、tls 均直接来自 externalMongodb 段,且 tls 证书文件名会与 certPath(默认 /data/cmdb/cert)拼接。

Redis
参数描述默认值
redis.enabled是否部署内置 redis;使用外部时设为 falsetrue
redis.master.persistence.size内置 redis 持久化容量10Gi
redis.architecture部署架构standalone
redis.auth.enabled是否启用认证true
redis.auth.password认证密码(必填)空

使用外部 Redis 时,CMDB 会用到四类 Redis 连接,需分别配置(默认值见 values.yaml):

  • redis.redis:业务主 Redis;
  • redis.snapshotRedis:快照 Redis;
  • redis.discoverRedis:服务发现缓存 Redis;
  • redis.netCollectRedis:网络采集 Redis。

每组参数一致,均为:

参数描述默认值
host连接地址(示例 127.0.0.1:6379,支持逗号分隔多地址)空
pwd密码空
database库号0
maxOpenConns最大打开连接数3000
maxIdleConns最大空闲连接数100
sentinelPwdSentinel 密码空
masterNameSentinel 主节点名空
tls.caFile/certFile/keyFile/insecureSkipVerifyTLS 配置true

cmdb.redis.host 模板(templates/_helpers.tpl)逻辑为:内置模式连接 {{ releaseName }}-redis-master:6379,外部模式使用 redis.redis.host。

Zookeeper 与配置/服务发现中心
参数描述默认值
zookeeper.enabled是否部署内置 zookeeper 作为配置发现中心、服务发现中心;使用外部时设为 falsetrue
configAndServiceCenter.addr外部配置发现中心、服务发现中心地址;zookeeper.enabled=false 时使用空(示例 127.0.0.1:2181)
configAndServiceCenter.tls.insecureSkipVerifyZK 连接是否跳过证书校验true
configAndServiceCenter.tls.caFile/certFile/keyFile/passwordZK TLS 证书文件名与口令zookeeper/zk.ca、zk.cert、zk.key / 空

addr 支持逗号分隔配置多个地址(见下文常见问题)。webserver 的启动参数 --regdiscv 即取自该配置;若配置了 zookeeperCert 证书(base64 内容),cmdb.configAndServiceCenter.certCommand 模板还会追加 --regdiscv-cafile/--regdiscv-skipverify/--regdiscv-certfile/--regdiscv-keyfile 等启动参数,证书会通过 ConfigMap 挂载到 Pod 的 certPath/zookeeper 目录。

Elasticsearch 与 monstache 全文检索

参数描述默认值
web.es.fullTextSearch全文索引开关,可选 on/offoff
elasticsearch.enabled是否启动内置 ESfalse
elasticsearch.master.replicas内置 ES master 节点数1
elasticsearch.coordinating.replicas内置 ES 协调节点数1
elasticsearch.data.replicas内置 ES 数据节点数1

monstache 是一个用于将 MongoDB 数据同步到 Elasticsearch 创建索引的组件,相关参数:

参数描述默认值
monstache.enabled是否启动内置 monstache;使用外部时设为 falsefalse
monstache.image.repository镜像名cmdb_monstache
monstache.image.tag镜像版本自动使用 appVersion
monstache.replicasPod 副本数1
monstache.port服务端口80
monstache.workDir工作路径/data/cmdb/monstache
monstache.configDir配置文件路径/data/cmdb/monstache/etc
monstache.directReadDynamicIncludeRegexmonstache 配置内容(较长,详见 values.yaml 原文)见 values.yaml
monstache.mapperPluginPathmonstache 配置内容/data/cmdb/monstache/monstache-plugin.so
monstache.elasticsearchShardNumES 分片数1
monstache.elasticsearchReplicaNumES 副本数1

注意:Web Chart 的 web.es.fullTextSearch 与 Backend Chart 的 common.es.fullTextSearch 需要配套开启,全文检索才能真正生效。

可观测性与日志接入

bkLogConfig(蓝鲸日志平台接入),通过 templates/bklogconfig.yaml 渲染 BkLogConfig CRD 资源:

参数描述默认值
bkLogConfig.file.enabled是否采集容器内落地文件日志false
bkLogConfig.file.dataId文件日志 dataid(需在日志平台申请分配)1
bkLogConfig.std.enabled是否采集容器标准输出日志false
bkLogConfig.std.dataId标准输出日志 dataid1

开启后,文件日志会按 /data/cmdb/cmdb_*/logs/* 的路径模式采集。

serviceMonitor(Prometheus 监控),通过 templates/servicemonitor.yaml 渲染 monitoring.coreos.com/v1 的 ServiceMonitor,采集 webserver 的 /metrics 指标:

参数描述默认值
serviceMonitor.enabled是否开启服务监控false
serviceMonitor.interval指标采集间隔15s
serviceMonitor.metricRelabelings指标重打标配置[]

另外,web.monitor 段还支持接入蓝鲸监控插件(pluginName 可选 noop、blueking),以及 web.openTelemetry 段的跟踪链接入(enable、endpoint、bkDataID、bkDataToken),均可在 values.yaml 中按注释取值范围配置。

典型配置案例

以下案例均直接以 values.yaml 覆盖文件(或 helm install --values xxx.yaml)的方式使用。

案例 1:使用外接 MongoDB

mongodb:
  enabled: false
  # external mongo configuration
  externalMongodb:
    enabled: true
    usr: xxx
    pwd: xxx
    database: cmdb
    host: 127.0.0.1:27017
    maxOpenConns: 3000
    maxIdleConns: 100
    mechanism: SCRAM-SHA-1
    rsName: rs0
    socketTimeoutSeconds: 10
  # watch 相关外部 mongodb 配置(监听同步场景)
  watch:
    usr: xxx
    pwd: xxx
    database: cmdb
    host: 127.0.0.1:27017
    maxOpenConns: 3000
    maxIdleConns: 100
    mechanism: SCRAM-SHA-1
    rsName: rs0
    socketTimeoutSeconds: 10

案例 2:使用外接 Redis

redis:
  enabled: false
  # external redis configuration
  redis:
    host: 127.0.0.1:6379
    pwd: xxx
    database: "0"
    maxOpenConns: 3000
    maxIdleConns: 100
    sentinelPwd: xxx
    masterName: xxx

  snapshotRedis:
    host: 127.0.0.1:6379
    pwd: xxx
    database: "0"
    maxOpenConns: 3000
    maxIdleConns: 100
    sentinelPwd: xxx
    masterName: xxx

  discoverRedis:
    host: 127.0.0.1:6379
    pwd: xxx
    database: "0"
    maxOpenConns: 3000
    maxIdleConns: 100
    sentinelPwd: xxx
    masterName: xxx

  netCollectRedis:
    host: 127.0.0.1:6379
    pwd: xxx
    database: "0"
    maxOpenConns: 3000
    maxIdleConns: 100
    sentinelPwd: xxx
    masterName: xxx

案例 3:使用外接 Zookeeper 作为配置发现中心和服务发现中心

zookeeper:
  enabled: false
configAndServiceCenter:
  addr: 127.0.0.1:2181

案例 4:使用 Elasticsearch 全文检索

使用 ES 首先需要打开开关:

web:
  es:
    fullTextSearch: "on"

在 CMDB 中使用 ES 依赖两个组件:ES 本身,以及用于将 MongoDB 数据同步到 ES 的 monstache。有三种组合方式:

(1)使用内置组件:将内置 ES 与 monstache 同时开启:

elasticsearch:
  enabled: true

monstache:
  enabled: true

(2)全部使用外接组件:仅配置外部 ES 连接信息(此时外部 monstache 与 Chart 无配置关联):

common:
  es:
    url: xxx
    usr: xxx
    pwd: xxx

(3)内置 monstache + 外部 ES:开启 monstache 并配置外部 ES 即可:

monstache:
  enabled: true

common:
  es:
    url: xxx
    usr: xxx
    pwd: xxx

案例 5:配置 webserver 不同的服务暴露方式

默认通过 Ingress 暴露(域名 cmdb.example.com),也可以改用 NodePort 直接访问:

webserver:
  ingress:
    enabled: false
  service:
    type: "NodePort"
    ports:
      - name: http
        protocol: TCP
        port: 80
        targetPort: 80
        nodePort: 32033 # 端口可以自定义

同时修改站点访问域名,使其与 NodePort 端口保持一致:

web:
  webServer:
    site:
      domainUrl: http://127.0.0.1:32033/ # ip 需根据实际情况配置,端口为上面配置的同一端口

修改后即可通过 ip:32033 方式访问。

案例 6:开启权限验证(IAM)

通过以下配置开启鉴权:

iam:
  auth:
    enabled: true

# 配置权限中心和 esb 地址、app code、app secret,开启前端的 auth
bkIamApiUrl: xxx
bkComponentApiUrl: xxx

web:
  esb:
    appCode: xxx
    appSecret: xxx
  webServer:
    site:
      authScheme: iam

从源码 src/web_server/app/server.go 可以确认,authScheme 的合法取值包括 internal 与 iam,配置读取失败时默认回落为 internal(即不鉴权)。

案例 7:使用蓝鲸方式登录

# paas 地址
bkPaasUrl: xxx
# bk-login 地址
bkLoginApiUrl: xxx

web:
  webServer:
    site:
      appCode: bk_cmdb
    login:
      version: blueking

login.version 的可选值为 skip-login(免登录)、blueking(蓝鲸登录)、oa(公司 OA 登录),其中 opensource 也由 _helpers.tpl 中的登录 URL 模板做了特殊处理(登录跳转地址留空)。当选择 blueking 后,NOTES.txt 会提示通过蓝鲸登录方式进行账号登录;若 session.userInfo 配置了账号密码(如 cc:cc),NOTES.txt 也会将其打印为登录凭据。

证书相关配置

参数描述默认值
certPath证书挂载到 Pod 内的路径/data/cmdb/cert
mongodbCert.mongodb.ca/cert/key连接 MongoDB 的 CA/客户端证书/密钥(base64 编码内容)空
redisCert.redis.ca/cert/key连接 Redis 的 CA/客户端证书/密钥(base64 编码内容)空
zookeeperCert.ca/cert/key连接 Zookeeper 的证书内容(base64 编码)空
gseCert.ca/cmdbCert/cmdbKeyGSE 相关证书(Backend Chart 使用)空

证书以 base64 形式写入 values,模板通过 b64dec 解码后生成 ConfigMap(见 webserver-mongodb-cert-configmap.yaml,redis/zookeeper 证书 ConfigMap 同理),再挂载到容器的 certPath 对应子目录;configmap.yaml 中 mongodb/redis 的 tls 证书路径会自动拼接 certPath 前缀。

常见问题

1. Helm Chart 启动后如何访问?

默认访问方式是通过 Ingress,域名为 cmdb.example.com(取自 webserver.ingress.host)。因此需要为它配置 DNS 解析,例如在机器 /etc/hosts 文件中配置:

127.0.0.1 cmdb.example.com

在 minikube 环境通过下面指令启用 Ingress 控制器:

minikube addons enable ingress

配置完成后,通过 cmdb.example.com 访问(若 login.version 非 skip-login/blueking,则访问 cmdb.example.com/login 进行登录)。默认账号为 cc,密码为 cc(对应 web.webServer.session.userInfo 配置)。需要说明的是,Web Chart 默认 login.version: skip-login(免登录模式),如需账号密码登录应参考上文"蓝鲸方式登录"或"权限验证"案例调整。

2. 如何配置多个外置 Zookeeper 地址作为服务中心?

通过逗号 , 分隔多个地址:

configAndServiceCenter:
  addr: 127.0.0.1:2181,127.0.0.2:2181

3. 如何配置多个外置 Redis 地址?

同样通过逗号分隔:

redis:
  # external redis configuration
  redis:
    host: 127.0.0.1:6379,127.0.0.2:6379

4. 如何配置多个外置 MongoDB 地址?

同样通过逗号分隔:

mongodb:
  # external mongo configuration
  externalMongodb:
    enabled: true
    usr: xxx
    pwd: xxx
    database: cmdb
    host: 127.0.0.1:27017,127.0.0.2:27018

5. 服务启动缓慢或起不来怎么办?

CMDB 启动依赖 redis、mongodb、zookeeper 等组件,部分服务需要等依赖组件 ready 后才启动,再加上初始化流程,需要等待一段时间服务才能就绪(webserver 的 /healthz 探针默认 initialDelaySeconds: 30)。如果某些服务长时间无法启动,请确认初始化 Job 是否执行完成。

若部署在未接入蓝鲸权限中心的环境中,authserver 因缺少权限中心配置可能无法启动(该服务在 Backend Chart 中默认启用)。此时可暂时关闭它:

authserver:
  enabled: false

或按"案例 6:开启权限验证"补齐权限中心所需配置。

小结

BK-CMDB Web Chart 将 webserver 前端服务与 MongoDB、Redis、Zookeeper、Elasticsearch 等依赖组件的编排收敛到一个 values.yaml 中,通过位点开关(enabled 字段)即可在"内置组件(测试环境)"与"外部组件(生产环境)"两种模式间切换。本文覆盖了从环境准备、镜像制作、安装卸载,到全部参数解读、七大配置案例与常见问题的完整链路;结合 configmap.yaml、webserver-dpl.yaml 与 src/web_server/app/server.go 中的源码佐证,读者可以据此定制出符合自身环境的高可用部署方案。

  • 后端
  • 企业应用
  • 运维

【免费下载链接】bk-cmdb

蓝鲸智云配置平台(BlueKing CMDB)

项目地址: https://gitcode.com/gh_mirrors/bk/bk-cmdb
点击查看 免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值