集群 root 启用

本规范旨在为集群添加 root 启用支持。

Launchpad蓝图

https://blueprints.launchpad.net/trove/+spec/vertica-cluster-user-features

问题描述

Trove 的集群 API 当前不支持 root 启用。

提议的变更

为集群添加 root 启用支持,并提供可选的用户提供的密码。用户提供的密码对于在 Horizon 中提供良好的用户体验至关重要,启用 root 用户应该允许用户输入密码,而不是要求用户在响应对话框中等待密码弹出。

配置

数据库

公共 API

此更改将添加一个新的 /clusters/<cluster_id>/root 资源,类似于实例上的 /root 资源,并添加可选密码。

请求

{
  "password": "secretsecret"
}
  • POST /v1.0/​[account-id]/clusters/<cluster_id>/root

响应

{
  "username": "root",
  "password": "secretsecret"
}
  • GET /v1.0/​<tenant_id>/clusters/<cluster_id>/root

  • DELETE /v1.0/​​<tenant_id>/clusters/<cluster_id>/root

公共 API 安全

此 API 的安全性将以与现有实现相同的方式处理。

Python API

CLI (python-troveclient)

将添加新的 cluster-root-enable 和 cluster-root-show 命令

更改将影响

troveclient/v1/root.py troveclient/v1/shell.py troveclient/v1/clusters.py

内部 API

应为集群添加 root 启用支持。更改包括

trove/extensions/routes/mysql.py trove/extensions/mysql/service.py trove/extensions/mysql/models.py trove/guestagent/api.py

Guest Agent

guestagent API 将获得一个新的 enable_root(self, password) 函数,该函数允许可选地向 guest agent 提供密码。此函数将添加到现有函数,以确保与现有镜像的向后兼容性。

此外,每个 guest agent 数据存储实现都需要实现 enable_root(password) 函数。

备选方案

实现

里程碑

Liberty

工作项

  • API 更改

  • Guest agent 更改

  • CLI 更改

  • 内部 API 更改

升级影响

依赖项

测试

将添加新的单元和场景测试,以断言 root 启用在集群级别按预期工作

文档影响

需要记录对 clusters 资源所做的 API 更改以及新集群 root 资源的添加。

参考资料