Bk-User-Helm-Stack 是一个旨在快速部署用户管理部署工具,它在 Helm Chart 的基础上开发,旨在为用户管理产品提供方便快捷的部署能力。
要部署蓝鲸用户管理,首先需要准备 1 个 Kubernetes 集群(版本 1.12 或更高),并安装 Helm 命令行工具(版本 3.0 或更高)。
我们使用 Ingress
对外提供服务访问,所以请在集群中至少安装一个可用的 Ingress Controller
# 请将 `<HELM_REPO_URL>` 替换为 Chart 所在的 Helm 仓库地址
helm repo add bk-paas3 `<HELM_REPO_URL>`
helm repo update
由于蓝鲸用户管理 SaaS 是需要校验用户身份的服务,所以在能够正常访问前,请确认以下服务已就绪:
首先,你需要获取到蓝鲸平台的访问地址,例如 https://paas.example.com
,确保 https://paas.example.com/login
可以访问蓝鲸登录,然后将该值的内容填入全局环境变量中。
配置示例:
global:
env:
# 蓝鲸平台域名
BK_PAAS_URL: "https://paas.example.com"
你需要为用户管理提供一个访问根域,类似 example.com
,配置示例:
global:
sharedDomain: "example.com"
默认地,我们会为 Api
& SaaS
分别创建两个访问入口(Ingress):
bkuser.example.com
SaaS 页面访问入口bkuser-api.example.com
Api 访问入口
用户管理官方提供了两个镜像:
ccr.ccs.tencentyun.com/bk.io/bk-user-api:${version}
ccr.ccs.tencentyun.com/bk.io/bk-user-saas:${version}
我们会在每次发布用户管理新版时,会同步更新 Chart 中的镜像版本,所以如果你只是想使用最新版本的官方镜像,可以跳过此节,不用关注镜像的填写。
如果你想使用官方其他版本或者自己构建的镜像,也可以在 values.yaml
中修改,配置示例:
global:
image:
# 修改镜像地址,我们会按照 {registry}/{repository} 方式拼接
registry: any-mirrors-you-want.com/any-group
# 修改用户管理版本,从 https://github.com/TencentBlueKing/bk-user/releases 获取
tag: "v2.3.0"
我们为功能快速验证提供了内嵌的 mariadb
组件,但我们并不保证该数据库的高可用性,所以不建议在生产环境中直接使用。
如果你没有数据库方面的特殊要求,那么不需要关注以下 mariadb
的默认配置。
mariadb:
enabled: true
architecture: standalone
auth:
rootPassword: "root"
username: "bk-user"
password: "root"
primary:
# 默认我们未开启持久化,如有需求可以参考: https://kubernetes.io/docs/user-guide/persistent-volumes/
persistence:
enabled: false
initdbScriptsConfigMap: "bk-user-mariadb-init
如果你想要在生产环境中使用其他外部数据库,那么可以通过环境变量来指定,并禁用 mariadb
,配置示例:
bkuserapi:
enabeld: true
env:
# 手动指定外部 DB ,仅支持 MySQL/MariaDB
DB_NAME: "your-db-name"
DB_USER: "your-db-user"
DB_PASSWORD: "your-db-password"
DB_HOST: "your-db-host"
DB_PORT: "your-db-port"
# 外部 Celery Broker,任意符合要求的 Broker 存储均可
CELERY_BROKER_URL: "your-broker-url"
CELERY_RESULT_BACKEND: "your-broker-url"
# 手动取消内建存储挂载
envFrom: []
bkusersaas:
enabled: true
env:
DB_NAME: "your-db-name"
DB_USER: "your-db-user"
DB_PASSWORD: "your-db-password"
DB_HOST: "your-db-host"
DB_PORT: "your-db-port"
# 手动取消内建存储挂载
envFrom: []
mariadb:
enabled: false
redis:
enabled: false
默认地,我们未开启权限中心,如果在权限中心已经就绪之后,想体验用户管理功能,那么你可以手动向权限中心注册模型:
bkuserapi:
env:
# 填充权限中心相关变量
BK_IAM_V3_INNER_HOST: "https://iam.example.com"
# 打开权限中心模型注册,每次重新部署即会运行
preRunHooks:
bkiam-migrate:
enabled: true
bkusersaas:
env:
# 主动开启用户管理 SaaS 权限校验
DISABLE_IAM: false
我们需要为 admin
账户添加用户名密码,虽然我们给定了默认值,但是为了安全,请手动修改:
bkuserapi:
env:
# !!!请修改初始账号密码!!!
INITIAL_ADMIN_USERNAME: "your-user-name"
INITIAL_ADMIN_PASSWORD: "your-super-strong-password"
如果你已经准备好了 values.yaml
,就可以直接进行安装操作了
# 假定你想在 bk-user 命名空间安装
kubectl create namespace bk-user
helm install bk-user bk-user-stack -n bk-user -f values.yaml
安装过程中,命令行会预期阻塞等待数据库进行 migrate
操作:
- 首次安装时,会多次提示
Pod api-on-migrate pending
类似字样,原因是mariadb
等待就绪耗时较长,migrate
容器会不断失败重试,请耐心等待。 - 升级安装时,会出现
Pod api-on-migrate running
类似字样,表示正在执行migrate
操作,耗时一般在 10s 以内,具体视 migrate 内容而定,请耐心等待。
如果确认此次安装或更新无须变更数据库,可以临时手动关闭:
helm install bk-user bk-user-stack -n bk-user -f values.yaml \
--set api.preRunHooks.db-migrate.enabled=false \
--set saas.preRunHooks.db-migrate.enabled=false
如果在安装完成之后,访问 SaaS 地址出现 503
,可以检查一下 saas-web
容器是否完全就绪,静候就绪后刷新页面即可。
# 卸载资源
helm uninstall bk-user -n bk-user
# 已安装的 mariadb & redis 并不会被删除,防止没有开启持久化期间产生的数据被销毁
# 如果确认已不再需要相关内容,可以手动删除命名空间内的资源
# 独立命名空间时
kubectl delete ns bk-user
# 非独立命名空间时
kubectl delete deploy,sts,cronjob,pod,svc,ingress,secret,cm,sa,role,rolebinding,pvc -l app.kubernetes.io/instance=bk-user -n bk-user