You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Kubernetes集群中部署ArangoDB时修改默认用户名密码的可行方案

在Kubernetes中配置ArangoDB集群的用户名和密码

问题原因

你之前直接通过env字段设置ARANGO_ROOT_PASSWORD等变量未生效,核心原因是:ArangoDB Operator在Production环境下会接管认证配置,直接设置环境变量会被Operator覆盖;且首次部署后,密码已存储在数据库系统集合中,后续修改环境变量无法同步数据库内的密码。

解决方案

1. 首次部署时配置认证信息

通过spec.auth字段指定密码对应的Secret,这是ArangoDB Operator官方推荐的配置方式:

修改你的my_arango.yml,添加auth配置段:

apiVersion: "database.arangodb.com/v1"
kind: "ArangoDeployment"
metadata:
  name: "arangodb-cluster"
spec:
  metrics:
    mode: sidecar
    enabled: true
    image: 'arangodb/arangodb-exporter:0.1.8'
    tls: false
  annotations:
    prometheus.io/scrape: 'true'
    prometheus.io/port: '9101'
    prometheus.io/scrape_interval: '5s'
  mode: Cluster
  environment: Production
  tls:
    caSecretName: None
  agents:
    count: 3
    args:
      - --log.level=debug
    resources:
      requests:
        storage: 500Mi
    storageClassName: nfs-csi
  dbservers:
    count: 3
    resources:
      requests:
        storage: 500Mi
    storageClassName: nfs-csi
  coordinators:
    count: 3
  image: "arangodb/arangodb:3.10.3"
  # 添加认证配置
  auth:
    # 指定root用户密码的Secret名称
    rootPasswordSecretName: "arangodb-root-secret"
    # 如需创建额外普通用户,添加以下配置
    users:
      - username: "newusername"
        passwordSecretName: "arangodb-user-secret"

提前创建对应的Secret:

  • 创建root密码Secret:
kubectl create secret generic arangodb-root-secret --from-literal=password="your-new-root-password"
  • 创建普通用户Secret(如果配置了额外用户):
kubectl create secret generic arangodb-user-secret --from-literal=password="your-new-user-password"

最后重新部署:

kubectl apply -f my_arango.yml

2. 已部署集群修改密码

如果集群已经运行,需要通过ArangoDB内置工具修改数据库内的密码,步骤如下:

  1. 进入任意coordinator Pod:
kubectl exec -it $(kubectl get pods -l role=coordinator -o jsonpath='{.items[0].metadata.name}') -- arangosh --server.username root --server.password old-root-password
  1. 在arangosh交互界面执行修改命令:
// 修改root用户密码
require("@arangodb/users").update("root", "new-root-password");

// 如果修改普通用户密码
require("@arangodb/users").update("newusername", "new-user-password");
  1. (可选)同步更新对应的Secret,保持配置一致性:
# 更新root密码Secret
kubectl create secret generic arangodb-root-secret --from-literal=password="new-root-password" --dry-run=client -o yaml | kubectl replace -f -

# 更新普通用户Secret(如果有)
kubectl create secret generic arangodb-user-secret --from-literal=password="new-user-password" --dry-run=client -o yaml | kubectl replace -f -

内容的提问来源于stack exchange,提问作者Rajadurai M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 10:27:36