跳到主要内容
版本:4.x

安装部署

安装前准备

部署前确认以下条件:

  • Doris Operator 已提前安装并正常运行。Enterprise Manager on K8s 部署清单不包含 Doris Operator,安装方法参见 安装 Doris Operator
  • DorisClusterDorisDisaggregatedCluster 两种 CRD 已安装。
  • Kubernetes 集群存在默认 StorageClass,并有足够的计算和存储资源。
  • 用于安装的 Kubernetes 身份可以创建 NamespaceClusterRoleClusterRoleBindingDeploymentStatefulSetService 和 PVC。
  • Kubernetes 集群节点可以访问 Docker Hub 上的公开镜像。

检查 Doris Operator 和 CRD:

kubectl get pods -n doris
kubectl get crd \
dorisclusters.doris.selectdb.com \
dorisdisaggregatedclusters.disaggregated.cluster.doris.com

检查默认 StorageClass

kubectl get storageclass

确认至少有一个 StorageClass 标记为 (default)

下载部署清单

从 SelectDB 下载中心获取与 Manager 版本一致的部署清单:

curl -fLO \
https://enterprise-doris-releases.oss-cn-beijing.aliyuncs.com/doris-manager/v26.2.0/selectdb-manager.yaml

创建应用 Secret

部署清单使用固定的 selectdb-manager 命名空间,并引用 selectdb-manager-secret。先创建命名空间:

kubectl create namespace selectdb-manager \
--dry-run=client -o yaml | kubectl apply -f -

准备 MetaDB 密码和 Studio 认证密钥,然后创建 Secret:

read -s DB_PASS
AUTH_SECRET="$(openssl rand -hex 32)"

kubectl create secret generic selectdb-manager-secret \
--namespace selectdb-manager \
--from-literal=DB_PASS="$DB_PASS" \
--from-literal=AUTH_SECRET="$AUTH_SECRET" \
--dry-run=client -o yaml | kubectl apply -f -

unset DB_PASS AUTH_SECRET

请妥善保管 MetaDB 密码。已有 MetaDB 数据时不要随意修改该密码。

部署 Enterprise Manager on K8s

应用部署清单:

kubectl apply -f selectdb-manager.yaml

检查工作负载和存储状态:

kubectl get pods,svc,pvc -n selectdb-manager

确认 Manager、Studio 和 MetaDB 的 Pod 均为 Running,容器均已就绪,三个 PVC 均为 Bound

访问 Manager

Manager Web 服务对应的 Service 默认使用 ClusterIP 类型。可以根据集群环境选择以下访问方式。

使用 Ingress

生产环境推荐使用 Ingress。Kubernetes 集群需要已安装 Ingress Controller,并准备好访问域名和 TLS Secret。创建 selectdb-manager-ingress.yaml,按实际环境修改 ingressClassName、域名和 secretName

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: selectdb-manager
namespace: selectdb-manager
spec:
ingressClassName: nginx
tls:
- hosts:
- manager.example.com
secretName: selectdb-manager-tls
rules:
- host: manager.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: selectdb-manager-webserver
port:
name: http
kubectl apply -f selectdb-manager-ingress.yaml
kubectl get ingress -n selectdb-manager

在浏览器中通过配置的域名访问 Manager,例如 https://manager.example.com

使用 LoadBalancer

在支持云负载均衡器或 MetalLB 的集群中,可以将 Service 改为 LoadBalancer

kubectl patch service selectdb-manager-webserver \
-n selectdb-manager --type merge \
-p '{"spec":{"type":"LoadBalancer"}}'
kubectl get service selectdb-manager-webserver -n selectdb-manager

Service 获得外部 IP 地址后,通过对应地址访问 Manager。是否使用 HTTPS 取决于负载均衡器和 TLS 配置。

使用 NodePort

没有 Ingress 的测试或内网环境可以使用 NodePort

kubectl patch service selectdb-manager-webserver \
-n selectdb-manager --type merge \
-p '{"spec":{"type":"NodePort"}}'
kubectl get service selectdb-manager-webserver -n selectdb-manager

通过 http://<NodeIP>:<NodePort> 访问 Manager。NodePort 默认不提供 TLS,不建议直接暴露到公网。使用 LoadBalancer 或 NodePort 时,升级前需要将 Service 类型等自定义配置合并到新版本部署清单中。

使用端口转发

仅需快速验证部署结果时,可以使用端口转发:

kubectl port-forward \
--namespace selectdb-manager \
service/selectdb-manager-webserver 8004:8004

端口转发建立后,可以通过 http://127.0.0.1:8004 临时访问 Manager。

使用所选方式对应的地址打开 Manager Web 页面。首次访问时,按页面提示创建管理员并完成初始化。

管理员初始化页面

初始化完成后进入 Manager 首页。

Manager 首页