diff --git a/cmd/operator/main.go b/cmd/operator/main.go index 2953bbda..cd93bb04 100644 --- a/cmd/operator/main.go +++ b/cmd/operator/main.go @@ -90,6 +90,7 @@ func init() { utilruntime.Must(dorisv1.AddToScheme(scheme)) utilruntime.Must(dv1.AddToScheme(scheme)) + //deprecated: //utilruntime.Must(dmsv1.AddToScheme(scheme)) //add foundationdb scheme //utilruntime.Must(v1beta2.AddToScheme(scheme)) diff --git a/doc/operation/initial_password.md b/doc/operation/initial_password.md new file mode 100644 index 00000000..791125c7 --- /dev/null +++ b/doc/operation/initial_password.md @@ -0,0 +1,155 @@ +# Configuring the Username and Password for the Management Cluster +The management of Doris nodes requires connecting to the live FE nodes via the MySQL protocol using a username and password for operations. Doris implements [a permission management mechanism similar to RBAC](https://doris.apache.org/zh-CN/docs/admin-manual/auth/authentication-and-authorization?_highlight=rbac#doris-%E5%86%85%E7%BD%AE%E7%9A%84%E9%89%B4%E6%9D%83%E6%96%B9%E6%A1%88), and the management of nodes requires the user to have the [Node_priv](https://doris.apache.org/zh-CN/docs/admin-manual/auth/authentication-and-authorization#%E6%9D%83%E9%99%90%E7%B1%BB%E5%9E%8B) permission. By default, Doris Operator deploys and manages the cluster configured with DorisCluster resources using the root user with all permissions in passwordless mode. After adding a password to the root user, it is necessary to explicitly configure the username and password with Node_Priv permission in the DorisCluster resource, so that Doris Operator can perform automated management operations on the cluster. +DorisCluster resources provide two ways to configure the username and password required for managing cluster nodes, including: +- the way of environment variable configuration and the way of using Secret. +- Configuring the username and password for cluster management can be divided into three cases: initializing the root user password during cluster deployment; +- automatically setting a non-root user with management permissions in the root passwordless deployment; setting the root user password after deploying the cluster in root passwordless mode. +## Configuring the Root User Password during Cluster Deployment +Doris supports configuring the root user's password in encrypted form in fe.conf. To configure the root user's password during the first deployment of Doris, follow these steps so that Doris Operator can automatically manage the cluster nodes: +**1. Generate the Root Encrypted Password** +Doris supports [setting the root user's password in the fe.conf](https://doris.apache.org/zh-CN/docs/admin-manual/config/fe-config?_highlight=initial_#initial_root_password) in encrypted form. The password encryption is implemented using two-stage SHA-1 encryption. The code implementation is as follows: +Java Code for Two-Stage SHA-2 Encryption: +```java +import org.apache.commons.codec.digest.DigestUtils; +public static void main( String[] args ) { + //the original password + String a = "123456"; + String b = DigestUtils.sha1Hex(DigestUtils.sha1(a.getBytes())).toUpperCase(); + //output the 2 stage encrypted password. + System.out.println("*"+b); + } +``` +Golang Code for Two-Stage SHA-1 Encryption: +```go +import ( +"crypto/sha1" +"encoding/hex" +"fmt" +"strings" +) + +func main() { + //original password + plan := "123456" + //the first stage encryption. + h := sha1.New() + h.Write([]byte(plan)) + eb := h.Sum(nil) + + //the two stage encryption. + h.Reset() + h.Write(eb) + teb := h.Sum(nil) + dst := hex.EncodeToString(teb) + tes := strings.ToUpper(fmt.Sprintf("%s", dst)) + //output the 2 stage encrypted password. + fmt.Println("*"+tes) +} +``` +Configure the encrypted password into fe.conf according to the requirements of the configuration file format. Then, distribute the configuration file to the k8s cluster in the form of a configmap according to the introduction in [the Cluster Parameter Configuration Section](https://doris.apache.org/zh-CN/docs/install/cluster-deployment/k8s-deploy/install-config-cluster#%E9%9B%86%E7%BE%A4%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE). +**2. Configure the DorisCluster Resource** +After setting the root initialization password in the configuration file, the root password will take effect immediately after the first Doris FE node starts. When other nodes join the cluster, Doris Operator needs to operate using the root username + password. It is necessary to specify the username + password in the deployed DorisCluster resource so that Doris Operator can automatically manage the cluster nodes. +- Using Environment Variables + Configure the username root and password into the ".spec.adminUser.name" and ".spec.adminUser.password" fields in the DorisCluster resource. Doris Operator will automatically convert the following configuration into environment variables for the container to use. The auxiliary services inside the container will use the username and password configured by the environment variables to add themselves to the specified cluster. The configuration format is as follows: + ```yaml + spec: + adminUser: + name: root + password: ${password} + ``` + Here, ${password} is the unencrypted password of root. +- Using Secret: + Doris Operator provides the use of [Basic authentication Secret](https://kubernetes.io/docs/concepts/configuration/secret/#basic-authentication-secret) to specify the username and password of the management node. After the DorisCluster resource is configured to use the required Secret, Doris Operator will automatically mount the Secret to the specified location of the container in the form of a file. The auxiliary services of the container will parse the username and password from the file to automatically add themselves to the specified cluster. The stringData of basic-authentication-secret only contains two fields: username and password. The process of using Secret to configure the management username and password is as follows: + a. Configure the Required Secret + Configure the required Basic authentication Secret according to the following format: + ```yaml + stringData: + username: root + password: ${password} + ``` + Here, ${password} is the unencrypted password set for root. +b. Configure the DorisCluster Resource to be Deployed + Configure the DorisCluster to specify the required Secret in the following format: + ```yaml + spec: + authSecret: ${secretName} + ``` + Here, ${secretName} is the name of the Secret containing the root username and password. +## Automatically Creating Non-Root Management Users and Passwords during Deployment (Recommended) +During the first deployment, do not set the initialization password of root. Instead, set the non-root user and login password through the environment variable or using Secret. The auxiliary services of the Doris container will automatically create the configured user in the database, set the password, and grant the Node_priv permission. Doris Operator will manage the cluster nodes using the automatically created username and password. +- Using Environment Variables: + Configure the DorisCluster resource to be deployed according to the following format: + ```yaml + spec: + adminUser: + name: ${DB_ADMIN_USER} + password: ${DB_ADMIN_PASSWD} + ``` + Here, ${DB_ADMIN_USER} is the newly created username, and ${DB_ADMIN_PASSWD} is the password set for the newly created username. +- Using Secret: +a. Configure the Required Secret + Configure the required Basic authentication Secret according to the following format: + ```yaml + stringData: + username: ${DB_ADMIN_USER} + password: ${DB_ADMIN_PASSWD} + ``` + Here, ${DB_ADMIN_USER} is the newly created username, and ${DB_ADMIN_PASSWD} is the password set for the newly created username. + Deploy the updated Secret to the k8s cluster by running `kubectl -n ${namespace} apply -f ${secretFileName}.yaml`. Here, ${namespace} is the namespace where the DorisCluster resource needs to be deployed, and ${secretFileName} is the file name of the Secret to be deployed. +b. Configure the DorisCluster Resource Requiring Secret + Update the DorisCluster resource according to the following format: + ```yaml + spec: + authSecret: ${secretName} + ``` + Here, ${secretName} is the name of the deployed Basic authentication Secret. + +:::tip Tip +After deployment, please set the root password. Doris Operator will switch to using the automatically newly created username and password to manage the nodes. Please avoid deleting the automatically created user. +::: +## Setting the Root User Password after Cluster Deployment +After the Doris cluster is deployed and the root user's password is set, it is necessary to configure a user with [Node_priv](https://doris.apache.org/zh-CN/docs/admin-manual/auth/authentication-and-authorization/#%E6%9D%83%E9%99%90%E7%B1%BB%E5%9E%8B) permission into the DorisCluster resource so that Doris Operator can automatically manage the cluster nodes. It is not recommended to use root as this username. Please refer to [the User Creation and Permission Assignment Section](https://doris.apache.org/zh-CN/docs/sql-manual/sql-statements/Account-Management-Statements/CREATE-USER) to create a new user and grant Node_priv permission. After creating the user, specify the new management user and password through the environment variable or Secret method, and configure the corresponding DorisCluster resource. +**1. Create a User with Node_priv Permission** +After connecting to the database using the MySQL protocol, use the following command to create a simple user with only Node_priv permission and set the password. +```shell +CREATE USER '${DB_ADMIN_USER}' IDENTIFIED BY '${DB_ADMIN_PASSWD}'; +``` +Here, ${DB_ADMIN_USER} is the username you hope to create, and ${DB_ADMIN_PASSWD} is the password you hope to set for the newly created user. +**2. Grant Node_priv Permission to the Newly Created User** +After connecting to the database using the MySQL protocol, use the following command to grant Node_priv permission to the newly created user. +```shell +GRANT NODE_PRIV ON *.*.* TO ${DB_ADMIN_USER}; +``` +Here, ${DB_ADMIN_USER} is the newly created username. +For detailed usage of creating users, setting passwords, and granting permissions, please refer to the official document [CREATE-USER](https://doris.apache.org/zh-CN/docs/sql-manual/sql-statements/Account-Management-Statements/CREATE-USER/) section. +**3. Configure DorisCluster** +- Using Environment Variables + Configure the newly created username and password into the ".spec.adminUser.name" and ".spec.adminUser.password" fields in the DorisCluster resource. Doris Operator will automatically convert the following configuration into environment variables. The auxiliary services inside the container will use the username and password configured by the environment variables to add themselves to the specified cluster. The configuration format is as follows: + ```yaml + spec: + adminUser: + name: ${DB_ADMIN_USER} + password: ${DB_ADMIN_PASSWD} + ``` + Here, ${DB_ADMIN_USER} is the newly created username, and ${DB_ADIC_PASSWD} is the password set for the newly created user. +- Using Secret + a. Configure the Required Secret + Configure the required Basic authentication Secret according to the following format: + ```yaml + stringData: + username: ${DB_ADMIN_USER} + password: ${DB_ADMIN_PASSWD} + ``` + Here, ${DB_ADMIN_USER} is the newly created username, and ${DB_ADMIN_PASSWD} is the password set for the newly created username. + Deploy the configured Secret to the k8s cluster by running kubectl -n ${namespace} apply -f ${secretFileName}.yaml. Here, ${namespace} is the namespace where the DorisCluster resource needs to be deployed, and ${secretFileName} is the file name of the Secret to be deployed. +b. Update the DorisCluster Resource Requiring Secret + Update the DorisCluster resource according to the following format: + ```yaml + spec: + authSecret: ${secretName} + ``` + Here, ${secretName} is the name of the deployed Basic authentication Secret. + +:::tip Tip +After setting the root password and configuring the new username and password for managing nodes after deployment, the existing services will be restarted once in a rolling manner. +::: diff --git a/doc/operation/initial_password_cn.md b/doc/operation/initial_password_cn.md new file mode 100644 index 00000000..4454dcb2 --- /dev/null +++ b/doc/operation/initial_password_cn.md @@ -0,0 +1,157 @@ +# 配置管理集群的用户名密码 +Doris 节点的管理需要通过用户名、密码以 mysql 协议连接活着的 fe 节点进行操作。Doris 实现[类似 RBAC 的权限管理机制](https://doris.apache.org/zh-CN/docs/admin-manual/auth/authentication-and-authorization?_highlight=rbac#doris-%E5%86%85%E7%BD%AE%E7%9A%84%E9%89%B4%E6%9D%83%E6%96%B9%E6%A1%88),节点的管理需要用户拥有 [Node_priv](https://doris.apache.org/zh-CN/docs/admin-manual/auth/authentication-and-authorization#%E6%9D%83%E9%99%90%E7%B1%BB%E5%9E%8B) 权限。Doris Operator 默认使用拥有所有权限的 root 用户无密码模式对 DorisCluster 资源配置的集群进行部署和管理。 root 用户添加密码后,需要在 DorisCluster 资源中显示配置拥有 Node_Priv 权限的用户名和密码,以便 Doris Operator 对集群进行自动化管理操作。 +DorisCluster 资源提供两种方式来配置管理集群节点所需的用户名、密码,包括:环境变量配置的方式,以及使用 [Secret](https://kubernetes.io/docs/concepts/configuration/secret/) 配置的方式。配置集群管理的用户名和密码分为 3 种情况: +- 集群部署需初始化 root 用户密码; +- root 无密码部署下,自动化设置拥有管理权限的非 root 用户; +- 集群 root 无密码模式部署后,设置 root 用户密码。 +## 集群部署配置 root 用户密码 +Doris 支持将 root 的用户以密文的形式配置在 fe.conf 中,在 Doris 首次部署时配置 root 用户的密码,请按照如下步骤操作,以便让 Doris Operator 能够自动管理集群节点: +**1. 构建 root 加密密码** +Doris 支持密文的方式在 [fe 的配置文件](https://doris.apache.org/zh-CN/docs/admin-manual/config/fe-config?_highlight=initial_#initial_root_password)中设置 root 用户的密码,密码的加密方式是采用 2 阶段 SHA-1 加密实现。代码实现如下: +java 代码实现 2 阶段 SHA-2 加密: +```java +import org.apache.commons.codec.digest.DigestUtils; + +public static void main( String[] args ) { + //the original password + String a = "123456"; + String b = DigestUtils.sha1Hex(DigestUtils.sha1(a.getBytes())).toUpperCase(); + //output the 2 stage encrypted password. + System.out.println("*"+b); + } +``` +golang 代码实现 2 阶段 SHA-1 加密: +```go +import ( +"crypto/sha1" +"encoding/hex" +"fmt" +"strings" +) + +func main() { + //original password + plan := "123456" + //the first stage encryption. + h := sha1.New() + h.Write([]byte(plan)) + eb := h.Sum(nil) + + //the two stage encryption. + h.Reset() + h.Write(eb) + teb := h.Sum(nil) + dst := hex.EncodeToString(teb) + tes := strings.ToUpper(fmt.Sprintf("%s", dst)) + //output the 2 stage encrypted password. + fmt.Println("*"+tes) +} +``` +将加密后的密码按照配置文件格式要求配置到 fe.conf 中, 根据[集群参数配置章节](https://doris.apache.org/zh-CN/docs/install/cluster-deployment/k8s-deploy/install-config-cluster#%E9%9B%86%E7%BE%A4%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE)的介绍将配置文件以 configmap 的形式下发到 k8s 集中。 +**2. 构建 DorisCluster 资源** +配置文件设置了 root 初始化密码,Doris fe 第一个节点启动后 root 的密码会立即生效,其他节点加入集群需要 Doris Operator 使用 root 用户名 + 密码的方式来操作。需要在部署的 DorisCluster 资源中指定用户名 + 密码,以便 Doris Operator 自动管理集群节点。 +- 环境变量方式 + 将用户名 root 和密码配置到 DorisCluster 资源中的 ".spec.adminUser.name" 和 ".spec.adminUser.password" 字段,Doris Operator 会自动将下列配置转为容器的环境变量使用,容器内的辅助服务会使用环境变量配置的用户名和密码来添加自身到指定的集群。配置格式如下: + ```yaml + spec: + adminUser: + name: root + password: ${password} + ``` + 其中,${password} 为 root 的非加密密码。 +- Secret 方式 + Doris Operator 提供使用 [Basic authentication Secret](https://kubernetes.io/docs/concepts/configuration/secret/#basic-authentication-secret) 来指定管理节点的用户名和密码,DorisCluster 资源配置需要使用的 Secret 后,Doris Operator 会自动将 Secret 以文件形式挂载到容器指定位置,容器的辅助服务会解析出文件的用户名和密码来自动添加自身到指定集群。basic-authentication-secret 的 stringData 只包含 2 个字段: username 和 password 。使用 Secret 配置管理用户名和密码流程如下: + a. 配置需要使用的 Secret + 按照如下格式配置需要使用的 Basic authentication Secret : + ```yaml + stringData: + username: root + password: ${password} + ``` + 其中 ${password} 为 root 设置的非加密密码。 + 将 Secret 通过 `kubectl -n ${namespace} apply -f ${secretFileName}.yaml` 将更新后的 Secret 部署到 k8s 集群中。其中 ${namespace} 为 DorisCluster 资源需要部署的命名空间,${secretFileName} 为需要部署的 Secret 的文件名称。 + b. 配置需要部署的 DorisCluster 资源 + 配置 DorisCluster 指定需要使用的 Secret 格式如下: + ```yaml + spec: + authSecret: ${secretName} + ``` + 其中,${secretName} 为包含 root 用户名和密码的 Secret 名称。 +## 部署时自动创建非 root 管理用户和密码(推荐) +在首次部署时不设置 root 的初始化密码,通过环境变量或者 Secret 的方式设置非 root 用户和登录密码。 Doris 容器的辅助服务会自动在数据库中创建配置的用户,设置密码和赋予 Node_priv 权限, Doris Operator 会以自动创建的用户名和密码管理集群节点。 +- 环境变量模式 + 按照如下格式配置需要部署的 DorisCluster 资源: + ```yaml + spec: + adminUser: + name: ${DB_ADMIN_USER} + password: ${DB_ADMIN_PASSWD} + ``` + 其中,${DB_ADMIN_USER} 为需要新建拥有管理权限的用户名,${DB_ADMIN_PASSWD} 为新建用户的密码。 +- Secret 方式 + a. 配置需要使用的 Secret + 按照如下格式配置需要使用的 Basic authentication Secret : + ```yaml + stringData: + username: ${DB_ADMIN_USER} + password: ${DB_ADMIN_PASSWD} + ``` + 其中 ${DB_ADMIN_USER} 为新创建的用户名,${DB_ADMIN_PASSWD} 为新建用户名设置的密码。 + 将 Secret 通过 `kubectl -n ${namespace} apply -f ${secretFileName}.yaml` 将更新后的 Secret 部署到 k8s 集群中。其中 ${namespace} 为 DorisCluster 资源需要部署的命名空间,${secretFileName} 为需要部署的 Secret 的文件名称。 + b. 配置需要使用 Secret 的 DorisCluster 资源 + 按照如下格式更新 DorisCluster 资源: + ```yaml + spec: + authSecret: ${secretName} + ``` + 其中,${secretName} 为部署的 Basic authentication Secret 的名称。 + +:::tip 提示 +- 部署后请设置 root 的密码,Doris Operator 会转为使用自动新建的用户名和密码管理节点,请避免删除自动化创建的用户。 +::: +## 集群部署后设置 root 用户密码 +Doris 集群在部署后设置了 root 用户的密码,需要配置一个拥有 [Node_priv](https://doris.apache.org/zh-CN/docs/admin-manual/auth/authentication-and-authorization/#%E6%9D%83%E9%99%90%E7%B1%BB%E5%9E%8B) 权限的用户到 DorisCluster 资源中,以便 Doris Operator 自动化的管理集群节点。此用户名不建议使用 root , 请参考[用户新建和权限赋值章节](https://doris.apache.org/zh-CN/docs/sql-manual/sql-statements/Account-Management-Statements/CREATE-USER)来创建新用户并赋予 Node_priv 权限。创建用户后,通过环境变量或者 Secret 的方式指定新的管理用户和密码,并配置对应的 DorisCluster 资源。 +1. 新建拥有 Node_priv 权限用户 +使用 mysql 协议连接数据库后,使用如下命令可以创建一个简易的仅拥有 Node_priv 权限的用户并设置密码。 +```shell +CREATE USER '${DB_ADMIN_USER}' IDENTIFIED BY '${DB_ADMIN_PASSWD}'; +``` +其中 ${DB_ADMIN_USER} 为希望创建的用户名,${DB_ADMIN_PASSWD} 为希望为新建用户设置的密码。 +2. 给新建用户赋予 Node_priv 权限 +使用 mysql 协议连接数据库后,使用如下命令赋予新建用户 Node_priv 权限。 +```shell +GRANT NODE_PRIV ON *.*.* TO ${DB_ADMIN_USER}; +``` +其中,${DB_ADMIN_USER} 为新创建的用户名。 +新建用户,设置密码,以及赋予权限详细使用,请参考官方文档 [CREATE-USER](https://doris.apache.org/zh-CN/docs/sql-manual/sql-statements/Account-Management-Statements/CREATE-USER/) 部分。 +3. 配置 DorisCluster 资源 +- 环境变量方式 + 将新创建的用户名和密码配置到 DorisCluster 资源中的 ".spec.adminUser.name" 和 ".spec.adminUser.password" 字段,Doris Operator 会自动将下列配置转为容器的环境变量。容器内的辅助服务会使用环境变量配置的用户名和密码来添加自身到指定的集群。配置格式如下: + ```yaml + spec: + adminUser: + name: ${DB_ADMIN_USER} + password: ${DB_ADMIN_PASSWD} + ``` + 其中,${DB_ADMIN_USER} 为新建的用户名,${DB_ADMIN_PASSWD} 为新建用户设置的密码。 +- Secret 方式 +a. 配置需要使用的 Secret + 按照如下格式配置需要使用的 Basic authentication Secret : + ```yaml + stringData: + username: ${DB_ADMIN_USER} + password: ${DB_ADMIN_PASSWD} + ``` + 其中 ${DB_ADMIN_USER} 为新创建的用户名,${DB_ADMIN_PASSWD} 为新建用户名设置的密码。 + 将 Secret 通过 `kubectl -n ${namespace} apply -f ${secretFileName}.yaml` 将配置好的 Secret 部署到 k8s 集群中。其中 ${namespace} 为 DorisCluster 资源需要部署的命名空间,${secretFileName} 为需要部署的 Secret 的文件名称。 +b. 更新需要使用 Secret 的 DorisCluster 资源 + 按照如下格式更新 DorisCluster 资源: + ```yaml + spec: + authSecret: ${secretName} + ``` + 其中,${secretName} 为部署的 Basic authentication Secret 的名称。 + +:::tip 提示 +- 部署后设置 root 密码,并配置新的拥有管理节点的用户名和密码后,会引起存量服务滚动重启一次。 +::: diff --git a/doc/operation/scale_up_down.md b/doc/operation/scale_up_down.md index e69de29b..c5105309 100644 --- a/doc/operation/scale_up_down.md +++ b/doc/operation/scale_up_down.md @@ -0,0 +1,49 @@ +# Doris Scaling +The scaling of Doris on K8S should update the replicas field of DorisCluster resource. +## Check DorisCluster Resource +The Doris have installed into default namespace. +Using the command `kubectl -n {namespace} get doriscluter` for getting the name of the deployed DorisCluster resource. +```shell +kubectl -n default get doriscluster +NAME FESTATUS BESTATUS CNSTATUS BROKERSTATUS +doriscluster-sample available available +``` +## scaling +use kubectl to modify `spec.feSpec.replicas` to scaling fe component of doris. +### FE scaling +**check fe replicas** +```shell +kubectl -n default get pods -l "app.kubernetes.io/component=fe" +NAME READY STATUS RESTARTS AGE +doriscluster-sample-fe-0 1/1 Running 0 10d +``` +**modify fe replicas** +```shell +kubectl -n default patch doriscluster doriscluster-sample --type merge --patch '{"spec":{"feSpec":{"replicas":3}}}' +``` +**check result** +```shell +NAME READY STATUS RESTARTS AGE +doriscluster-sample-fe-2 1/1 Running 0 9m37s +doriscluster-sample-fe-1 1/1 Running 0 9m37s +doriscluster-sample-fe-0 1/1 Running 0 8m49s +``` +### BE scaling +**check be replicas** +```shell +kubectl -n default get pods -l "app.kubernetes.io/component=be" +NAME READY STATUS RESTARTS AGE +doriscluster-sample-be-0 1/1 Running 0 3d2h +``` +**modify be replicas** +```shell + kubectl -n default patch doriscluster doriscluster-sample --type merge --patch '{"spec":{"beSpec":{"replicas":3}}}' +``` +**check result** +```shell + kubectl -n default get pods -l "app.kubernetes.io/component=be" +NAME READY STATUS RESTARTS AGE +doriscluster-sample-be-0 1/1 Running 0 3d2h +doriscluster-sample-be-2 1/1 Running 0 12m +doriscluster-sample-be-1 1/1 Running 0 12m +``` diff --git a/doc/operation/scale_up_down_cn.md b/doc/operation/scale_up_down_cn.md index 5fd5d77d..863b316b 100644 --- a/doc/operation/scale_up_down_cn.md +++ b/doc/operation/scale_up_down_cn.md @@ -1,5 +1,5 @@ # Doris扩缩容 -Doris在K8S之上的扩缩容可通过修改 DorisCluster 资源对应组件的 replicas 字段来实现。修改可直接编辑对应的资源,也可通过命令的方式。 +Doris在 K8S 之上的扩缩容可通过修改 DorisCluster 资源对应组件的 replicas 字段来实现。修改可直接编辑对应的资源,也可通过重新下发资源。 ## 获取 DorisCluster 资源 使用命令 `kubectl -n {namespace} get doriscluster` 获取已部署 DorisCluster 资源的名称.