From 723b59e75dec3eb033d79d4118339f6f1e11974e Mon Sep 17 00:00:00 2001 From: yabinji Date: Mon, 12 Dec 2022 10:11:37 +0800 Subject: [PATCH 1/6] feat: release stack 2.0 docs --- .idea/modules.xml | 8 +++ .idea/mogdb-docs.iml | 8 +++ .idea/vcs.xml | 6 +++ product/zh/docs-mogdb-stack/v2.0/faq.md | 0 product/zh/docs-mogdb-stack/v2.0/overview.md | 0 .../zh/docs-mogdb-stack/v2.0/quick-start.md | 0 product/zh/docs-mogdb-stack/v2.0/release.md | 0 product/zh/docs-mogdb-stack/v2.0/toc.md | 54 +++++++++++++++++++ 8 files changed, 76 insertions(+) create mode 100644 .idea/modules.xml create mode 100644 .idea/mogdb-docs.iml create mode 100644 .idea/vcs.xml create mode 100644 product/zh/docs-mogdb-stack/v2.0/faq.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/overview.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/quick-start.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/release.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/toc.md diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 00000000..e4564eec --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/mogdb-docs.iml b/.idea/mogdb-docs.iml new file mode 100644 index 00000000..c956989b --- /dev/null +++ b/.idea/mogdb-docs.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..94a25f7f --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/faq.md b/product/zh/docs-mogdb-stack/v2.0/faq.md new file mode 100644 index 00000000..e69de29b diff --git a/product/zh/docs-mogdb-stack/v2.0/overview.md b/product/zh/docs-mogdb-stack/v2.0/overview.md new file mode 100644 index 00000000..e69de29b diff --git a/product/zh/docs-mogdb-stack/v2.0/quick-start.md b/product/zh/docs-mogdb-stack/v2.0/quick-start.md new file mode 100644 index 00000000..e69de29b diff --git a/product/zh/docs-mogdb-stack/v2.0/release.md b/product/zh/docs-mogdb-stack/v2.0/release.md new file mode 100644 index 00000000..e69de29b diff --git a/product/zh/docs-mogdb-stack/v2.0/toc.md b/product/zh/docs-mogdb-stack/v2.0/toc.md new file mode 100644 index 00000000..4ab19246 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/toc.md @@ -0,0 +1,54 @@ + + +# 文档 + +## MogDB Stack 文档目录 + ++ [关于MogDB Stack](/overview.md) ++ [快速上手](/quick-start.md) ++ 软件安装 + + [helm](installation/helm.md) + + [kustomize](installation/kustomize.md) + + [kubectl](installation/kubectl.md) ++ 使用手册 + + [开始](tutorial/getting-started.md) + + [创建MogDB集群](tutorial/create-a-mogdb-cluster.md) + + [连接MogDB集群](tutorial/conntect-to-mogdb-cluster.md) + + [扩缩容](tutorial/resize-a-mogdb-cluster.md) + + [定制MogDB集群](tutorial/customize-a-mogdb-cluster.md) ++ 架构 + + [高可用](architecture/high-availability.md) + + [监控](architecture/monitor.md) + + [备份](architecture/backup-management.md) + + [恢复](architecture/recovery-management.md) + + [客户端](architecture/client.md) ++ 参考 + + 命令行 + + [mgo](references/client/mgo.md) + + [mgo create](references/client/mgo-create.md) + + [mgo create mgorole](references/client/mgo-create-mgorole.md) + + [mgo create mgouser](references/client/mgo-create-mgouser.md) + + [mgo create cluster](references/client/mgo-create-cluster.md) + + [mgo show](references/client/mgo-show.md) + + [mgo show mgorole](references/client/mgo-show-mgorole.md) + + [mgo show mgouser](references/client/mgo-show-mgouser.md) + + [mgo show cluster](references/client/mgo-show-cluster.md) + + [mgo delete](references/client/mgo-delete.md) + + [mgo delete mgorole](references/client/mgo-delete-mgorole.md) + + [mgo delete mgouser](references/client/mgo-delete-mgouser.md) + + [mgo delete cluster](references/client/mgo-delete-cluster.md) + + [mgo scale](references/client/mgo-scale.md) + + [mgo scaledown](references/client/mgo-scaledown.md) + + [mgo switch](references/client/mgo-switch.md) + + [mgo update](references/client/mgo-update.md) + + [mgo update mgorole](references/client/mgo-update-mgorole.md) + + [mgo update mgouser](references/client/mgo-update-mgouser.md) + + [mgo update cluster](references/client/mgo-update-cluster.md) + + [mgo version](references/client/mgo-version.md) + + 服务端 + + [CRD参考](references/server/crd-references.md) + + [MogDB集群参考](references/server/mogdbcluster-sample.md) + + [MogDB备份参考](references/server/mogdbbackup-sample.md) + + [MogDB恢复参考](references/server/mogdbrecovery-sample.md) ++ [FAQ](faq.md) ++ [发布记录](release.md) \ No newline at end of file -- Gitee From e8388e6e5e92dba4f4f5ad39a49090139a9e7bec Mon Sep 17 00:00:00 2001 From: hhhhhzhen Date: Fri, 16 Dec 2022 14:03:27 +0800 Subject: [PATCH 2/6] feat(stack): add 2.0.0 tutorial --- .gitignore | 2 + .../tutorial/conntect-to-mogdb-cluster.md | 72 ++++++ .../v2.0/tutorial/create-a-mogdb-cluster.md | 118 ++++++++++ .../tutorial/customize-a-mogdb-cluster.md | 127 ++++++++++ .../v2.0/tutorial/getting-started.md | 219 ++++++++++++++++++ .../v2.0/tutorial/resize-a-mogdb-cluster.md | 107 +++++++++ 6 files changed, 645 insertions(+) create mode 100644 product/zh/docs-mogdb-stack/v2.0/tutorial/conntect-to-mogdb-cluster.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/tutorial/create-a-mogdb-cluster.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/tutorial/customize-a-mogdb-cluster.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/tutorial/getting-started.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/tutorial/resize-a-mogdb-cluster.md diff --git a/.gitignore b/.gitignore index 7011910b..89a1fdc4 100644 --- a/.gitignore +++ b/.gitignore @@ -77,3 +77,5 @@ yarn-error.log /scripts/doc.md .lycheecache lychee_out.md + +.idea \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/tutorial/conntect-to-mogdb-cluster.md b/product/zh/docs-mogdb-stack/v2.0/tutorial/conntect-to-mogdb-cluster.md new file mode 100644 index 00000000..56dcddb8 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/tutorial/conntect-to-mogdb-cluster.md @@ -0,0 +1,72 @@ +--- +title: 连接MogDB集群 +summary: 连接MogDB集群 +author: Wang Dong, hhhhhzhen +date: 2022-12-30 +--- + +# 连接到 MogDB 集群 + +在开始本章前,请确保您已正确依据[创建 MogDB 集群](create-a-mogdb-cluster.md)完成 MogDB 集群的安装。 + +## 修改密码 + +在连接之前,需要修改默认用户的密码。可以通过 kubectl 命令连接到主节点所在容器,修改密码。 + +```shell +kubectl exec -it pod/cluster1-nduk8 -c mogdb -n mogdb-operator-system -- /bin/bash +gsql -dpostgres +``` + +```sql +ALTER USER mogdb WITH PASSWORD 'P@55word!'; +``` + +## 连接到 MogDB + +### 1.安装 gsql 客户端 + +相关内容请参考 [gsql | MogDB Docs](https://docs.mogdb.io/zh/mogdb/v3.0/gsql)。 + +### 2.连接到 MogDB 集群 + +默认情况下,MogDB Operator 将创建两个有集群名称前缀的服务, 一个是主节点的 service,一个是从节点的 service。 + +以下命令将获取 `mogdb-operator-system` 命名空间中所有可用服务的列表: + +```shell +kubectl get svc -n mogdb-operator-system +``` + +预期输出: + +```text +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +cluster1-svc-master NodePort 10.96.158.193 5432:30013/TCP 13m +cluster1-svc-replicas NodePort 10.110.121.108 5432:30012/TCP 13m +mogdb-apiserver NodePort 10.99.235.65 8444:32444/TCP 33m +``` + +可以看到,主节点 service 开放端口为 30013,从节点 service 开放端口为 30012。您可以使用以下命令连接到数据库: + +```shell +gsql -h 127.0.0.1 -p 30013 -U mogdb -W P@55word! +``` + +然后应该会看到 mogdb 提示符: + +```text +gsql ((MogDB 3.1.0 build aef997f9) compiled at 2022-11-24 00:02:35 commit 0 last mr ) +Non-SSL connection (SSL connection is recommended when requiring high-security) +Type "help" for help. + +MogDB=> +``` + +
+ +### 3.在 Kubernetes 集群之外 + +由 MogDB Operator 创建两个带有集群名称前缀的 service,service 的类型 type 设置为 NodePort,可将 service 端口和主机端口映射起来。 + +只需要连接 “Host:Port” 即可。 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/tutorial/create-a-mogdb-cluster.md b/product/zh/docs-mogdb-stack/v2.0/tutorial/create-a-mogdb-cluster.md new file mode 100644 index 00000000..91730fbc --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/tutorial/create-a-mogdb-cluster.md @@ -0,0 +1,118 @@ +--- +title: 创建MogDB集群 +summary: 创建MogDB集群 +author: Wang Dong, hhhhhzhen +date: 2022-12-30 +--- + +# 创建 MogDB 集群 + +在开始本章前,请确保您已正确依据[开始](getting-started.md)完成 MogDB Stack 的安装与配置。 + +我们提供了两种方式供您创建 MogDB 集群。包括使用 mgo 客户端,或者使用 manifest。 + +我们建议使用 mgo 客户端方式。 + +
+ +## 使用 mgo 客户端 + +### 1.创建 MogDB 集群 + +以下命令将在 **mgo 默认命名空间**中创建具有默认配置的 MogDB 集群,更多信息请参考 [mgo create cluster](../references/client/mgo-create-cluster.md): + +```shell +mgo create cluster cluster1 +``` + +期望输出: + +```text +created cluster: cluster1 +``` + +此操作可能需要一些时间才能完成。 + +
+ +### 2.检查安装 + +以下命令将查询创建的集群的状态和信息,更多信息请参考 [mgo show cluster](../references/client/mgo-show-cluster.md): + +```shell +mgo show cluster cluster1 +``` + +当集群创建完毕后,期望输出如下: + +```text +cluster : cluster1 + pod : cluster1-ib7zq (Running) on mogdb-k8s-001 (3/3) (primary) + pod : cluster1-rtwdz (Running) on mogdb-k8s-002 (3/3) (standby) + service : cluster1-svc-master - ClusterIP (10.1.149.4) - Ports (5432:30013/TCP) + service : cluster1-svc-replicas - ClusterIP (10.1.175.46) - Ports (5432:30012/TCP) +``` + +
+ +### 3.创建集群过程 + +首先,mgo 客户端在自定义资源 mogdbcluster 中创建一个条目,其中包含创建集群所需的属性。 +在上面的例子中,mogdb 集群利用了 MogDB Operator 配置中的许多默认值。例如,默认两个从节点。 + +我们将在本教程后面讨论有关 MogDB Operator 配置的更多信息。 + +
+ +## 使用 manifest + +### 1.准备 manifest + +您可参照 [CRD 参考](../references/server/crd-references.md)进行集群定制。 + +简单的,我们提供了 manifest demo 供您快捷部署。以下命令将下载 manifest demo 到本地。 + +```shell +wget https://cdn-mogdb.enmotech.com/mogdb-stack/v2.0.0/mogdb-cluster.yaml +``` + +注意:该 manifest 默认使用您 kubernetes 集群中的 `local-path `存储类,以及 `30012` 和 `30013` 端口用于读写。如果您需要对其中的属性进行修改,请参考[CRD 参考](../references/server/crd-references.md)。 + +
+ +### 2.部署 manifest + +确保 manifest 内容符合您的环境和预期后,以下命令将部署 mogdb 集群到您的 kubernetes 集群中。 + +```shell +kubectl apply -f mogdb-cluster.yaml +``` + +期望输出: + +```shell +mogdbcluster.mogdb.enmotech.io/cluster1 created +``` + +
+ +### 3.检查安装 + +以下命令将检查 MogDB 节点是否正确运行: + +```shell +kubectl get pod,svc -n mogdb-operator-system --selector="mogdb.enmotech.io/cluster=cluster1" +``` + +预期输出: + +```shell +NAME READY STATUS RESTARTS AGE +pod/cluster1-lhomu 2/2 Running 0 3m +pod/cluster1-tygxc 2/2 Running 0 3m17s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/cluster1-svc-master NodePort 10.106.99.88 5432:30013/TCP 3m17s +service/cluster1-svc-replicas NodePort 10.96.219.62 5432:30012/TCP 3m17s +``` + diff --git a/product/zh/docs-mogdb-stack/v2.0/tutorial/customize-a-mogdb-cluster.md b/product/zh/docs-mogdb-stack/v2.0/tutorial/customize-a-mogdb-cluster.md new file mode 100644 index 00000000..10fbd9f1 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/tutorial/customize-a-mogdb-cluster.md @@ -0,0 +1,127 @@ +--- +title: 定制MogDB集群 +summary: 定制MogDB集群 +author: Wang Dong, hhhhhzhen +date: 2022-12-30 +--- + +# 定制 MogDB 集群 + +我们提供了两种方式供您创建 MogDB 集群。包括使用 mgo 客户端,或者使用 manifest。请按需选择。 + +我们建议使用 mgo 客户端方式。本章中我们将重点对 mgo 客户端方式进行阐述。 + +
+ +## 自定义 MogDB 集群 + ++ 指定 MogDB 版本 ++ 自定义 MogDB 配置 ++ 高可用性(如定制副本) ++ 资源分配(如内存、计算、存储) + +
+ +## 使用 mgo 客户端 + +自定义 MogDB 集群的配置有很多种。 您可以在 [mgo create cluster](../references/client/mgo-create-cluster.md) 中了解所有这些选项。 + +
+ +### 1.定义存储 + +MogDB 共定义了三种存储目录可用配置: + +- 数据目录:用于存储 MogDB 数据库的所有数据 +- 备份目录:用于存储 MogDB 数据库的备份内容 +- 日志目录:用于存储 MogDB 数据库的日志内容 + +数据库有各种不同的大小,而且这些大小肯定会随着时间而改变。因此能够指定要存储 MogDB 数据的 PVC 大小是很有帮助的。 + +
+ +#### 定义 MogDB 数据目录 + +mgo 允许您使用 `--data-storage-size` 标志选择 `MogDB 数据目录`的大小。PVC 大小应该使用标准的 Kubernetes 资源单元,例如 128Mi。 + +以下命令将创建一个具有 128Mi 大小数据目录的 MogDB 集群: + +```shell +mgo create cluster cluster1 --data-storage-size=20Gi +``` + +
+ +#### 定义 MogDB 备份目录 + +mgo 允许您使用 `--backup-storage-size` 标志选择 `MogDB 备份目录`的大小。其用于存储您的所有备份,因此您希望调整它的大小以满足您的备份保留策略。 + +以下命令将创建一个具有 1Gi 大小备份存储库的 MogDB 集群: + +```shell +mgo create cluster cluster1 --backup-storage-size=1Gi +``` + +
+ +#### 定义 MogDB 日志目录 + +mgo 允许您使用 `--log-storage-size` 标志选择 `MogDB 日志目录`的大小。因此您希望调整它的大小以满足您的日志保留策略。 + +以下命令将创建一个具有 1Gi 大小日志目录的 MogDB 集群: + +```shell +mgo create cluster cluster1 --log-storage-size=1Gi +``` + +
+ +### 2.定义内存/CPU + +数据库具有不同的 CPU 和内存要求,这通常取决于工作集中的数据量(即主动访问的数据)。Kubernetes 为 Pod 提供了几种管理 CPU 和内存资源的方法: + ++ Limits:该字段定义了 pod 所能使用资源的最大限额; ++ Requests:该字段定义了 pod 需要使用资源的最小限额,会影响 pod 的调度; + +一般的,我们可以理解为 pod 所使用的资源介于 [requests, limits] 的区间中。 + +**注意:如果 pod 使用的内存超出了 limits 限制,kubernetes 将尝试终止任何导致超出限制的进程。因此内存限制可能会影响 MogDB 的可用性,我们建议谨慎使用它们。** + +下面介绍如何自定义可用于 MogDB 节点的 CPU 和内存资源。自定义 CPU 和内存确实会为您的 MogDB 集群添加更多资源,但要充分利用额外资源,您将需要自定义 MogDB 配置并调整参数 shared_buffers 等。 + +#### 为 MogDB 定制内存/CPU + +mgo 提供了几个标志来帮助管理 MogDB 实例的资源: + ++ --cpu:指定 MogDB 实例的 CPU 请求 ++ --cpu-limit:指定 MogDB 实例的 CPU 限制 ++ --memory:指定 MogDB 实例的内存请求 ++ --memory-limit: 指定 MogDB 实例的内存限制 + +以下命令将创建一个 CPU 请求为 1.0,CPU 限制为 2.0,内存请求为 1Gi,内存限制为 2Gi 的 MogDB 集群: + +```shell +mgo create cluster cluster1 \ +--cpu=1.0 --cpu-limit=2.0 \ +--memory=1Gi --memory-limit=2Gi +``` + +
+ +### 3.创建高可用性 MogDB 集群 + +高可用性允许您部署具有冗余的 MogDB 集群,即使您的主实例发生停机事件,您的应用程序也可以访问它们。MogDB 集群使用 Kubernetes 附带的分布式共识存储系统,因此可用性与 Kubernetes 集群的可用性相关联。 + +要创建具有一个副节点的高可用性 MogDB 集群,您可以运行以下命令: + +```shell +mgo create cluster cluster1 --replicas=2 +``` + +您可以使用[mgo scale](../references/client/mgo-scale.md)和[mgo scaledown](../references/client/mgo-scaledown.md)命令扩展和缩容 MogDB 集群。 + +
+ +## 使用 manifest + +您可参照 [CRD 参考](../references/server/crd-references.md)以及[manifest demo](../references/server/mogdbcluster-sample.md)进行集群的定制。通过参照 CRD 字段说明,对 manifest 对应字段进行修改,即可完成对 MogDB 集群的高度定制。 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/tutorial/getting-started.md b/product/zh/docs-mogdb-stack/v2.0/tutorial/getting-started.md new file mode 100644 index 00000000..22c56735 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/tutorial/getting-started.md @@ -0,0 +1,219 @@ +--- +title: 开始 +summary: 开始 +author: Wang Dong, hhhhhzhen +date: 2022-12-30 +--- + +# 安装 MogDB Stack + +## 前置条件 + +- 已安装 kustomize v3+; +- 已安装可用 kubernetes 集群; +- 已获取 kubernetes 管理员权限; +- 已安装 kubectl 且具有访问 kubernetes 集群的正确配置; + +
+ +## 安装 MogDB Operator + +首先下载 MogDB Operator 安装包: + +```shell +wget https://cdn-mogdb.enmotech.com/mogdb-stack/v2.0.0/mogdb-operator.tar +``` + +
+ +### 1.安装 ha 组件 + +以下命令将使用 kustomize 生成 ha manifest,随后使用 kubectl 将其部署在 kubernetes 集群中: + +注:如果您需要对 manifest 进行自定义,请按需修改 `./kustomize/install/ha/kustomization.yaml` 中的内容。 + +```shell +kustomize build ./kustomize/install/ha | kubectl apply -f - +``` + +预期输出: + +```shell +namespace/mogha created +serviceaccount/mogdb-ha created +clusterrole.rbac.authorization.k8s.io/mogdb-ha-role created +clusterrolebinding.rbac.authorization.k8s.io/mogdb-ha-rolebinding created +service/mogdb-ha created +deployment.apps/mogdb-ha created +``` + +
+ +### 2.安装 MogDB Operator + +以下命令将使用 kustomize 生成 operator manifest,随后使用 kubectl 将其部署在 kubernetes 集群中: + +注: + +- 如果您需要对 manifest 进行自定义,请按需修改 `./kustomize/install/default/kustomization.yaml` 中的内容。 +- 如果您自定义了 ha 组件导致 ha service endpoint 变化,请修改 `./kustomize/install/manager/configmap.yaml` 中 `haServices` 部分。 + +```shell +kustomize build ./kustomize/install/default | kubectl apply -f - +``` + +期望输出: + +```text +namespace/mogdb-operator-system created +customresourcedefinition.apiextensions.k8s.io/mogdbbackups.mogdb.enmotech.io created +customresourcedefinition.apiextensions.k8s.io/mogdbclusters.mogdb.enmotech.io created +customresourcedefinition.apiextensions.k8s.io/mogdbrecoveries.mogdb.enmotech.io created +serviceaccount/mogdb-apiserver created +serviceaccount/mogdb-operator-controller-manager created +role.rbac.authorization.k8s.io/mogdb-operator-leader-election-role created +clusterrole.rbac.authorization.k8s.io/mgo-cluster-role created +clusterrole.rbac.authorization.k8s.io/mogdb-operator-manager-role created +rolebinding.rbac.authorization.k8s.io/mogdb-operator-leader-election-rolebinding created +clusterrolebinding.rbac.authorization.k8s.io/mgo-cluster-role created +clusterrolebinding.rbac.authorization.k8s.io/mogdb-operator-manager-rolebinding created +configmap/mogdb-operator-global-config created +configmap/mogdb-operator-manager-config created +secret/mgorole-admin created +secret/mgouser-admin created +secret/mogdb-operator-huawei-registry created +service/mogdb-apiserver created +deployment.apps/mogdb-apiserver created +deployment.apps/mogdb-operator-controller-manager created +``` + +
+ +### 3.检查安装 + +ha 组件默认安装在 `mogha` 命名空间中: + +```shell +kubectl get pods,svc -n mogha +``` + +预期输出: + +```shell +NAME READY STATUS RESTARTS AGE +pod/mogdb-ha-55cdbc7855-xfb8g 2/2 Running 0 44s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/mogdb-ha ClusterIP 10.107.90.105 6544/TCP 44s +``` + +operator 组件默认安装在 `mogdb-operator-system` 命名空间中: + +```shell +kubectl get pods,svc -n mogdb-operator-system +``` + +预期输出: + +```shell +NAME READY STATUS RESTARTS AGE +pod/mogdb-apiserver-f69bb9b9-4z9mp 1/1 Running 0 35s +pod/mogdb-operator-controller-manager-5b9f7dcc87-cf8fx 1/1 Running 0 35s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/mogdb-apiserver NodePort 10.99.235.65 8444:32444/TCP 35s +``` + +
+ +## 安装 mgo client + +> 请注意,mgo 客户端的版本**必须**与 MogDB Operator 的版本匹配。 + +### 1.准备安装脚本 + +```shell +wget https://cdn-mogdb.enmotech.com/mogdb-stack/v2.0.0/client-setup.sh +chmod +x client-setup.sh +``` + +
+ +### 2.安装 mgo client + +该脚本将下载 mgo 客户端并且提示您添加一些环境变量以供您在会话中设置: + +```shell +./client-setup.sh +``` + +预期输出: + +```shell +mgo Client Binary detected at: ~/.mgo +Updating Binary... +Downloading mgo_linux_x86_64 version: v2.0.0... + % Total % Received % Xferd Average Speed Time Time Time Current + Dload Upload Total Spent Left Speed +100 13.6M 100 13.6M 0 0 3482k 0 0:00:04 0:00:04 --:--:-- 3483k +mgo client files have been generated, please add the following to your bashrc +export PATH=${HOME?}/.mgo:$PATH +export MGOUSER=${HOME?}/.mgo/mgouser +export MGO_CA_CERT=${HOME?}/.mgo/client.crt +export MGO_CLIENT_CERT=${HOME?}/.mgo/client.crt +export MGO_CLIENT_KEY=${HOME?}/.mgo/client.key +``` + +您可通过以下命令添加环境变量,并根据需要选择是否将这些变量永久添加到您的环境中: + +注:变量 `MGO_APISERVER_URL` 需要指向 operator 所在命名空间中的 `service/mogdb-apiserver`。 + +```shell +export PATH="${HOME?}/.mgo:$PATH" +export MGOUSER="${HOME?}/.mgo/mgouser" +export MGO_CA_CERT="${HOME?}/.mgo/client.crt" +export MGO_CLIENT_CERT="${HOME?}/.mgo/client.crt" +export MGO_CLIENT_KEY="${HOME?}/.mgo/client.key" +export MGO_APISERVER_URL='https://127.0.0.1:32444' +``` + +
+ +### 3.检查安装 + +[mgo version](../references/client/mgo-version.md) 命令是检查 MogDB Operator 连接性的好方法,因为它是一个非常简单、安全的操作。试试看: + +```shell +mgo version +``` + +如果它正常工作,您应该会看到类似于以下内容的结果: + +```shell +mgo client version v2.0.0 +mgo-apiserver version v2.0.0 +``` + +
+ +### 4.[可选]设置mgo客户端 + +许多 mgo 命令要求传递命名空间标志 (-n) 。您可以使用 `MGO_NAMESPACE` 环境变量来设置 mgo 命令的默认命名空间: + +```shell +export MGO_NAMESPACE=mogdb-operator-system +``` + +之后执行以下命令将显示部署到 `mogdb-operator-system` 命名空间的所有 MogDB 集群: + +```shell +mgo show cluster --all +``` + +这相当于: + +```shell +mgo show cluster -n mogdb-operator-system --all +``` + +(注:**-n**优先于**MGO_NAMESPACE**。) diff --git a/product/zh/docs-mogdb-stack/v2.0/tutorial/resize-a-mogdb-cluster.md b/product/zh/docs-mogdb-stack/v2.0/tutorial/resize-a-mogdb-cluster.md new file mode 100644 index 00000000..7c816e30 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/tutorial/resize-a-mogdb-cluster.md @@ -0,0 +1,107 @@ +--- +title: 扩缩容 +summary: 扩缩容 +author: Wang Dong, hhhhhzhen +date: 2022-12-30 +--- + +# 扩缩容 MogDB 集群 + +在开始本章前,请确保您已正确依据[创建 MogDB 集群](create-a-mogdb-cluster.md)完成 MogDB 集群的安装。 + +由于我们提供了两种方式供您创建 MogDB 集群。包括使用 mgo 客户端,或者使用 manifest,因此该部分同样对两种方式进行说明,请依据您创建 MogDB 集群的方式进行选择。 + +我们建议使用 mgo 客户端方式。 + +
+ +## 使用 mgo 客户端 + +### 1.扩容 + +以下命令将对集群 cluster1 执行扩容,以向其添加副节点,更多信息请参考 [mgo scale](../references/client/mgo-scale.md): + +```shell +mgo scale cluster1 +``` + +
+ +### 2.缩容 + +要缩容 MogDB 集群,您必须提供要缩减的实例的目标。 + +以下命令将获取集群 cluster1 可以缩容实例的目标列表,更多信息请参考 [mgo scaledown](../references/client/mgo-scaledown.md): + +```shell +mgo scaledown cluster1 --query +``` + +期望输出: + +```text +PODNAME STATUS NODE +cluster1-rtwdz Running mogdb-k8s-002 +``` + +确定要缩容的实例后,执行以下命令进行缩容: + +```shell +mgo scaledown cluster1 --target=cluster1-rtwdz +``` + +
+ +## 使用 manifest + +通过 manifest 执行扩缩容的步骤相同,此处合并讲解。 + +### 1.修改 manifest + +确保 `.metadata.name` 与 `.metadata.namespace` 的内容与创建集群时保持一致后。修改 manifest 中 `.spec.replicas` 的数量到您期望的数量。 + +```yaml +apiVersion: mogdb.enmotech.io/v1 +kind: MogdbCluster +... +spec: + replicas: 3 +... +``` + +### 2.更新集群 + +以下命令将对已存在的 mogdb 集群进行更新: + +```shell +kubectl apply -f mogdb-cluster.yaml +``` + +期望输出: + +```shell +mogdbcluster.mogdb.enmotech.io/cluster1 configured +``` + +### 3.检查更新 + +以下命令将检查 MogDB 节点是否正确运行: + +```shell +kubectl get pod,svc -n mogdb-operator-system --selector="mogdb.enmotech.io/cluster=cluster1" +``` + +预期输出: + +```shell +NAME READY STATUS RESTARTS AGE +pod/cluster1-nduk8 2/2 Running 0 45m +pod/cluster1-wnev6 2/2 Running 0 45m +pod/cluster1-xwnkx 2/2 Running 0 71s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/cluster1-svc-master NodePort 10.96.158.193 5432:30013/TCP 44m +service/cluster1-svc-replicas NodePort 10.110.121.108 5432:30012/TCP 44m +``` + +其中 pod/cluster1-xwnkx 为新增节点。 -- Gitee From 25f681b819cf1837401c3115fa65cc64d2ab58ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E4=B8=9C?= <1215479880@qq.com> Date: Fri, 16 Dec 2022 17:34:23 +0800 Subject: [PATCH 3/6] =?UTF-8?q?feat:=E5=BF=AB=E9=80=9F=E4=B8=8A=E6=89=8B?= =?UTF-8?q?=E3=80=81=E8=BD=AF=E4=BB=B6=E5=AE=89=E8=A3=85=E3=80=81=E5=8F=82?= =?UTF-8?q?=E8=80=83=E3=80=81=E5=8F=91=E5=B8=83=E8=AE=B0=E5=BD=95=20?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=88=9D=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/mogdb-docs.iml | 1 + .idea/workspace.xml | 131 ++++++ .../v2.0/installation/helm.md | 116 ++++++ .../v2.0/installation/kubectl.md | 127 ++++++ .../v2.0/installation/kustomize.md | 167 ++++++++ .../zh/docs-mogdb-stack/v2.0/quick-start.md | 346 ++++++++++++++++ .../v2.0/references/client/mgo-addk8s.md | 55 +++ .../references/client/mgo-backup-detail.md | 48 +++ .../v2.0/references/client/mgo-backup.md | 60 +++ .../references/client/mgo-create-cluster.md | 80 ++++ .../references/client/mgo-create-mgorole.md | 51 +++ .../references/client/mgo-create-mgouser.md | 54 +++ .../v2.0/references/client/mgo-create.md | 53 +++ .../references/client/mgo-delete-backup.md | 52 +++ .../references/client/mgo-delete-cluster.md | 53 +++ .../v2.0/references/client/mgo-delete-k8s.md | 52 +++ .../references/client/mgo-delete-mgorole.md | 52 +++ .../references/client/mgo-delete-mgouser.md | 51 +++ .../v2.0/references/client/mgo-delete.md | 56 +++ .../v2.0/references/client/mgo-localk8s.md | 51 +++ .../client/mgo-minio-object-getf.md | 51 +++ .../references/client/mgo-minio-object-ls.md | 51 +++ .../client/mgo-minio-object-stat.md | 50 +++ .../references/client/mgo-minio-object.md | 55 +++ .../v2.0/references/client/mgo-minio.md | 47 +++ .../v2.0/references/client/mgo-restore.md | 52 +++ .../v2.0/references/client/mgo-scale.md | 46 +++ .../v2.0/references/client/mgo-scaledown.md | 55 +++ .../v2.0/references/client/mgo-show-backup.md | 50 +++ .../references/client/mgo-show-cluster.md | 55 +++ .../v2.0/references/client/mgo-show-k8s.md | 46 +++ .../references/client/mgo-show-mgorole.md | 52 +++ .../references/client/mgo-show-mgouser.md | 52 +++ .../references/client/mgo-show-restore.md | 50 +++ .../v2.0/references/client/mgo-show.md | 61 +++ .../v2.0/references/client/mgo-switch.md | 44 +++ .../references/client/mgo-update-cluster.md | 69 ++++ .../references/client/mgo-update-mgorole.md | 52 +++ .../references/client/mgo-update-mgouser.md | 57 +++ .../v2.0/references/client/mgo-update.md | 58 +++ .../v2.0/references/client/mgo-version.md | 44 +++ .../v2.0/references/client/mgo.md | 69 ++++ .../v2.0/references/server/crd-references.md | 373 ++++++++++++++++++ .../references/server/mogdbbackup-sample.md | 33 ++ .../references/server/mogdbcluster-sample.md | 57 +++ product/zh/docs-mogdb-stack/v2.0/release.md | 38 ++ product/zh/docs-mogdb-stack/v2.0/toc.md | 15 +- 47 files changed, 3337 insertions(+), 1 deletion(-) create mode 100644 .idea/workspace.xml create mode 100644 product/zh/docs-mogdb-stack/v2.0/installation/helm.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/installation/kubectl.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/installation/kustomize.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-addk8s.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-backup-detail.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-backup.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-create-cluster.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-create-mgorole.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-create-mgouser.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-create.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-delete-backup.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-delete-cluster.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-delete-k8s.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-delete-mgorole.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-delete-mgouser.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-delete.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-localk8s.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-minio-object-getf.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-minio-object-ls.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-minio-object-stat.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-minio-object.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-minio.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-restore.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-scale.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-scaledown.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-show-backup.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-show-cluster.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-show-k8s.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-show-mgorole.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-show-mgouser.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-show-restore.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-show.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-switch.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-update-cluster.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-update-mgorole.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-update-mgouser.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-update.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo-version.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/client/mgo.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/server/crd-references.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/server/mogdbbackup-sample.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/references/server/mogdbcluster-sample.md diff --git a/.idea/mogdb-docs.iml b/.idea/mogdb-docs.iml index c956989b..5e764c4f 100644 --- a/.idea/mogdb-docs.iml +++ b/.idea/mogdb-docs.iml @@ -1,5 +1,6 @@ + diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 00000000..28f12fd3 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/installation/helm.md b/product/zh/docs-mogdb-stack/v2.0/installation/helm.md new file mode 100644 index 00000000..56cb05de --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/installation/helm.md @@ -0,0 +1,116 @@ +--- +title: helm方式安装 +summary: helm方式安装 +author: Wang Dong +date: 2022-12-14 +--- + +## 前置条件 + +- 安装Helm v3.2+ + + ```shell + wget https://get.helm.sh/helm-v3.9.4-linux-arm64.tar.gz + tar xvf helm-v3.9.3-linux-amd64.tar.gz + sudo mv linux-arm64/helm /usr/local/bin + helm version + ``` + +- 添加mogdb-chart仓库 + + ```shell + helm repo add mogdb-chart https://enmotech.github.io/mogdb-stack-helm-charts + helm search repo mogdb-chart + ``` + 期望输出: + +```text +NAME CHART VERSION APP VERSION DESCRIPTION +mogdb-chart/mogdb-cluster 0.1.0 2.0.0 A Helm chart for Kubernetes +mogdb-chart/mogdb-monitor 0.1.0 0.1.0 A Helm chart for Kubernetes +mogdb-chart/mogdb-operator 0.1.2 2.0.0 A Helm chart for Kubernetes +``` + + 仓库含有三个chart包,分别是mogdb-cluster,mogdb-monitor和mogdb-operator + +## 安装 + +### 安装 MogDB Operator + +```shell +helm install mogdb mogdb-chart/mogdb-operator --namespace mogdb-operator-system --create-namespace +``` + +期望输出: + +```text +NAME: mogdb +LAST DEPLOYED: Wed Dec 14 19:54:46 2022 +NAMESPACE: mogdb-operator-system +STATUS: deployed +REVISION: 1 +TEST SUITE: None +``` + +通过helm查看安装结果: + +```shell +helm list -n mogdb-operator-system +``` + +期望输出: + +```text +NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION +mogdb mogdb-operator-system 1 2022-12-14 19:54:46.682554277 +0800 CST deployed mogdb-operator-0.1.2 2.0.0 +``` + +### 安装 mgo 客户端 + +```shell +wget https://cdn-mogdb.enmotech.com/mogdb-stack/v2.0.0/client-setup.sh +chmod +x client-setup.sh +./client-setup.sh +``` + +这将下载mgo客户端并且提示您添加一些环境变量以供您在会话中设置,您可以使用以下命令执行此操作: + +```shell +export MGOUSER="${HOME?}/.mgo/mgouser" +export MGO_CA_CERT="${HOME?}/.mgo/client.crt" +export MGO_CLIENT_CERT="${HOME?}/.mgo/client.crt" +export MGO_CLIENT_KEY="${HOME?}/.mgo/client.key" +export MGO_APISERVER_URL='https://127.0.0.1:32444' +export MGO_NAMESPACE=mogdb-operator-system +``` + +如果您希望将这些变量永久添加到您的环境中,您可以运行以下命令: + +```shell +cat <> ~/.bashrc +export PATH="${HOME?}/.mgo:$PATH" +export MGOUSER="${HOME?}/.mgo/mgouser" +export MGO_CA_CERT="${HOME?}/.mgo/client.crt" +export MGO_CLIENT_CERT="${HOME?}/.mgo/client.crt" +export MGO_CLIENT_KEY="${HOME?}/.mgo/client.key" +export MGO_APISERVER_URL='https://127.0.0.1:32444' +export MGO_NAMESPACE=mogdb-operator-system +EOF + +source ~/.bashrc +``` + +> **注意:** 对于 macOS 用户,您使用文件是\~/.bash_profile而不是\~/.bashrc。 + +## 卸载 + +```shell +helm uninstall mogdb -n mogdb-operator-system +``` + +期望输出: + +```text +release "mogdb" uninstalled +``` + diff --git a/product/zh/docs-mogdb-stack/v2.0/installation/kubectl.md b/product/zh/docs-mogdb-stack/v2.0/installation/kubectl.md new file mode 100644 index 00000000..cdadd9ce --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/installation/kubectl.md @@ -0,0 +1,127 @@ +--- +title: kubectl方式安装 +summary: kubectl方式安装 +author: Ji Yabin +date: 2022-12-14 +--- + +## 前置条件 + +- 下载MogDB Operator样例 + + 包含了MogDB Operator Kustomize安装器。 + + ```shell + wget https://cdn-mogdb.enmotech.com/mogdb-stack/v2.0.0/mogdb-operator-examples.tar + tar xf mogdb-operator-examples.tar + cd mogdb-operator-examples + ``` + + MogDB Operator安装项目在kustomize/install目录下。 + +## 配置 + +默认的Kustomize可以工作在大部分Kubernetes环境中,也可以根据您的特殊需求定制。 + +## 安装 + +### 安装 MogDB Operator + +```shell +kubectl apply -f ./kustomize/install/kubectl/mogdb-operator.yml +``` + +期望输出: + +```shell +namespace/mogdb-operator-system created +customresourcedefinition.apiextensions.k8s.io/mogdbbackups.mogdb.enmotech.io created +customresourcedefinition.apiextensions.k8s.io/mogdbclusters.mogdb.enmotech.io created +customresourcedefinition.apiextensions.k8s.io/mogdbrecoveries.mogdb.enmotech.io created +serviceaccount/mogdb-apiserver created +serviceaccount/mogdb-operator-controller-manager created +role.rbac.authorization.k8s.io/mogdb-operator-leader-election-role created +clusterrole.rbac.authorization.k8s.io/mgo-cluster-role created +clusterrole.rbac.authorization.k8s.io/mogdb-operator-manager-role created +rolebinding.rbac.authorization.k8s.io/mogdb-operator-leader-election-rolebinding created +clusterrolebinding.rbac.authorization.k8s.io/mgo-cluster-role created +clusterrolebinding.rbac.authorization.k8s.io/mogdb-operator-manager-rolebinding created +configmap/mogdb-operator-manager-config created +configmap/mogdb-operator-mgo-config created +secret/mgorole-admin created +secret/mgouser-admin created +secret/mogdb-operator-huawei-registry created +service/mogdb-apiserver created +deployment.apps/mogdb-apiserver created +deployment.apps/mogdb-operator-controller-manager created +``` + +### 安装 mgo 客户端 + +```shell +wget https://cdn-mogdb.enmotech.com/mogdb-stack/v2.0.0/client-setup.sh +chmod +x client-setup.sh +./client-setup.sh +``` + +这将下载mgo客户端并且提示您添加一些环境变量以供您在会话中设置,您可以使用以下命令执行此操作: + +```shell +export MGOUSER="${HOME?}/.mgo/mgouser" +export MGO_CA_CERT="${HOME?}/.mgo/client.crt" +export MGO_CLIENT_CERT="${HOME?}/.mgo/client.crt" +export MGO_CLIENT_KEY="${HOME?}/.mgo/client.key" +export MGO_APISERVER_URL='https://127.0.0.1:32444' +export MGO_NAMESPACE=mogdb-operator-system +``` + +如果您希望将这些变量永久添加到您的环境中,您可以运行以下命令: + +```shell +cat <> ~/.bashrc +export PATH="${HOME?}/.mgo:$PATH" +export MGOUSER="${HOME?}/.mgo/mgouser" +export MGO_CA_CERT="${HOME?}/.mgo/client.crt" +export MGO_CLIENT_CERT="${HOME?}/.mgo/client.crt" +export MGO_CLIENT_KEY="${HOME?}/.mgo/client.key" +export MGO_APISERVER_URL='https://127.0.0.1:32444' +export MGO_NAMESPACE=mogdb-operator-system +EOF + +source ~/.bashrc +``` + +> **注意:** 对于 macOS 用户,您使用文件是\~/.bash_profile而不是\~/.bashrc。 + +## 卸载 + +```shell +kubectl delete -f ./kustomize/install/kubectl/mogdb-operator.yml +``` + +```text +namespace "mogdb-operator-system" deleted +customresourcedefinition.apiextensions.k8s.io "mogdbbackups.mogdb.enmotech.io" deleted +customresourcedefinition.apiextensions.k8s.io "mogdbclusters.mogdb.enmotech.io" deleted +customresourcedefinition.apiextensions.k8s.io "mogdbrecoveries.mogdb.enmotech.io" deleted +serviceaccount "mogdb-apiserver" deleted +serviceaccount "mogdb-operator-controller-manager" deleted +role.rbac.authorization.k8s.io "mogdb-operator-leader-election-role" deleted +clusterrole.rbac.authorization.k8s.io "mgo-cluster-role" deleted +clusterrole.rbac.authorization.k8s.io "mogdb-operator-manager-role" deleted +rolebinding.rbac.authorization.k8s.io "mogdb-operator-leader-election-rolebinding" deleted +clusterrolebinding.rbac.authorization.k8s.io "mgo-cluster-role" deleted +clusterrolebinding.rbac.authorization.k8s.io "mogdb-operator-manager-rolebinding" deleted +configmap "mogdb-operator-manager-config" deleted +configmap "mogdb-operator-mgo-config" deleted +secret "mgorole-admin" deleted +secret "mgouser-admin" deleted +secret "mogdb-operator-huawei-registry" deleted +service "mogdb-apiserver" deleted +deployment.apps "mogdb-apiserver" deleted +deployment.apps "mogdb-operator-controller-manager" deleted +``` + +> **注意:** +> +> 卸载之前,请确保系统所有的集群已经删除完整,否则无法卸载。 diff --git a/product/zh/docs-mogdb-stack/v2.0/installation/kustomize.md b/product/zh/docs-mogdb-stack/v2.0/installation/kustomize.md new file mode 100644 index 00000000..e9722e39 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/installation/kustomize.md @@ -0,0 +1,167 @@ +--- +title: kustomize方式安装 +summary: kustomize方式安装 +author: Ji Yabin +date: 2022-12-14 +--- + +## 前置条件 + +- 安装Kustomize v3+ + + ```shell + go get sigs.k8s.io/kustomize/kustomize/v3@v3.8.7 + ~/go/bin/kustomize version + ``` + +- 下载MogDB Operator样例 + + 包含了MogDB Operator Kustomize安装器。 + + + + ```shell + wget https://cdn-mogdb.enmotech.com/mogdb-stack/v2.0.0/mogdb-operator-examples.tar + tar xf mogdb-operator-examples.tar + cd mogdb-operator-examples + ``` + + MogDB Operator安装项目在kustomize/install目录下。 + +- 安装的组件 + - mogdb-operator-controller-manager + + - mogdb-apiserver + + - mgo-client + + 其中,mgo-client运行在物理机下,其余组件都运行在k8s下 + +- 生成的k8s对象 + - mogdb-operator-manager-config + - mogdb-operator-mgo-config + - mogdb-operator-huawei-registry + +## 配置 + +默认的Kustomize可以工作在大部分Kubernetes环境中,也可以根据您的特殊需求定制。 + +例如,为MogDB Operator自定义镜像路径,该镜像在kustomize/install/default/kustomization.yaml文件中,可以修改为: + +```yaml +images: +- name: controller + newName: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/mogdb-operator + newTag: v2.0.0 +``` + +如果需要更改namespace名称,需要在kustomize/install/default/kustomization.yaml文件中修改如下配置。 + +```yaml +namespace: custom-namespace +``` + +## 安装 + +### 安装 MogDB Operator + +```shell +kustomize build ./kustomize/install/default | kubectl apply -f - +``` + +期望输出: + +```text +namespace/mogdb-operator-system created +customresourcedefinition.apiextensions.k8s.io/mogdbbackups.mogdb.enmotech.io created +customresourcedefinition.apiextensions.k8s.io/mogdbclusters.mogdb.enmotech.io created +customresourcedefinition.apiextensions.k8s.io/mogdbrecoveries.mogdb.enmotech.io created +serviceaccount/mogdb-apiserver created +serviceaccount/mogdb-operator-controller-manager created +role.rbac.authorization.k8s.io/mogdb-operator-leader-election-role created +clusterrole.rbac.authorization.k8s.io/mgo-cluster-role created +clusterrole.rbac.authorization.k8s.io/mogdb-operator-manager-role created +rolebinding.rbac.authorization.k8s.io/mogdb-operator-leader-election-rolebinding created +clusterrolebinding.rbac.authorization.k8s.io/mgo-cluster-role created +clusterrolebinding.rbac.authorization.k8s.io/mogdb-operator-manager-rolebinding created +configmap/mogdb-operator-manager-config created +configmap/mogdb-operator-mgo-config created +secret/mgorole-admin created +secret/mgouser-admin created +secret/mogdb-operator-huawei-registry created +service/mogdb-apiserver created +deployment.apps/mogdb-apiserver created +deployment.apps/mogdb-operator-controller-manager created +``` + +### 安装 mgo 客户端 + +```shell +wget https://cdn-mogdb.enmotech.com/mogdb-stack/v2.0.0/client-setup.sh +chmod +x client-setup.sh +./client-setup.sh +``` + +这将下载mgo客户端并且提示您添加一些环境变量以供您在会话中设置,您可以使用以下命令执行此操作: + +```shell +export MGOUSER="${HOME?}/.mgo/mgouser" +export MGO_CA_CERT="${HOME?}/.mgo/client.crt" +export MGO_CLIENT_CERT="${HOME?}/.mgo/client.crt" +export MGO_CLIENT_KEY="${HOME?}/.mgo/client.key" +export MGO_APISERVER_URL='https://127.0.0.1:32444' +export MGO_NAMESPACE=mogdb-operator-system +``` + +如果您希望将这些变量永久添加到您的环境中,您可以运行以下命令: + +```shell +cat <> ~/.bashrc +export PATH="${HOME?}/.mgo:$PATH" +export MGOUSER="${HOME?}/.mgo/mgouser" +export MGO_CA_CERT="${HOME?}/.mgo/client.crt" +export MGO_CLIENT_CERT="${HOME?}/.mgo/client.crt" +export MGO_CLIENT_KEY="${HOME?}/.mgo/client.key" +export MGO_APISERVER_URL='https://127.0.0.1:32444' +export MGO_NAMESPACE=mogdb-operator-system +EOF + +source ~/.bashrc +``` + +> **注意:** 对于 macOS 用户,您使用文件是\~/.bash_profile而不是\~/.bashrc。 + +## 卸载 + +```shell +kustomize build ./kustomize/install/default | kubectl delete -f - +``` + +期望输出: + +```text +namespace "mogdb-operator-system" deleted +customresourcedefinition.apiextensions.k8s.io "mogdbbackups.mogdb.enmotech.io" deleted +customresourcedefinition.apiextensions.k8s.io "mogdbclusters.mogdb.enmotech.io" deleted +customresourcedefinition.apiextensions.k8s.io "mogdbrecoveries.mogdb.enmotech.io" deleted +serviceaccount "mogdb-apiserver" deleted +serviceaccount "mogdb-operator-controller-manager" deleted +role.rbac.authorization.k8s.io "mogdb-operator-leader-election-role" deleted +clusterrole.rbac.authorization.k8s.io "mgo-cluster-role" deleted +clusterrole.rbac.authorization.k8s.io "mogdb-operator-manager-role" deleted +rolebinding.rbac.authorization.k8s.io "mogdb-operator-leader-election-rolebinding" deleted +clusterrolebinding.rbac.authorization.k8s.io "mgo-cluster-role" deleted +clusterrolebinding.rbac.authorization.k8s.io "mogdb-operator-manager-rolebinding" deleted +configmap "mogdb-operator-manager-config" deleted +configmap "mogdb-operator-mgo-config" deleted +secret "mgorole-admin" deleted +secret "mgouser-admin" deleted +secret "mogdb-operator-huawei-registry" deleted +service "mogdb-apiserver" deleted +deployment.apps "mogdb-apiserver" deleted +deployment.apps "mogdb-operator-controller-manager" deleted +``` + +> **注意**: +> +> 卸载之前,请确保系统所有的集群已经删除完整,否则无法卸载。 diff --git a/product/zh/docs-mogdb-stack/v2.0/quick-start.md b/product/zh/docs-mogdb-stack/v2.0/quick-start.md index e69de29b..37bebea1 100644 --- a/product/zh/docs-mogdb-stack/v2.0/quick-start.md +++ b/product/zh/docs-mogdb-stack/v2.0/quick-start.md @@ -0,0 +1,346 @@ +--- +title: 快速上手 +summary: 快速上手 +author: Wang Dong +date: 2022-12-14 +--- + +# 快速上手 + +本文介绍了如何创建一个简单的 Kubernetes 集群,部署 MogDB Operator,并使用 Mogdb Operator 部署 MogDB 集群。 + +> 本文中的部署说明仅用于测试目的,不要直接用于生产环境。如果要在生产环境部署,请参阅部署 > 部署 MogDB 集群章节。 + +基本步骤如下: + +[1. 创建Kubernetes测试集群](#创建kubernetes测试集群) + +[2. 部署MogDB Operator](#部署mogdb-operator) + +[3. 部署MogDB集群](#部署mogdb集群) + +[4. 连接MogDB集群](#连接mogdb集群) + +[5. 销毁MogDB集群](#销毁mogdb集群) + +
+ +## 创建Kubernetes测试集群 + +本节介绍如何使用 minikube 部署 Kubernetes 集群。 + +minikube 可以在虚拟机中创建一个 Kubernetes 集群,可在 macOS, Linux 和 Windows 上运行。 + +部署前,请确保满足以下要求: + +- minikube:版本 1.18.1+ + +- minikube 需要安装一个兼容的 hypervisor,详情见官方安装教程。 + +- kubectl: 版本 >= 1.18.1 + +安装完 minikube 后,可以执行下面命令启动一个 Kubernetes 集群: + +```shell +minikube start +``` + +如果一切运行正常,会看到类似下面的输出,根据操作系统和使用的 hypervisor 会有些许差异。 + +```shell +😄 minikube v1.10.1 on Darwin 10.15.4 +✨ Automatically selected the hyperkit driver. Other choices: docker, vmwarefusion +💾 Downloading driver docker-machine-driver-hyperkit: + > docker-machine-driver-hyperkit.sha256: 65 B / 65 B [---] 100.00% ? p/s 0s + > docker-machine-driver-hyperkit: 10.90 MiB / 10.90 MiB 100.00% 1.76 MiB p +🔑 The 'hyperkit' driver requires elevated permissions. The following commands will be executed: + + $ sudo chown root:wheel /Users/user/.minikube/bin/docker-machine-driver-hyperkit + $ sudo chmod u+s /Users/user/.minikube/bin/docker-machine-driver-hyperkit + + +💿 Downloading VM boot image ... + > minikube-v1.10.0.iso.sha256: 65 B / 65 B [-------------] 100.00% ? p/s 0s + > minikube-v1.10.0.iso: 174.99 MiB / 174.99 MiB [] 100.00% 6.63 MiB p/s 27s +👍 Starting control plane node minikube in cluster minikube +💾 Downloading Kubernetes v1.18.2 preload ... + > preloaded-images-k8s-v3-v1.18.2-docker-overlay2-amd64.tar.lz4: 525.43 MiB +🔥 Creating hyperkit VM (CPUs=2, Memory=4000MB, Disk=20000MB) ... +🐳 Preparing Kubernetes v1.18.2 on Docker 19.03.8 ... +🔎 Verifying Kubernetes components... +🌟 Enabled addons: default-storageclass, storage-provisioner +🏄 Done! kubectl is now configured to use "minikube" +``` + +对于中国大陆用户,可以使用国内 gcr.io mirror 仓库,例如 registry.cn-hangzhou.aliyuncs.com/google_containers。 + +```shell +minikube start --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers +``` + +或者给 Docker 配置 HTTP/HTTPS 代理。 + +将下面命令中的 127.0.0.1:1086 替换为您自己的 HTTP/HTTPS 代理地址: + +```shell +minikube start --docker-env https_proxy=http://127.0.0.1:1086 \ + --docker-env http_proxy=http://127.0.0.1:1086 +``` + +> **注意:**
+> 由于 minikube(默认)通过虚拟机运行,127.0.0.1 指向虚拟机本身,所以在有些情况下可能需要将代理修改为您的主机的实际 IP。 + +参考 minikube setup 查看配置虚拟机和 Kubernetes 集群的更多选项。 + +你可以使用 minikube 的子命令 kubectl 来进行集群操作。要使 kubectl 命令生效,你需要在 shell 配置文件中添加以下别名设置命令,或者在打开一个新的 shell 后执行以下别名设置命令。 + +```shell +alias kubectl='minikube kubectl --' +``` + +执行以下命令检查集群状态,并确保可以通过 kubectl 访问集群: + +```shell +kubectl cluster-info +``` + +期望输出: + +```shell +Kubernetes master is running at https://192.168.64.2:8443 +KubeDNS is running at https://192.168.64.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy + +To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'. +``` + +现在就可以开始部署 MogDB Operator 了! + +测试完成后,执行下面命令来销毁集群: + +```shell +minikube delete +``` + +
+ +## 部署MogDB Operator + +开始之前,确保以下要求已满足: + +- 可以使用 kubectl 访问的 Kubernetes 集群 +- 已安装 Kustomize v3+ + +**步骤1: 下载样例** + +```shell +wget https://cdn-mogdb.enmotech.com/mogdb-stack/v2.0.0/mogdb-operator-examples.tar +tar xf mogdb-operator-examples.tar +cd mogdb-operator-examples +``` + +**步骤2: 安装MogDB Operator** + +```shell +kustomize build ./kustomize/install/default | kubectl apply -f - +``` + +期望输出: + +```shell +namespace/mogdb-operator-system created +customresourcedefinition.apiextensions.k8s.io/mogdbbackups.mogdb.enmotech.io configured +customresourcedefinition.apiextensions.k8s.io/mogdbclusters.mogdb.enmotech.io configured +customresourcedefinition.apiextensions.k8s.io/mogdbrecoveries.mogdb.enmotech.io configured +serviceaccount/mogdb-apiserver created +serviceaccount/mogdb-operator-controller-manager created +role.rbac.authorization.k8s.io/mogdb-operator-leader-election-role created +clusterrole.rbac.authorization.k8s.io/mgo-cluster-role created +clusterrole.rbac.authorization.k8s.io/mogdb-operator-manager-role created +rolebinding.rbac.authorization.k8s.io/mogdb-operator-leader-election-rolebinding created +clusterrolebinding.rbac.authorization.k8s.io/mgo-cluster-role created +clusterrolebinding.rbac.authorization.k8s.io/mogdb-operator-manager-rolebinding created +configmap/mogdb-operator-manager-config created +configmap/mogdb-operator-mgo-config created +secret/mgorole-admin created +secret/mgouser-admin created +secret/mogdb-operator-huawei-registry created +service/mogdb-apiserver created +deployment.apps/mogdb-apiserver created +deployment.apps/mogdb-operator-controller-manager created +``` + +
+ +## 部署MogDB集群 + +```shell +kubectl apply -f https://cdn-mogdb.enmotech.com/mogdb-stack/v2.0.0/mogdb-cluster.yaml +``` + +期望输出: + +```text +mogdbcluster.mogdb.enmotech.io/cluster1 created +``` + +### 查看pod状态 + +```shell +kubectl get pods -n mogdb-operator-system +``` + +期望输出: + +```shell +NAME READY STATUS RESTARTS AGE +cluster1-jl2kn 3/3 Running 0 4m18s +cluster1-zuveg 0/3 PodInitializing 0 108s +``` + +等待所有pod都处于running状态,然后进行下一步,连接到MogDB集群。 + +
+ +## 连接MogDB集群 + +### 安装gsql命令行工具 + +要连接到MogDB集群,您需要在使用kubectl的主机上安装MogDB客户端工具[gsql](../../docs-mogdb/v3.0/quick-start/mogdb-access/use-cli-to-access-mogdb/gsql.md#安装gsql客户端)安装与物理机匹配的命令行工具。 + +
+ +### 查看MogDB服务端口 + +首先,将端口从本地主机转发到 Kubernetes 中的 MogDB Service。 我们先获取 mogdb-operator-system 命名空间中的服务列表: + +```shell +kubectl get svc -n mogdb-operator-system +``` + +期望输出: + +```text +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +cluster1-svc-master NodePort 10.1.115.245 5432:30013/TCP 38m +cluster1-svc-replicas NodePort 10.1.41.187 5432:30012/TCP 38m +``` + +输出结果显示了,k8s集群内部通过5432端口,集群外部通过30013端口访问实际的MogDB集群。 + +
+ +### 连接集群 + +在连接之前,需要修改默认用户的密码。可以通过kubectl命令连接到容器,修改密码。 + +```shell +kubectl exec -it cluster1-xxxxx -c mogdb -n mogdb-operator-system -- /bin/bash +gsql -dpostgres +``` + +```sql +ALTER USER mogdb WITH PASSWORD 'new_password'; +``` + +```shell +gsql -h 10.1.115.245 -p 5432 -U mogdb -W +``` + +期望输出: + +```shell +gsql ((MogDB 3.1.0 build aef997f9) compiled at 2022-11-24 00:09:16 commit 0 last mr ) +Non-SSL connection (SSL connection is recommended when requiring high-security) +Type "help" for help. + +MogDB=# +``` + +以下是一些可以用来验证集群功能的命令。 + +- 查看MogDB版本 + +```sql +MogDB=#select version(); + version +--------------------------------------------------------------------------------------------------------------------------------------------------- +(MogDB 3.1.0 build aef997f9) compiled at 2022-11-24 00:09:16 commit 0 last mr on aarch64-unknown-linux-gnu, compiled by g++ (GCC) 7.3.0, 64-bit +(1 row) +``` + +- 创建t1表 + +```sql +MogDB=#create table t1(id int); +CREATE TABLE +``` + +- 插入数据 + +```sql +MogDB=#insert into t1(id) values(1),(2),(3); +INSERT 0 3 +``` + +- 查看数据 + +```sql +MogDB=#select * from t1; + id +---- + 1 + 2 + 3 +(3 rows) +``` + +
+ +## 销毁MogDB集群 + +完成测试后,您可能希望销毁MogDB集群。 + +### 删除MogDB集群 + +```shell +kubectl delete mogdbcluster cluster1 +``` + +期望输出: + +```text +mogdbcluster.mogdb.enmotech.io "cluster1" deleted +``` + +
+ +## 卸载MogDB Operator + +```shell +kustomize build ./kustomize/install/default | kubectl delete -f - +``` + +期望输出: + +```shell +namespace "mogdb-operator-system" deleted +customresourcedefinition.apiextensions.k8s.io "mogdbbackups.mogdb.enmotech.io" deleted +customresourcedefinition.apiextensions.k8s.io "mogdbclusters.mogdb.enmotech.io" deleted +customresourcedefinition.apiextensions.k8s.io "mogdbrecoveries.mogdb.enmotech.io" deleted +serviceaccount "mogdb-apiserver" deleted +serviceaccount "mogdb-operator-controller-manager" deleted +role.rbac.authorization.k8s.io "mogdb-operator-leader-election-role" deleted +clusterrole.rbac.authorization.k8s.io "mgo-cluster-role" deleted +clusterrole.rbac.authorization.k8s.io "mogdb-operator-manager-role" deleted +rolebinding.rbac.authorization.k8s.io "mogdb-operator-leader-election-rolebinding" deleted +clusterrolebinding.rbac.authorization.k8s.io "mgo-cluster-role" deleted +clusterrolebinding.rbac.authorization.k8s.io "mogdb-operator-manager-rolebinding" deleted +configmap "mogdb-operator-manager-config" deleted +configmap "mogdb-operator-mgo-config" deleted +secret "mgorole-admin" deleted +secret "mgouser-admin" deleted +secret "mogdb-operator-huawei-registry" deleted +service "mogdb-apiserver" deleted +deployment.apps "mogdb-apiserver" deleted +deployment.apps "mogdb-operator-controller-manager" deleted +``` diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-addk8s.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-addk8s.md new file mode 100644 index 00000000..412795ce --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-addk8s.md @@ -0,0 +1,55 @@ +--- +title: mgo addk8s +summary: mgo添加k8s节点 +author: Wang Dong +date: 2022-12-14 +--- + +# 添加k8s节点 + +## 概览 + +添加一个k8s节点到集群中, 例: + +```shell +mgo addk8s myNode --node-id=xxx --apiserver=xxx --ca-cert=xxx --client-cert=xxx --client-key=xxx --disable-tls=false +``` + +```shell +mgo addk8s [flags] +``` + +
+ +## 选项 + +```text + --apiserver string k8s 节点 mogdb-apiserver 的host. + --ca-cert string 用于对新的k8s api服务器节点进行身份验证的CA证书base64编码内容. + --client-cert string 用于对新的k8s api服务器节点进行身份验证的客户端证书base64编码内容. + --client-key string 用于对新的k8s api服务器节点进行身份验证的客户端密钥base64编码内容. + -h, --help addk8s 帮助信息 + --node-id string k8s 节点 mogdb-apiserver 的 uuid. +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的MogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +
+ +## 另请参阅 + +* [mgo](mgo.md) - mgo 命令行工具 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-backup-detail.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-backup-detail.md new file mode 100644 index 00000000..7daf18ad --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-backup-detail.md @@ -0,0 +1,48 @@ +--- +title: mgo-backup-detail +desription: mgo 获取备份详情 +author: Wang Dong +date: 2022-12-14 +--- + +## 获取备份详情 + +### 概览 + +获取备份详情。例如: + +```shell +mgo backup detail backupName +``` + +```shell +mgo backup detail [flags] +``` + +
+ +### 选项 + +```text + -h, --help detail 帮助信息 +``` + +
+ +### 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的mogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +### 另请参阅 + +* [mgo backup](mgo-backup.md) - mgo 进行手动备份 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-backup.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-backup.md new file mode 100644 index 00000000..c2b2dd83 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-backup.md @@ -0,0 +1,60 @@ +--- +title: mgo-backup +desription: mgo 进行手动备份 +author: Wang Dong +date: 2022-12-14 +--- + +## 进行手动备份 + +### 概览 + +BACKUP 命令允许您进行集群的手动备份。例如: + +```shell +mgo backup mycluster --backup-type=basebackup --backup-level=incr +``` + +```shell +mgo backup [flags] +``` + +
+ +### 选项 + +```text + --backup-image string 备份镜像,默认latest版本. + --backup-level string 备份级别. 分为 "incr" or "full". (默认 "incr") 、 + --backup-s3-bucket string 当启用“S3”存储类型进行备份时,应用于集群的S3存储桶 + --backup-s3-endpoint string 当启用“S3”存储类型进行备份时,应用于集群的S3存储节点 + --backup-s3-key string 当启用“S3”存储类型进行备份时,应用于集群的S3节点访问的key + --backup-s3-key-secret string 当启用“S3”存储类型进行备份时,应用于集群的S3节点访问的key 密钥 + --backup-s3-region string 当启用“S3”存储类型进行备份时,应用于集群的S3region + --backup-storage-type string 备份存储类型. 分为 "posix" 和 "s3". (默认 "posix") + --backup-type string 备份类型. 分为 "basebackup" 和 "dumpall". (默认 "basebackup") + --dbName string 指定备份数据库名称 + -h, --help backup帮助信息 + --tbNames string 指定备份表格名称,多个用逗号隔开 +``` + +
+ +### 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的mogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +### 另请参阅 + +* [mgo](mgo.md) - mgo 命令行工具 +* [mgo backup detail](mgo-backup-detail.md) - 获取备份详情 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-create-cluster.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-create-cluster.md new file mode 100644 index 00000000..62082908 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-create-cluster.md @@ -0,0 +1,80 @@ +--- +title: mgo create cluster +summary: mgo创建集群 +author: Wang Dong +date: 2022-12-14 +--- + +# 创建 MogDB 集群 + +## 概览 + +后台创建由一个主节点和几个从节点组成的 MogDB 集群, 例: + +```shell +mgo create cluster mycluster +``` + +```shell +mgo create cluster [flags] +``` + +
+ +## 选项 + +```text + --access-modes int 设置数据卷的访问方式。1: ReadWriteOnce, 2: ReadOnlyMany, 3: ReadWriteMany. 默认值ReadWriteOnce + --auto-backup 是否开启自动备份 + --backup-level string 备份级别,"incr"或者"full". (默认 "incr") + --backup-s3-bucket string 当启用“S3”存储类型进行备份时,应用于集群的S3存储桶 + --backup-s3-endpoint string 当启用“S3”存储类型进行备份时,应用于集群的S3存储节点 + --backup-s3-key string 当启用“S3”存储类型进行备份时,应用于集群的S3节点访问的key + --backup-s3-key-secret string 当启用“S3”存储类型进行备份时,应用于集群的S3节点访问的key 密钥 + --backup-schedule string crontab格式的备份策略,默认为空 + --backup-schedule-history-limit int32 自动备份保留的数量最大限制,默认为0 + --backup-storage-size string 备份存储大小,默认为 128Mi + --backup-storage-type string 自动备份存储类型. 分为 "posix" 和 "s3". (默认 "posix") + --backup-type string 备份类型. 分为 "basebackup" 和 "dumpall". (默认 "basebackup") + --cpu string 设置要请求CPU的核数,e.g. "100m" or "0.1" + --cpu-limit string 为CPU设置要限制的核数,e.g. "100m" or "0.1" + --data-storage-size string 设置数据库数据卷大小。默认值128Mi + --exporter-image string 将用于MogDB exporter sidecar 容器的镜像。如果指定,将替代默认值 + --ha-image string 将用于MogDB ha sidecar 容器的镜像。如果指定,将替代默认值 + -h, --help help for cluster + --image string 将用于MogDB server 容器的镜像。如果指定,将替代默认值 + --init-image string 将用于MogDB 初始化容器的镜像。如果指定,将替代默认值 + --log-storage-size string 设置日志数据卷大小。默认值128Mi + --memory string 设置要请求的内存数量,e.g. 1GiB + --memory-limit string 设置限制的内存数量,e.g. 1GiB + --read-port int 设置 service 的读取端口 + --replicas int 设置创建集群的从节点数量,默认值为2 + --restore-backup-type string 执行还原以引导群集的备份类型. 分为 "basebackup" 和 "dumpall".(默认 "basebackup") 只有在 "restore-from" 值被指定时有效. + --restore-from string 引导新群集时要从中恢复的群集的名称 + --restore-object string 恢复的备份对象的名称. 只有在 "restore-from" 值被指定时有效. + --restore-type string 恢复的类型, 分为 "object" 和 "time". 只有在 "restore-from" 值被指定时有效. + --storage-class string 设置声明所需的StorageClass的名称。默认值是 local-path + --write-port int 设置 service 的写端口 +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的MogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +
+ +## 另请参阅 + +* [mgo create](mgo-create.md) - 创建 MogDB Operator 资源 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-create-mgorole.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-create-mgorole.md new file mode 100644 index 00000000..1e7491d0 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-create-mgorole.md @@ -0,0 +1,51 @@ +--- +title: mgo create mgorole +summary: mgo创建角色 +author: Wang Dong +date: 2022-12-14 +--- + +# 创建 mgo 权限角色 + +## 概览 + +创建 mgo 权限角色。例如: + +```shell +mgo create mgorole somerole --permissions="Cat,Ls" +``` + +```shell +mgo create mgorole [flags] +``` + +
+ +## 选项 + +```text + -h, --help help for mgorole + --permissions string 指定mgo 权限角色的权限列表,用逗号隔开 +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的mogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +
+ +## 另请参阅 + +* [mgo create](mgo-create.md) - 创建 MogDB Operator 资源 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-create-mgouser.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-create-mgouser.md new file mode 100644 index 00000000..30274619 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-create-mgouser.md @@ -0,0 +1,54 @@ +--- +title: mgo create mgouser +summary: mgo创建用户 +author: Wang Dong +date: 2022-12-14 +--- + +# 创建 mgo 用户 + +## 概览 + +创建一个 mgo 用户。例如: + +```shell +mgo create mgouser someuser +``` + +```shell +mgo create mgouser [flags] +``` + +
+ +## 选项 + +```text + --all-namespaces 指定此用户将有权访问所有命名空间 + -h, --help help for mgouser + --mgouser-namespaces string 为mgouser指定以逗号分隔的名称空间列表 + --mgouser-password string 指定mgouser的密码 + --mgouser-roles string 为mgouser指定以逗号分隔的角色列表 +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的mogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +
+ +## 另请参阅 + +* [mgo create](mgo-create.md) - 创建 MogDB Operator 资源 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-create.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-create.md new file mode 100644 index 00000000..da154d16 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-create.md @@ -0,0 +1,53 @@ +--- +title: mgo-create +desription: mgo 创建命令 +author: Wang Dong +date: 2022-12-14 +--- + +## 创建 MogDB Operator resource + +### 概览 + +CREATE 命令允许您创建一个新的 Operator 资源。例如: + +```shell +mgo create cluster +mgo create mgouser +mgo create mgorole +``` + +```shell +mgo create [flags] +``` + +
+ +### 选项 + +```text + -h, --help create 的帮助信息 +``` + +
+ +### 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的mogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +### 另请参阅 + +* [mgo](mgo.md) - mgo 命令行工具 +* [mgo create cluster](mgo-create-cluster.md) - 创建 MogDB 集群 +* [mgo create mgorole](mgo-create-mgorole.md) - 创建 mgo 权限角色 +* [mgo create mgouser](mgo-create-mgouser.md) - 创建 mgo 用户 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-delete-backup.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-delete-backup.md new file mode 100644 index 00000000..74845b4c --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-delete-backup.md @@ -0,0 +1,52 @@ +--- +title: mgo delete backup +desription: mgo 删除备份 +author: Wang Dong +date: 2022-12-14 +--- + +# 删除 mgo 备份 + +## 概览 + +删除指定的手动备份,例如: + +```shell +mgo delete backup mycluster --target=mybackup1,mybackup2 +``` + +```shell +mgo delete backup [flags] +``` + +
+ +## 选项 + +```text + --target string 指定删除备份的目标,多个用逗号隔开 + -h, --help delete k8s 的帮助信息 + --no-prompt 删除前没有命令行确认 +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的mogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +
+ +## 另请参阅 + +* [mgo delete](mgo-delete.md) - 删除 MogDB Operator 资源 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-delete-cluster.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-delete-cluster.md new file mode 100644 index 00000000..10600b29 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-delete-cluster.md @@ -0,0 +1,53 @@ +--- +title: mgo delete cluster +desription: mgo 删除集群 +author: Wang Dong +date: 2022-12-14 +--- + +# 删除 MogDB 集群 + +## 概览 + +删除指定的 MogDB 集群或所有 MogDB 集群。例如: + +```shell +mgo delete cluster --all +mgo delete cluster mycluster +``` + +```shell +mgo delete cluster [flags] +``` + +
+ +## 选项 + +```text + --all 删除所有的 MogDB 集群 + -h, --help delete cluster 的帮助信息 + --no-prompt 删除前没有命令行确认 +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的mogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +
+ +## 另请参阅 + +* [mgo delete](mgo-delete.md) - 删除 MogDB Operator 资源 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-delete-k8s.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-delete-k8s.md new file mode 100644 index 00000000..55d09709 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-delete-k8s.md @@ -0,0 +1,52 @@ +--- +title: mgo delete k8s +desription: mgo 删除 k8s 节点 +author: Wang Dong +date: 2022-12-14 +--- + +# 删除 mgo k8s 节点 + +## 概览 + +删除指定的k8s 节点,例如: + +```shell +mgo delete k8s --node-id=xxx +``` + +```shell +mgo delete k8s [flags] +``` + +
+ +## 选项 + +```text + --node-id string k8s 节点uuid. + -h, --help delete k8s 的帮助信息 + --no-prompt 删除前没有命令行确认 +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的mogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +
+ +## 另请参阅 + +* [mgo delete](mgo-delete.md) - 删除 MogDB Operator 资源 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-delete-mgorole.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-delete-mgorole.md new file mode 100644 index 00000000..66844ca6 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-delete-mgorole.md @@ -0,0 +1,52 @@ +--- +title: mgo delete mgorole +desription: mgo 删除角色 +author: Wang Dong +date: 2022-12-14 +--- + +# 删除 mgo 权限角色 + +## 概览 + +删除指定的角色或全部角色,例如: + +```shell +mgo delete mgorole somerole +``` + +```shell +mgo delete mgorole [flags] +``` + +
+ +## 选项 + +```text + --all 删除所有的 mgo 权限角色 + -h, --help delete mgorole 的帮助信息 + --no-prompt 删除前没有命令行确认 +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的mogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +
+ +## 另请参阅 + +* [mgo delete](mgo-delete.md) - 删除 MogDB Operator 资源 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-delete-mgouser.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-delete-mgouser.md new file mode 100644 index 00000000..99a6953d --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-delete-mgouser.md @@ -0,0 +1,51 @@ +--- +title: mgo delete mgouser +desription: mgo 删除用户 +author: Ji Yabin +date: 2022-06-30 +--- + +# 删除 mgo 用户 + +## 概览 + +删除指定的 mgo 用户或全部用户。例如: + +```shell +mgo delete mgouser someuser +``` + +```shell +mgo delete mgouser [flags] +``` + +
+ +## 选项 + +```text + --all 删除所有的 mgo 用户 + -h, --help delete mgouser 的帮助信息 + --no-prompt 删除前没有命令行确认 +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的mogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +
+ +## 另请参阅 + +* [mgo delete](mgo-delete.md) - 删除 MogDB Operator 资源 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-delete.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-delete.md new file mode 100644 index 00000000..38ce0921 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-delete.md @@ -0,0 +1,56 @@ +--- +title: mgo-delete +desription: mgo 删除命令 +author: Wang Dong +date: 2022-12-14 +--- + +# 删除 MogDB Operator 资源 + +## 概览 + +delete 命令允许你删除一个 MogDB Operator 资源。例如: + +```shell +mgo delete cluster mycluster +mgo delete mgouser someuser +mgo delete mgorole somerole +mgo delete user --username=testuser --selector=name=mycluster +``` + +```shell +mgo delete [flags] +``` + +
+ +## 选项 + +```text + -h, --help delete 的帮助信息 +``` + +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的mogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +
+ +## 另请参阅 + +* [mgo](mgo.md) - mgo 命令行工具 +* [mgo delete cluster](mgo-delete-cluster.md) - 删除 MogDB 集群 +* [mgo delete mgorole](mgo-delete-mgorole.md) - 删除 mgo 权限角色 +* [mgo delete mgouser](mgo-delete-mgouser.md) - 删除 mgo 用户 +* [mgo delete backup](mgo-delete-backup.md) - 删除 备份 +* [mgo delete k8s](mgo-delete-k8s.md) - 删除 k8s 节点 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-localk8s.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-localk8s.md new file mode 100644 index 00000000..62354dec --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-localk8s.md @@ -0,0 +1,51 @@ +--- +title: mgo localk8s +summary: mgo设置本地k8s节点 +author: Wang Dong +date: 2022-12-14 +--- + +# 设置本地k8s节点 + +## 概览 + +设置本地k8s节点, 例: + +```shell +mgo localk8s myNodeName --apiserver=xxx +``` + +```shell +mgo localk8s [flags] +``` + +
+ +## 选项 + +```text + --apiserver string k8s 节点 mogdb-apiserver 的host. + -h, --help addk8s 帮助信息 +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的MogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +
+ +## 另请参阅 + +* [mgo](mgo.md) - mgo 命令行工具 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-minio-object-getf.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-minio-object-getf.md new file mode 100644 index 00000000..220fe36a --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-minio-object-getf.md @@ -0,0 +1,51 @@ +--- +title: mgo minio object getf +summary: 使用minio下载s3存储对象 +author: Wang Dong +date: 2022-12-14 +--- + +# 使用minio查看s3下载s3存储对象 + +## 概览 + +MINIO OBJECT GEFT 命令允许你使用minio下载s3存储对象, 例: + +```shell +mgo minio object getf bucket-name object-name -p filepath +``` + +```shell +mgo minio object getf [flags] +``` + +
+ +## 选项 + +```text + -h, --help getf 的帮助信息 + -p, --path string 存储对象的目录路径 +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的MogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +
+ +## 另请参阅 + +* [mgo minio object](mgo-minio-object.md) - mgo 使用minio对3s存储对象操作 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-minio-object-ls.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-minio-object-ls.md new file mode 100644 index 00000000..85881fa3 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-minio-object-ls.md @@ -0,0 +1,51 @@ +--- +title: mgo minio object ls +summary: 使用minio查看s3存储对象列表 +author: Wang Dong +date: 2022-12-14 +--- + +# 使用minio查看s3存储对象列表 + +## 概览 + +MINIO OBJECT LS 命令允许你使用minio查看s3存储对象列表, 例: + +```shell +mgo minio object ls bucket-name --prefix prefix-name +``` + +```shell +mgo minio object ls [flags] +``` + +
+ +## 选项 + +```text + -h, --help ls帮助信息 + --prefix string 对象前缀,默认为空. +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的MogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +
+ +## 另请参阅 + +* [mgo minio object](mgo-minio-object.md) - mgo 使用minio对3s存储对象操作 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-minio-object-stat.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-minio-object-stat.md new file mode 100644 index 00000000..c8bfaee0 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-minio-object-stat.md @@ -0,0 +1,50 @@ +--- +title: mgo minio object stat +summary: 使用minio查看s3存储对象详细信息 +author: Wang Dong +date: 2022-12-14 +--- + +# 使用minio查看s3存储对象详细信息 + +## 概览 + +MINIO OBJECT STAT 命令允许你使用minio查看s3存储对象详细信息, 例: + +```shell +mgo minio object stat bucket-name object-name +``` + +```shell +mgo minio object stat [flags] +``` + +
+ +## 选项 + +```text + -h, --help stat 的帮助信息 +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的MogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +
+ +## 另请参阅 + +* [mgo minio object](mgo-minio-object.md) - mgo 使用minio对3s存储对象操作 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-minio-object.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-minio-object.md new file mode 100644 index 00000000..0727ae1e --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-minio-object.md @@ -0,0 +1,55 @@ +--- +title: mgo minio object +summary: 使用minio对3s存储对象操作 +author: Wang Dong +date: 2022-12-14 +--- + +# 使用minio对3s存储对象操作 + +## 概览 + +MINIO OBJECT 命令允许你使用minio对3s存储对象操作, 例: + +```shell +mgo minio object ls +mgo minio object stat +mgo minio object getf +``` + +```shell +mgo minio object [flags] +``` + +
+ +## 选项 + +```text + -h, --help object 帮助信息 +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的MogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +
+ +## 另请参阅 + +* [mgo minio](mgo-minio.md) - mgo 使用minio +* [mgo minio object ls](mgo-minio-object-ls.md) - mgo 使用minio查看s3存储对象列表 +* [mgo minio object stat](mgo-minio-object-stat.md) - mgo 使用minio查看s3存储对象详细信息 +* [mgo minio object getf](mgo-minio-object-getf.md) - mgo 使用minio下载s3存储对象 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-minio.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-minio.md new file mode 100644 index 00000000..8c944700 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-minio.md @@ -0,0 +1,47 @@ +--- +title: mgo minio +summary: 使用minio +author: Wang Dong +date: 2022-12-14 +--- + +# 使用minio对3s存储操作 + +## 概览 + +MINIO 命令允许你使用minio, 例: + +```shell +mgo minio object +``` + +
+ +## 选项 + +```text + -h, --help minio 帮助信息 +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的MogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +
+ +## 另请参阅 + +* [mgo](mgo.md) - mgo 命令行工具 +* [mgo minio object](mgo-minio-object.md) - mgo 使用minio对3s存储对象操作 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-restore.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-restore.md new file mode 100644 index 00000000..8d78becc --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-restore.md @@ -0,0 +1,52 @@ +--- +title: mgo restore +desription: mgo 备份恢复 +author: Wang Dong +date: 2022-12-14 +--- + +## 备份恢复 + +### 概览 + +RESTORE 命令允许您从一个备份中对Mogdb集群进行恢复。例如: + +```shell +mgo restore mycluster --RestoreType=file --RestoreFile=xxx +``` + +```shell +mgo restore [flags] +``` + +
+ +### 选项 + +```text + --backup-type string 要恢复的备份的类型. 分为 "basebackup" 和 "dumpall" (默认 "basebackup") + -h, --help restore帮助信息 + --recovery-time-point string 指定最后备份时间点 + --restore-object string 指定备份对象 + --restore-type string 备份类型, 分别为 "object" 和 "time". +``` + +
+ +### 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的mogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +### 另请参阅 + +* [mgo](mgo.md) - mgo 命令行工具 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-scale.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-scale.md new file mode 100644 index 00000000..17623886 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-scale.md @@ -0,0 +1,46 @@ +--- +title: mgo-scale +desription: mgo 扩容集群命令 +author: Wang Dong +date: 2022-12-14 +--- + +# 扩容 MogDB 集群 + +## 概览 + +scale命令允许您添加集群的副本配置。例如: + +```shell +mgo scale mycluster --replica-count=1 +``` + +```shell +mgo scale [flags] +``` + +
+ +## 选项 + +```text + -h, --help scale 的帮助信息 + --no-prompt 无命令行确认 + --replica-count int 要添加于群集的副本计数。(默认 1) +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的mogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-scaledown.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-scaledown.md new file mode 100644 index 00000000..951711c0 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-scaledown.md @@ -0,0 +1,55 @@ +--- +title: mgo-scaledown +desription: mgo 缩容集群命令 +author: Wang Dong +date: 2022-12-14 +--- + +# 缩容 MogDB 集群 + +## 概览 + +scaledown 命令允许您缩小集群的副本配置。例如: + + 列出目标副节点: + + ```shell + mgo scaledown mycluster --query + ``` + + 缩容特定副节点: + + ```shell + mgo scaledown mycluster --target=mycluster-replica-xxxx + ``` + +```shell +mgo scaledown [flags] +``` + +
+ +## 选项 + +```text + -h, --help scaledown 的帮助信息 + --no-prompt 无命令行确认 + --query 打印目标副本候选列表 + --target string 缩容指定以逗号分隔的副节点列表 +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的mogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-show-backup.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-show-backup.md new file mode 100644 index 00000000..da6cc3e7 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-show-backup.md @@ -0,0 +1,50 @@ +--- +title: mgo show backup +summary: mgo查看集群备份 +author: Wang Dong +date: 2022-12-14 +--- + +# 显示 MogDB 群集备份信息 + +## 概览 + +显示指定的 MogDB 群集备份信息。例如: + +```shell +mgo show backup mycluser +``` + +```shell +mgo show backup [flags] +``` + +
+ +## 选项 + +```text + -h, --help show backup 的帮助信息 +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的mogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +
+ +## 另请参阅 + +* [mgo show](mgo-show.md) - 显示 MogDB Operator 资源 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-show-cluster.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-show-cluster.md new file mode 100644 index 00000000..a4c75fe3 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-show-cluster.md @@ -0,0 +1,55 @@ +--- +title: mgo show cluster +summary: mgo查看集群 +author: Wang Dong +date: 2022-12-14 +--- + +# 显示 MogDB 群集信息 + +## 概览 + +显示指定的 MogDB 群集信息或所有的集群信息。例如: + +```shell +mgo show cluster --all +mgo show cluster mycluster +mgo show cluster --all --all-k8s +``` + +```shell +mgo show cluster [flags] +``` + +
+ +## 选项 + +```text + --all 显示所有集群. + --all-k8s 所有k8s节点 + -h, --help show cluster 的帮助信息 + -s, --selector string 用于群集筛选的label +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的mogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +
+ +## 另请参阅 + +* [mgo show](mgo-show.md) - 显示 MogDB Operator 资源 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-show-k8s.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-show-k8s.md new file mode 100644 index 00000000..26ef2fe8 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-show-k8s.md @@ -0,0 +1,46 @@ +--- +title: mgo show k8s +summary: mgo查看所有k8s节点 +author: Wang Dong +date: 2022-12-14 +--- + +# 显示 查看所有k8s节点 + +## 概览 + +显示所有k8s节点信息。例如: + +```shell +mgo show k8s +``` + +
+ +## 选项 + +```text + -h, --help show k8s 的帮助信息 +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的mogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +
+ +## 另请参阅 + +* [mgo show](mgo-show.md) - 显示 MogDB Operator 资源 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-show-mgorole.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-show-mgorole.md new file mode 100644 index 00000000..55910e76 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-show-mgorole.md @@ -0,0 +1,52 @@ +--- +title: mgo show mgorole +summary: mgo查看角色信息 +author: Wang Dong +date: 2022-12-14 +--- + +# 查看 mgo 角色信息 + +## 概览 + +查看指定的 mgo 角色信息或所有的角色信息。例如: + +```shell +mgo show mgorole somerole +``` + +```shell +mgo show mgorole [flags] +``` + +
+ +## 选项 + +```text + --all 显示所有的 mgo 角色信息 + --all-k8s 所有k8s节点 + -h, --help show mgorole 的帮助信息 +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的mogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +
+ +## 另请参阅 + +* [mgo show](mgo-show.md) - 查看 MogDB Operator 资源 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-show-mgouser.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-show-mgouser.md new file mode 100644 index 00000000..55116e0d --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-show-mgouser.md @@ -0,0 +1,52 @@ +--- +title: mgo show mgouser +summary: mgo查看用户信息 +author: Wang Dong +date: 2022-12-14 +--- + +# 显示 mgo 用户信息 + +## 概览 + +显示指定的 mgo 用户信息或全部用户信息。例如: + +```shell +mgo show mgouser someuser +``` + +```shell +mgo show mgouser [flags] +``` + +
+ +## 选项 + +```text + --all 查看所有的 mgo 用户信息 + --all-k8s 所有k8s节点 + -h, --help help for mgouser +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的mogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +
+ +## 另请参阅 + +* [mgo show](mgo-show.md) - 显示 MogDB Operator 资源 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-show-restore.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-show-restore.md new file mode 100644 index 00000000..81f91a7b --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-show-restore.md @@ -0,0 +1,50 @@ +--- +title: mgo show restore +summary: mgo查看集群备份恢复信息 +author: Wang Dong +date: 2022-12-14 +--- + +# 显示 MogDB 群集备份恢复信息 + +## 概览 + +显示指定的 MogDB 群集备份恢复信息。例如: + +```shell +mgo show restore mycluser +``` + +```shell +mgo show restore [flags] +``` + +
+ +## 选项 + +```text + -h, --help show restore 的帮助信息 +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的mogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +
+ +## 另请参阅 + +* [mgo show](mgo-show.md) - 显示 MogDB Operator 资源 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-show.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-show.md new file mode 100644 index 00000000..c2054382 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-show.md @@ -0,0 +1,61 @@ +--- +title: mgo-show +desription: mgo 展示命令 +author: Wang Dong +date: 2022-12-14 +--- + +# 查看 MogDB Operator 资源 + +## 概览 + +Show 命令允许您显示群集、备份、恢复、k8s节点、mgorole或mgouser的详细信息。例如: + +```shell +mgo show backup mycluser +mgo show k8s +mgo show cluster mycluster +mgo show mgouser someuser +mgo show mgorole somerole +mgo show restore mycluser +``` + +```shell +mgo show [flags] +``` + +
+ +## 选项 + +```text + -h, --help show 的帮助信息 +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的mogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +
+ +## 另请参阅 + +* [mgo](mgo.md) - mgo 命令行工具 +* [mgo show backup](mgo-show-backup.md) - 查看集群备份信息 +* [mgo show cluster](mgo-show-cluster.md) - 查看集群信息 +* [mgo show k8s](mgo-show-k8s.md) - 查看k8s节点信息 +* [mgo show mgorole](mgo-show-mgorole.md) - 查看角色信息 +* [mgo show mgouser](mgo-show-mgouser.md) - 查看用户信息 +* [mgo show restore](mgo-show-restore.md) - 查看集群恢复备份信息 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-switch.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-switch.md new file mode 100644 index 00000000..36bfaa77 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-switch.md @@ -0,0 +1,44 @@ +--- +title: mgo-switch +desription: mgo 切换用户命令 +author: Wang Dong +date: 2022-12-14 +--- + +# 切换 mgo 用户 + +## 概览 + +switch 允许你切换 mgo 用户。例如: + +```shell +mgo switch mgouser someuser +``` + +```shell +mgo switch mgouser [flags] +``` + +
+ +## 选项 + +```text + -h, --help switch 的帮助信息 +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的mogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-update-cluster.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-update-cluster.md new file mode 100644 index 00000000..1b53d8d0 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-update-cluster.md @@ -0,0 +1,69 @@ +--- +title: mgo update cluster +desription: mgo 修改集群 +author: Wang Dong +date: 2022-12-14 +--- + +# 修改 MogDB 集群 + +## 概览 + +修改 MogDB 集群。例如: + +```shell +mgo update cluster mycluster --image=xxx +mgo update cluster mycluster myothercluster --image=xxx +mgo update cluster --all --image=xxx +``` + +```shell +mgo update cluster [flags] +``` + +
+ +## 选项 + +```text + --access-modes int 设置数据卷的访问方式。1: ReadWriteOnce, 2: ReadOnlyMany, 3: ReadWriteMany。默认值是 ReadWriteOnce + --all 修改所有 MogDB 集群。 + --backup-storage-size string 设置备份数据卷大小。默认值128Mi + --cpu string 设置要请求CPU的核数,e.g. "100m" or "0.1" + --cpu-limit string 为CPU设置要限制的核数,e.g. "100m" or "0.1" + --data-storage-size string 设置数据库数据卷大小。默认值128Mi + --exporter-image string 将用于MogDB exporter sidecar 容器的镜像。如果指定,将替代默认值 + --ha-image string 将用于MogDB ha sidecar 容器的镜像。如果指定,将替代默认值 + -h, --help update cluster 的帮助信息 + --image string 将用于MogDB server 容器的镜像。如果指定,将替代默认值 + --init-image string 将用于MogDB 初始化容器的镜像。如果指定,将替代默认值 + --log-storage-size string 设置日志数据卷大小。默认值128Mi + --memory string 设置要请求的内存数量,e.g. 1GiB + --memory-limit string 设置限制的内存数量,e.g. 1GiB + --read-port int 设置 service 的读取端口 + --sidecar-image string 将用于MogDB sidecar 容器的镜像。如果指定,将替代默认值 + --storage-class string 设置声明所需的StorageClass的名称。默认值是 local-path + --write-port int 设置 service 的写端口 +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的mogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +
+ +## 另请参阅 + +* [mgo update](mgo-update.md) - 修改 MogDB Operator 资源 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-update-mgorole.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-update-mgorole.md new file mode 100644 index 00000000..2f846c4b --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-update-mgorole.md @@ -0,0 +1,52 @@ +--- +title: mgo update mgorole +desription: mgo 修改角色 +author: Wang Dong +date: 2022-12-14 +--- + +# 修改 mgo 权限角色 + +## 概览 + +update mgorole 命令允许修改 mgo 权限角色。例如: + +```shell +mgo update mgorole somerole --permissions="version,show,create" +``` + +```shell +mgo update mgorole [flags] +``` + +
+ +## 选项 + +```text + -h, --help update mgorole 的帮助信息 + --no-prompt 没有命令行提示 + --permissions string 为mgorole指定以逗号分隔的权限列表 +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的mogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +
+ +## 另请参阅 + +* [mgo update](mgo-update.md) - 修改 MogDB Operator 资源 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-update-mgouser.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-update-mgouser.md new file mode 100644 index 00000000..8485450e --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-update-mgouser.md @@ -0,0 +1,57 @@ +--- +title: mgo update mgouser +desription: mgo 修改用户 +author: Wang Dong +date: 2022-12-14 +--- + +# 修改 mgo 用户 + +## 概览 + +update mgouser 允许你修改 mgo 用户。例如: + +```shell +mgo update mgouser myuser --mgouser-roles=somerole +mgo update mgouser myuser --mgouser-password=somepassword --mgouser-roles=somerole +mgo update mgouser myuser --mgouser-password=somepassword --no-prompt +``` + +```shell +mgo update mgouser [flags] +``` + +
+ +## 选项 + +```text + --all-namespaces 指定此用户将有权访问所有命名空间 + -h, --help update mgouser 的帮助信息 + --mgouser-namespaces string 为mgouser指定以逗号分隔的名称空间列表 + --mgouser-password string 指定mgouser的密码 + --mgouser-roles string 为mgouser指定以逗号分隔的角色列表 + --no-prompt 无有命令行提示 +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的mogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +
+ +## 另请参阅 + +* [mgo update](mgo-update.md) - 修改 MogDB Operator 资源 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-update.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-update.md new file mode 100644 index 00000000..b23e1403 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-update.md @@ -0,0 +1,58 @@ +--- +title: mgo-update +desription: mgo 修改命令 +author: Wang Dong +date: 2022-12-14 +--- + +# 修改 MogDB Operator 资源 + +## 概览 + +update 命令允许您修改 mgouser、mgorole 或者 cluster。例如: + +```shell +mgo update cluster --selector=name=mycluster --disable-autofail +mgo update cluster --all --enable-autofail +mgo update mgorole somerole --mgorole-permission="version" +mgo update mgouser someuser --mgouser-password=somenewpassword +mgo update mgouser someuser --mgouser-roles="role1,role2" +mgo update mgouser someuser --mgouser-namespaces="mgouser2" +``` + +```shell +mgo update [flags] +``` + +
+ +## 选项 + +```text + -h, --help update 的帮助信息 +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的mogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +
+ +## 另请参阅 + +* [mgo](mgo.md) - mgo 命令行工具 +* [mgo update cluster](mgo-update-cluster.md) - 修改 MogDB 集群 +* [mgo update mgorole](mgo-update-mgorole.md) - 修改 mgo 权限角色 +* [mgo update mgouser](mgo-update-mgouser.md) - 修改 mgo 用户 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-version.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-version.md new file mode 100644 index 00000000..ec344613 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo-version.md @@ -0,0 +1,44 @@ +--- +title: mgo-version +desription: mgo 版本命令 +author: Wang Dong +date: 2022-12-14 +--- + +# 显示 MogDB Operator 的版本信息 + +## 概览 + +version 命令允许您打印 MogDB Operator 的版本信息。例如: + +```shell +mgo version +``` + +```shell +mgo version [flags] +``` + +
+ +## 选项 + +```text + -h, --help version 的帮助信息 +``` + +
+ +## 从父命令继承的选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的mogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/client/mgo.md b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo.md new file mode 100644 index 00000000..3c8a5756 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/client/mgo.md @@ -0,0 +1,69 @@ +--- +title: mgo +desription: mgo 命令行工具参考 +author: Wang Dong +date: 2022-12-14 +--- + +# mgo命令 + +## 概览 + +mgo 命令行工具帮助您创建和管理MogDB集群。 + +
+ +## 选项 + +```text + --apiserver-url string 将处理来自mgo客户端的请求的mogDB Operator apiserver的URL。请注意,URL不应以“/”结尾 + --debug 启用debug输出以进行调试 + --disable-tls 关闭 MogDB Operator 的 TLS 认证 + --exclude-os-trust 从操作系统默认信任存储中排除CA证书 + -h, --help mgo 的帮助信息 + --k8s-node string 指点k8s节点, 默认本地k8s节点 + --mgo-ca-cert string 连接 MogDB Operator apiserver CA 证书文件路径. + --mgo-client-cert string 用于向 MogDB Operator apiserver 进行身份验证的客户端证书文件路径 + --mgo-client-key string 用于向 MogDB Operator apiserver 进行身份验证的客户端密钥文件路径 + -n, --namespace string 用于mgo请求的命名空间 +``` + +
+ +## 另请参阅 + +* [mgo version](mgo-version.md) - 打印 MogDB Operator 版本信息 +* [mgo show](mgo-show.md) - 显示 MogDB Operator 资源 +* [mgo show backup](mgo-show-backup.md) - 查看集群备份信息 +* [mgo show cluster](mgo-show-cluster.md) - 查看集群信息 +* [mgo show k8s](mgo-show-k8s.md) - 查看k8s节点信息 +* [mgo show mgorole](mgo-show-mgorole.md) - 查看角色信息 +* [mgo show mgouser](mgo-show-mgouser.md) - 查看用户信息 +* [mgo show restore](mgo-show-restore.md) - 查看集群恢复备份信息 +* [mgo create](mgo-create.md) - 创建 MogDB Operator 资源 +* [mgo create cluster](mgo-create-cluster.md) - 创建 MogDB Operator 集群 +* [mgo create mgorole](mgo-create-mgorole.md) - 创建 MogDB Operator 角色 +* [mgo create mgouser](mgo-create-mgouser.md) - 创建 MogDB Operator 用户 +* [mgo update](mgo-update.md) - 修改 MogDB Operator 资源 +* [mgo update cluster](mgo-update-cluster.md) - 更新 MogDB Operator 集群 +* [mgo update mgorole](mgo-update-mgorole.md) - 更新 MogDB Operator 角色 +* [mgo update mgouser](mgo-update-mgouser.md) - 更新 MogDB Operator 用户 +* [mgo delete](mgo-delete.md) - 删除 MogDB Operator 资源 +* [mgo delete cluster](mgo-delete-cluster.md) - 删除 MogDB Operator 集群 +* [mgo delete mgorole](mgo-delete-mgorole.md) - 删除 MogDB Operator 角色 +* [mgo delete mgouser](mgo-create-mgouser.md) - 删除 MogDB Operator 用户 +* [mgo delete backup](mgo-delete-backup.md) - 删除 备份 +* [mgo delete k8s](mgo-delete-k8s.md) - 删除 k8s 节点 +* [mgo scale](mgo-scale.md) - 扩容 MogDB 集群 +* [mgo scaledown](mgo-scaledown.md) - 缩容 MogDB 集群 +* [mgo switch](mgo-switch.md) - 切换 MogDB operator 用户 +* [mgo addk8s](mgo-addk8s.md) - 添加k8s节点 +* [mgo localk8s](mgo-localk8s.md) - 设置本地k8s节点 +* [mgo backup](mgo-backup.md) - 进行手动备份 +* [mgo backup detail](mgo-backup-detail.md) - 获取备份详情 +* [mgo restore](mgo-restore.md) - 备份恢复 +* [mgo minio](mgo-minio.md) - 使用minio +* [mgo minio object](mgo-minio-object.md) - mgo 使用minio对3s存储对象操作 +* [mgo minio object ls](mgo-minio-object-ls.md) - mgo 使用minio查看s3存储对象列表 +* [mgo minio object stat](mgo-minio-object-stat.md) - mgo 使用minio查看s3存储对象详细信息 +* [mgo minio object getf](mgo-minio-object-getf.md) - mgo 使用minio下载s3存储对象 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/server/crd-references.md b/product/zh/docs-mogdb-stack/v2.0/references/server/crd-references.md new file mode 100644 index 00000000..9ab4bb9d --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/server/crd-references.md @@ -0,0 +1,373 @@ +--- +title: CRD 参考 +summary: CRD 参考 +author: Wang Dong +date: 2022-12-14 +--- + +# CRD 参考 + +## 资源类型 + ++ MogdbCluster ++ MogdbBackup + +
+ +## MogdbCluster + +MogdbCluster是MogdbCluster API的简单概要 + +| 名称 | 类型 | 描述 | 必选项 | +|------------|--------|------------------------------|----------| +| apiVersion | string | mogdb.enmotech.io/v1 | true | +| kind | string | MogdbCluster | true | +| metadata | object | 相关字段参考 Kubernetes API文档 | true | +| spec | object | 定义MogdbCluster期望的状态 | false | +| status | object | 定义MogdbCluster观测到的状态 | false | + +
+ +### MogdbCluster.spec + +MogdbClusterSpec 定义MogdbCluster期望的状态 + +| 名称 | 类型 | 描述 | 必选项 | +|---------------|---------|--------------------|----------| +| replicas | integer | MogdbCluster期望的副本数 | true | +| readPort | integer | 只读service端口 | true | +| writePort | integer | 读写service端口 | true | +| postgresConf | object | MogDB配置文件配置项 | false | +| podSpec | object | 集群pod期望的状态 | false | +| backup | object | 自动备份配置 | false | +| Restore | object | 备份恢复配置 | false | +| DataSource | object | 备份恢复数据源 | false | +| Paused | bool | 是否暂停 | false | +| EnableHa | bool | 是否开启ha | false | + +
+ +### MogdbCluster.spec.podSpec + +| 名称 | 类型 | 描述 | 必选项 | +|--------------------|-------------------|---------------|--------| +| mogdbVersion | string | MogDB数据库的版本 | false | +| image | string | MogDB镜像 | false | +| sidecarImage | string | sidecar镜像 | false | +| SidecarHaImage | string | sidecarha镜像 | false | +| initImage | string | init镜像 | false | +| volumeSpec | object | volume类型配置 | false | +| logVolumeSpec | object | 日志volume类型配置 | false | +| backupVolumeSpec | object | 备份volume类型配置 | false | +| imagePullPolicy | string | 镜像拉取策略 | false | +| imagePullSecrets | []string | 镜像拉取秘钥 | false | +| labels | map[string]string | 自定义label | false | +| annotations | map[string]string | 自定义注释 | false | +| resources | object | 资源限额 | false | +| affinity | object | 亲和性设置 | false | +| nodeSelector | map[string]string | 节点选择器 | false | +| priorityClassName | string | 优先级类名设置 | false | +| tolerations | []object | 容忍性设置 | false | +| serviceAccountName | string | 服务账户名称 | false | +| volumes | []object | 额外的volume设置 | false | +| volumeMounts | []object | volume挂载设置 | false | +| initContainers | []object | 额外的初始化容器设置 | false | +| containers | []object | 额外的容器设置 | false | +| sidecarResources | object | sidecar容器资源限额 | false | + +
+ +### MogdbCluster.spec.podSpec.volumeSpec + +| 名称 | 类型 | 描述 | 必选项 | +|------------------------|---------|--------------|--------| +| emptyDir | object | emptyDir类型的卷 | false | +| hostPath | object | hostPath类型的卷 | false | +| persistentVolumeClaim | object | pvc卷声明 | false | + +
+ +### MogdbCluster.spec.Backup + +| 名称 | 类型 | 描述 | 必选项 | +|-----------------|--------|------|--------| +| Image | string | 备份镜像 | false | +| GSBaseBackup | object | 逻辑备份 | false | +| GSDumpAll | object | 物理备份 | false | + +
+ +### MogdbCluster.spec.Backup.GSBaseBackup + +| 名称 | 类型 | 描述 | 必选项 | +|----------------------------|----------|----------|--------| +| Name | string | 备份容器名称 | false | +| BackupSchedules | object | 备份策略 | false | +| BackupScheduleHistoryLimit | integer | 保留历史自大数量 | false | +| S3 | object | s3存储配置 | false | + +
+ +### MogdbCluster.spec.Backup.GSBaseBackup.S3 + +| 名称 | 类型 | 描述 | 必选项 | +|-------------|----------|---------|-------| +| region | string | regin | false | +| secretName | string | 访问密钥 | true | +| provider | string | s3存储提供者 | true | +| endPoint | string | 节点 | true | +| bucket | string | 存储桶 | true | + +
+ +### MogdbCluster.spec.Backup.GSDumpAll + +| 名称 | 类型 | 描述 | 必选项 | +|----------------------------|-----------|------------|--------| +| Name | string | 备份容器名称 | false | +| BackupSchedules | object | 备份策略 | false | +| BackupScheduleHistoryLimit | integer | 保留历史自大数量 | false | +| S3 | object | s3存储配置 | false | + +
+ +### MogdbCluster.spec.Backup.GSDumpAll.S3 + +| 名称 | 类型 | 描述 | 必选项 | +|-------------|----------|---------|-------| +| region | string | regin | false | +| secretName | string | 访问密钥 | true | +| provider | string | s3存储提供者 | true | +| endPoint | string | 节点 | true | +| bucket | string | 存储桶 | true | + +
+ +### MogdbCluster.spec.Restore + +| 名称 | 类型 | 描述 | 必选项 | +|--------------------|--------|----------|--------| +| RestoreId | string | 恢复标识ID | false | +| Image | string | 镜像 | false | +| ClusterName | string | 目标集群名称 | false | +| GSBaseBackupSource | object | 恢复逻辑备份配置 | false | +| GSDumpAllSource | object | 恢复物理备份配置 | false | + +
+ +### MogdbCluster.spec.Restore.GSBaseBackupSource + +| 名称 | 类型 | 描述 | 必选项 | +|----------------|--------|------|--------| +| Type | string | 恢复类型 | false | +| Target | string | 恢复对象 | false | + +
+ +### MogdbCluster.spec.Restore.GSDumpAllSource + +| 名称 | 类型 | 描述 | 必选项 | +|----------------|--------|------|--------| +| Type | string | 恢复类型 | false | +| Target | string | 恢复对象 | false | + +
+ +### MogdbCluster.status + +| 名称 | 类型 | 描述 | 必选项 | +|-----------------|--------|--------------|-------| +| readyNodes | integer | 处于ready节点的个数 | true | +| conditions | []object | 集群状况 | true | +| nodes | []object | 节点状况 | true | +| RestoreStatus | object | 恢复状况 | true | +| BackupStatus | object | 备份状况 | true | +| StartupInstance | string | 开始实现 | true | +| FirstInstance | string | 第一次实现 | true | +| HaService | string | ha服务 | true | + +
+ +### MogdbCluster.status.conditions + +| 名称 | 类型 | 描述 | 必选项 | +|--------------------|---------|---------|-------| +| type | string | 状况类型 | true | +| status | string | 状况的状态 | true | +| lastTransitionTime | time | 状况发生的时间 | true | +| reason | string | 状况的原因 | true | +| message | string | 状况信息 | true | + +
+ +### MogdbCluster.status.RestoreStatus + +| 名称 | 类型 | 描述 | 必选项 | +|----------------|---------|--------|-------| +| id | string | 恢复ID | true | +| finished | bool | 是否已经结束 | true | +| startTime | time | 开始时间 | true | +| completionTime | time | 完成时间 | true | +| active | integer | 进行中数量 | true | +| succeeded | integer | 成功数量 | true | +| Failed | integer | 失败数量 | true | + +
+ +### MogdbCluster.status.BackupStatus + +| 名称 | 类型 | 描述 | 必选项 | +|---------------------------|----------|------|-------| +| ManualBackups | []object | 手动备份 | true | +| ScheduledBackups | []object | 自动备份 | true | + +
+ +### MogdbCluster.status.BackupStatus.ManualBackups + +| 名称 | 类型 | 描述 | 必选项 | +|-------------------|----------|---------|-------| +| name | string | 备份名称 | true | +| backupType | string | 备份类型 | true | +| backupLevel | string | 备份级别 | true | +| backupFile | string | 备份文件 | true | +| startTime | time | 开始时间 | true | +| completionTime | time | 结束时间动 | true | +| active | integer | 进行中数量 | true | +| succeeded | integer | 成功数量 | true | +| failed | integer | 失败数量 | true | +| finished | bool | 是否已经结束 | true | + +
+ +### MogdbCluster.status.BackupStatus.ScheduledBackups + +| 名称 | 类型 | 描述 | 必选项 | +|-------------------|----------|---------|-------| +| name | string | 备份名称 | true | +| backupType | string | 备份类型 | true | +| backupLevel | string | 备份级别 | true | +| backupFile | string | 备份文件 | true | +| startTime | time | 开始时间 | true | +| completionTime | time | 结束时间动 | true | +| active | integer | 进行中数量 | true | +| succeeded | integer | 成功数量 | true | +| failed | integer | 失败数量 | true | +| finished | bool | 是否已经结束 | true | + +
+ +### MogdbCluster.status.nodes + +| 名称 | 类型 | 描述 | 必选项 | +|-------------|-----------|-----------|-------| +| name | string | 集群节点状态的名称 | true | +| conditions | []object | 节点状况集合 | true | + +
+ +### MogdbCluster.status.nodes.conditions + +| 名称 | 类型 | 描述 | 必选项 | +|---------------------|--------|----------|-------| +| type | string | 状况类型 | true | +| status | string | 状况的状态 | true | +| lastTransitionTime | time | 状况发生的时间 | true | + +
+ +## MogdbBackup + +MogdbBackup是MogdbBackup API的简单概要 + +| 名称 | 类型 | 描述 | 必选项 | +|------------|---------|-------------------------|--------| +| apiVersion | string | mogdb.enmotech.io/v1 | true | +| kind | string | MogdbBackup | true | +| metadata | object | 相关字段参考 Kubernetes API文档 | true | +| spec | object | 定义MogdbBackup期望的状态 | false | +| status | object | 定义MogdbBackup观测到的状态 | false | + +
+ +### MogdbBackup.spec + +| 名称 | 类型 | 描述 | 必选项 | +|-------------|--------|-------------------|--------| +| clusterName | string | MogDB cluster集群名称 | true | +| image | string | 备份历史保留天数 | false | +| baseBackup | object | 逻辑配分配置 | false | +| dumpAll | object | 物理备份配置 | false | + +
+ +### MogdbBackup.spec.BaseBackup + +| 名称 | 类型 | 描述 | 必选项 | +|-------------|----------|----------|--------| +| name | string | 备份名称 | true | +| backupLevel | string | 备份级别 | false | +| fileName | string | 备份文件名称 | false | +| dbName | string | 指定备份数据库 | false | +| tbNames | []string | 指定备份表格 | false | +| s3 | object | s3对象存储配置 | false | + +
+ +### MogdbBackup.spec.BaseBackup.S3 + +| 名称 | 类型 | 描述 | 必选项 | +|-------------|----------|---------|-------| +| region | string | regin | false | +| secretName | string | 访问密钥 | true | +| provider | string | s3存储提供者 | true | +| endPoint | string | 节点 | true | +| bucket | string | 存储桶 | true | + +
+ +### MogdbBackup.spec.dumpAll + +| 名称 | 类型 | 描述 | 必选项 | +|-------------|----------|----------|--------| +| name | string | 备份名称 | true | +| backupLevel | string | 备份级别 | false | +| fileName | string | 备份文件名称 | false | +| dbName | string | 指定备份数据库 | false | +| tbNames | []string | 指定备份表格 | false | +| s3 | object | s3对象存储配置 | false | + +
+ +### MogdbBackup.spec.dumpAll.S3 + +| 名称 | 类型 | 描述 | 必选项 | +|-------------|----------|---------|-------| +| region | string | regin | false | +| secretName | string | 访问密钥 | true | +| provider | string | s3存储提供者 | true | +| endPoint | string | 节点 | true | +| bucket | string | 存储桶 | true | + +
+ +### MogdbBackup.status + +| 名称 | 类型 | 描述 | 必选项 | +|--------------------|-----------|---------|-------| +| completed | bool | 备份是否完成 | true | +| completedTimestamp | time | 备份完成的时间 | true | +| conditions | []object | 备份状况列表 | true | + +
+ +### MogdbBackup.status.conditions + +| 名称 | 类型 | 描述 | 必选项 | +|--------------------|---------|---------|-------| +| type | string | 状况类型 | true | +| status | string | 状况的状态 | true | +| lastTransitionTime | time | 状况发生的时间 | true | +| reason | string | 状况发生的原因 | true | +| message | string | 状况详情 | true | + diff --git a/product/zh/docs-mogdb-stack/v2.0/references/server/mogdbbackup-sample.md b/product/zh/docs-mogdb-stack/v2.0/references/server/mogdbbackup-sample.md new file mode 100644 index 00000000..c29a9ae8 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/server/mogdbbackup-sample.md @@ -0,0 +1,33 @@ +--- +title: MogDB Backup CRD 样例 +summary: MogDB Backup CRD 样例 +author: Wang Dong +date: 2022-12-14 +--- + +# MogDB Backup CR 样例 + +如果您希望通过原生的kubectl命令创建一个MogDB Backup CR,可以通过编写简单的yaml文件,提交到k8s系统,如: + +```yaml +apiVersion: mogdb.enmotech.io/v1 +kind: MogdbBackup +metadata: + labels: + mogdb.enmotech.io/auto: "" + mogdb.enmotech.io/backup-level: incr + mogdb.enmotech.io/backup-type: basebackup + mogdb.enmotech.io/cluster: cluster1 + name: cluster1-manual-2022-12-16t09-20-56 + namespace: mogdb-operator-system +spec: + baseBackup: + backupLevel: incr + name: manual-base-backup + tbNames: + - "" + clusterName: cluster1 + image: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/mogdb-remoteclient:lastest +``` + +上述配置,指定了需要备份的集群,以及特定的库。 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/references/server/mogdbcluster-sample.md b/product/zh/docs-mogdb-stack/v2.0/references/server/mogdbcluster-sample.md new file mode 100644 index 00000000..bee3265b --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/references/server/mogdbcluster-sample.md @@ -0,0 +1,57 @@ +--- +title: MogDB Cluster CRD 样例 +summary: MogDB Cluster CRD 样例 +author: Wang Dong +date: 2022-12-14 +--- + +# MogDB Cluster CR 样例 + +如果您希望通过原生的kubectl命令创建一个MogDB Cluster CR,可以通过编写简单的yaml文件,提交到k8s系统,如: + +```yaml +apiVersion: mogdb.enmotech.io/v1 +kind: MogdbCluster +metadata: + labels: + mogdb.enmotech.io/cluster: cluster1 + name: cluster1 + name: cluster1 + namespace: mogdb-operator-system +spec: + podSpec: + backupVolumeSpec: + persistentVolumeClaim: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 128Mi + storageClassName: local-path + exporterImage: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/mogdb-exporter:latest + image: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/mogdb:3.1.0 + imagePullPolicy: IfNotPresent + initImage: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/mogdb-init:3.1.0 + logVolumeSpec: + persistentVolumeClaim: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 128Mi + storageClassName: local-path + volumeSpec: + persistentVolumeClaim: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 128Mi + storageClassName: local-path + readPort: 30012 + replicas: 2 + writePort: 30013 + +``` + +上述配置,分别制定了数据卷、日志卷、备份卷以及基本的镜像配置,还有副本数等,提交到系统将会创建一个MogDB 集群。 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/release.md b/product/zh/docs-mogdb-stack/v2.0/release.md index e69de29b..fb37d36a 100644 --- a/product/zh/docs-mogdb-stack/v2.0/release.md +++ b/product/zh/docs-mogdb-stack/v2.0/release.md @@ -0,0 +1,38 @@ +--- +title: 发布记录 +summary: 发布记录 +author: Wang Dong +date: 2022-12-14 +--- + +# 发布记录 + +## v1.0.0 + +本次发布 mgo客户端 v1.0.0 和 MogDB operator v1.0.0 + +[MogDB operator](https://cdn-mogdb.enmotech.com/mogdb-stack/v1.0.0/mogdb-operator-examples.tar) + +mgo 客户端 + ++ [mgo_linux_x86_64](https://cdn-mogdb.enmotech.com/mogdb-stack/v1.0.0/mgo_linux_x86_64) ++ [mgo_linux_arm64](https://cdn-mogdb.enmotech.com/mogdb-stack/v1.0.0/mgo_linux_arm64) ++ [mgo_darwin_x86_64](https://cdn-mogdb.enmotech.com/mogdb-stack/v1.0.0/mgo_darwin_x86_64) ++ [mgo_darwin_arm64](https://cdn-mogdb.enmotech.com/mogdb-stack/v1.0.0/mgo_darwin_arm64) + +## v2.0.0 + +本次发布 mgo客户端 v2.0.0 和 MogDB operator v2.0.0 + +[MogDB operator](https://cdn-mogdb.enmotech.com/mogdb-stack/v2.0.0/mogdb-operator-examples.tar) + +mgo 客户端 + ++ [mgo_linux_x86_64](https://cdn-mogdb.enmotech.com/mogdb-stack/v2.0.0/mgo_linux_x86_64) ++ [mgo_linux_arm64](https://cdn-mogdb.enmotech.com/mogdb-stack/v2.0.0/mgo_linux_arm64) ++ [mgo_darwin_x86_64](https://cdn-mogdb.enmotech.com/mogdb-stack/v2.0.0/mgo_darwin_x86_64) ++ [mgo_darwin_arm64](https://cdn-mogdb.enmotech.com/mogdb-stack/v2.0.0/mgo_darwin_arm64) + +helm仓库 + ++ [mogdb-chart](https://enmotech.github.io/mogdb-stack-helm-charts) \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v2.0/toc.md b/product/zh/docs-mogdb-stack/v2.0/toc.md index 4ab19246..a57544d1 100644 --- a/product/zh/docs-mogdb-stack/v2.0/toc.md +++ b/product/zh/docs-mogdb-stack/v2.0/toc.md @@ -30,13 +30,17 @@ + [mgo create mgouser](references/client/mgo-create-mgouser.md) + [mgo create cluster](references/client/mgo-create-cluster.md) + [mgo show](references/client/mgo-show.md) + + [mgo show k8s](references/client/mgo-show-k8s.md) + [mgo show mgorole](references/client/mgo-show-mgorole.md) + [mgo show mgouser](references/client/mgo-show-mgouser.md) + [mgo show cluster](references/client/mgo-show-cluster.md) + + [mgo show restore](references/client/mgo-show-restore.md) + [mgo delete](references/client/mgo-delete.md) + [mgo delete mgorole](references/client/mgo-delete-mgorole.md) + [mgo delete mgouser](references/client/mgo-delete-mgouser.md) + [mgo delete cluster](references/client/mgo-delete-cluster.md) + + [mgo delete backup](references/client/mgo-delete-backup.md) + + [mgo delete k8s](references/client/mgo-delete-k8s.md) + [mgo scale](references/client/mgo-scale.md) + [mgo scaledown](references/client/mgo-scaledown.md) + [mgo switch](references/client/mgo-switch.md) @@ -45,10 +49,19 @@ + [mgo update mgouser](references/client/mgo-update-mgouser.md) + [mgo update cluster](references/client/mgo-update-cluster.md) + [mgo version](references/client/mgo-version.md) + + [mgo addk8s](references/client/mgo-addk8s.md) + + [mgo localk8s](references/client/mgo-localk8s.md) + + [mgo backup](references/client/mgo-backup.md) + + [mgo backup detail](references/client/mgo-backup-detail.md) + + [mgo restore](references/client/mgo-restore.md) + + [mgo minio](references/client/mgo-minio.md) + + [mgo minio object](references/client/mgo-minio-object.md) + + [mgo minio object ls](references/client/mgo-minio-object-ls.md) + + [mgo minio object stat](references/client/mgo-minio-object-stat.md) + + [mgo minio object getf](references/client/mgo-minio-object-getf.md) + 服务端 + [CRD参考](references/server/crd-references.md) + [MogDB集群参考](references/server/mogdbcluster-sample.md) + [MogDB备份参考](references/server/mogdbbackup-sample.md) - + [MogDB恢复参考](references/server/mogdbrecovery-sample.md) + [FAQ](faq.md) + [发布记录](release.md) \ No newline at end of file -- Gitee From 2e805854acab8cc05294c99069d630e5b8c0f0f7 Mon Sep 17 00:00:00 2001 From: hhhhhzhen Date: Fri, 16 Dec 2022 16:30:01 +0800 Subject: [PATCH 4/6] feat(stack): add 2.0.0 architecture --- .../v2.0/architecture/backup-management.md | 82 +++++++++++++ .../v2.0/architecture/client.md | 76 ++++++++++++ .../v2.0/architecture/monitor.md | 108 ++++++++++++++++++ .../v2.0/architecture/recovery-management.md | 58 ++++++++++ .../v2.0/tutorial/getting-started.md | 4 +- 5 files changed, 327 insertions(+), 1 deletion(-) create mode 100644 product/zh/docs-mogdb-stack/v2.0/architecture/backup-management.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/architecture/client.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/architecture/monitor.md create mode 100644 product/zh/docs-mogdb-stack/v2.0/architecture/recovery-management.md diff --git a/product/zh/docs-mogdb-stack/v2.0/architecture/backup-management.md b/product/zh/docs-mogdb-stack/v2.0/architecture/backup-management.md new file mode 100644 index 00000000..05ef0cb4 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/architecture/backup-management.md @@ -0,0 +1,82 @@ +--- +title: 备份 +summary: 备份 +author: Ji Yabin, hhhhhzhen +date: 2022-12-30 +--- + +# 备份管理 + +MogDB Operator 提供了全量备份和增量备份。 + +MogDB Operator 提供了物理备份与逻辑备份两种备份方式。 + +MogDB Operator 提供了 posix 和 s3 两种备份存储方式。 + +
+ +## 备份配置 + +如果您需要自定义备份配置,则需要修改 MogDB cluster manifest backup spec,具体请参考 [backup spec](../references/server/crd-references.md#MogdbClusterspecBackup)。 + +**注意**:此处备份相关配置为该集群的全局备份配置,部分配置可以单独在 backup CR 中指定,具体请参考 [backup CRD References](../references/server/crd-references.md#MogdbBackup)。 + +有关物理备份的配置内容如下,具体请参考 [GSBaseBackup](../references/server/crd-references.md#MogdbClusterspecBackupGSBaseBackup): + +```yaml +apiVersion: mogdb.enmotech.io/v1 +kind: MogdbCluster +spec: + backup: + # 物理备份 + GSBaseBackup: + # 备份策略 + backupSchedule: "0 */1 * * * ?" + # 保留历史最大数量 + backupScheduleHistoryLimit: 5 + # 默认情况下以 posix 方式存储备份 + # 如果要开启 s3 方式存储备份,则填充以下配置 + s3: + region: "" + bucket: "" + provider: "" + endPoint: "" + secretName: "" +``` + +有关逻辑备份的配置内容如下,具体请参考 [GSDumpAll](../references/server/crd-references.md#MogdbClusterspecBackupGSDumpAll): + +```yaml +apiVersion: mogdb.enmotech.io/v1 +kind: MogdbCluster +spec: + backup: + # 逻辑备份 + GSDumpAll: + # 备份策略 + backupSchedule: "0 */1 * * * ?" + # 保留历史最大数量 + backupScheduleHistoryLimit: 5 + # 默认情况下以 posix 方式存储备份 + # 如果要开启 s3 方式存储备份,则填充以下配置 + s3: + region: "" + bucket: "" + provider: "" + endPoint: "" + secretName: "" +``` + +
+ +## backup CR + +为了对 Kubernetes 上的 MogDB 集群进行备份,用户可以依据 [backup CRD References](../references/server/crd-references.md#MogdbBackup) 创建一个自定义的 backup CR 对象来描述一次备份。 + +我们也为您提供了 [backup CR Demo](../references/server/mogdbbackup-sample.md) 以供参考。 + +
+ +## 架构 + +![deploy-arch](https://cdn-mogdb.enmotech.com/docs-media/mogdb-stack/v1.0.0/backup-management.png) diff --git a/product/zh/docs-mogdb-stack/v2.0/architecture/client.md b/product/zh/docs-mogdb-stack/v2.0/architecture/client.md new file mode 100644 index 00000000..e1826c7e --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/architecture/client.md @@ -0,0 +1,76 @@ +--- +title: 客户端 +summary: 客户端 +author: Wang Dong, hhhhhzhen +date: 2022-12-30 +--- + +# mgo 客户端 + +MogDB Operator Client,简称 mgo,是与 MogDB Operator 交互的最便捷方式。mgo 通过一系列简单的命令,为创建、管理和删除 MogDB 集群提供了许多便捷的方法。 +MogDB Operator 提供了于 mgo 客户端连接的接口,并通过 RBAC 和 TLS 进行验证管理。 + +![deploy-arch](https://cdn-mogdb.enmotech.com/docs-media/mogdb-stack/v1.0.0/single-idc-operator-arch.png) + +mgo 客户端可用于 Linux、macOS,您可以从[发布版本](../release.md)中选择您所需的 mgo 客户端,注意,mgo 客户端的版本**必须**与 MogDB Operator 的版本匹配。。 + +
+ +## 使用 mgo 客户端的一般注意事项 + +如果您使用[快速入门](../quick-start.md)指南安装 MogDB Operator,您会将 MogDB Operator 安装到名为 `mogdb-operator-system` 命名空间下。 + +为方便起见,我们建议设置 `mogdb-operator-system` 为环境变量 `MGO_NAMESPACE` 的值。在您将执行 mgo 命令的 shell 中,运行以下命令: + +```shell +export MGO_NAMESPACE=mogdb-operator-system +``` + +如果您不想设置此环境变量,或者处于无法使用环境变量的环境中,则必须对大多数命令使用 --namespace(or -n) 标志,例如: + +```shell +mgo version -n mogdb-operator-system +``` + +
+ +## 语法 + +有关 mgo 客户端的命令的详细阐述,请参考[命令行](../references/client/mgo.md)相关内容。 + +mgo 的语法类似于您使用 kubectl 一样简单,MogDB Operator 项目的目标之一是允许在支持 Kubernetes 的环境中无缝管理 MogDB 集群,并且通过遵循用户熟悉的命令模式,使学习曲线变得更加容易。 + +要了解 mgo 命令的顶层可用内容,请执行: + +```shell +mgo +``` + +mgo 命令的语法通常遵循以下格式: + +```shell +pgo [command] ([TYPE] [NAME]) [flags] +``` + +其中 command 是一个动词,例如: + +- create +- show +- delete + +type 是一种资源类型,例如: + +- cluster +- mgorole +- mgouser + +name 是资源类型的名称,例如: + +- cluster1 +- admin + +有些全局 flag 作用于每个 mgo 命令,有些特殊 flag 作用于指定 mgo 命令,要获取命令可用的所有选项和 flag的列表,您可以使用 --help flag。例如,要查看 mgo create cluster 命令可用的所有选项,您可以运行以下命令: + +```shell +mgo create cluster --help +``` diff --git a/product/zh/docs-mogdb-stack/v2.0/architecture/monitor.md b/product/zh/docs-mogdb-stack/v2.0/architecture/monitor.md new file mode 100644 index 00000000..e34910ad --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/architecture/monitor.md @@ -0,0 +1,108 @@ +--- +title: 监控 +summary: 监控 +author: Ji Yabin, hhhhhzhen +date: 2022-12-30 +--- + +# 监控与告警 + +本文介绍如何对 Kubernetes 集群进行监控。在 MogDB 集群运行的过程中,需要对容器资源、宿主机、Kubernetes 组件等进行监控。对于这些组件或资源的监控,需要在整个 Kubernetes 集群维度部署监控系统来实现。 + +
+ +## 架构 + +监控告警共包含四个维度: + +- 宿主机指标 +- 容器指标 +- Kubernetes 资源状态 +- MogDB 集群状态 + +![deploy-arch](https://cdn-mogdb.enmotech.com/docs-media/mogdb-stack/v1.0.0/monitor.png) + +## 宿主机监控 + +通过 node exporter 对物理机指标进行采集,统一抓取到 prometheus 中。Node Exporter 是 Prometheus 官方提供的一个节点资源采集组件,可以用于收集服务器节点的数据,如 CPU 频率信息、磁盘 IO 统计、剩余可用内存等等。Node Exporter 会将收集到的信息转换为 Prometheus 可识别的 Metrics 数据。Prometheus 可以从 Node Exporter 中对这些指标进行收集与存储,并且可以根据这些数据的实时变化进行服务器节点资源监控。 + +
+ +## 容器监控 + +cAdvisor 是 Google 开源的容器资源监控和性能分析工具,它是专门为容器而生,在 Kubernetes 中,我们不需要单独去安装,cAdvisor 作为 kubelet 内置的一部分程序可以直接使用,也就是我们可以直接使用 cAdvisor 采集数据,可以采集到和容器运行相关的所有指标。 + +cadvisor 中获取到的典型监控指标如下: + +| 指标名称 | 类型 | 含义 | +|-----------------------------------------|----------|---------------------------| +| container_cpu_load_average_10s | gauge | 过去10秒容器CPU的平均负载 | +| container_cpu_usage_seconds_total | counter | 容器在每个CPU内核上的累积占用时间 (单位:秒) | +| container_cpu_system_seconds_total | counter | System CPU累积占用时间(单位:秒) | +| container_cpu_user_seconds_total | counter | User CPU累积占用时间(单位:秒) | +| container_fs_usage_bytes | gauge | 容器中文件系统的使用量(单位:字节) | +| container_fs_limit_bytes | gauge | 容器可以使用的文件系统总量(单位:字节) | +| container_fs_reads_bytes_total | counter | 容器累积读取数据的总量(单位:字节) | +| container_fs_writes_bytes_total | counter | 容器累积写入数据的总量(单位:字节) | +| container_memory_max_usage_bytes | gauge | 容器的最大内存使用量(单位:字节) | +| container_memory_usage_bytes | gauge | 容器当前的内存使用量(单位:字节) | +| container_spec_memory_limit_bytes | gauge | 容器的内存使用量限制 | +| machine_memory_bytes | gauge | 当前主机的内存总量 | +| container_network_receive_bytes_total | counter | 容器网络累积接收数据总量(单位:字节) | +| container_network_transmit_bytes_total | counter | 容器网络累积传输数据总量(单位:字节) | + +
+ +## 资源对象监控 + +kube-state-metrics 提供资源对象本身的监控,如 pod 运行状态、有多少 job 在运行中等等,它基于 client-go 开发,轮询 Kubernetes API,并将 Kubernetes 的结构化信息转换为 metrics。 + +指标类别包括: + +- CronJob Metrics + +- DaemonSet Metrics + +- Deployment Metrics + +- Job Metrics + +- LimitRange Metrics + +- Node Metrics + +- PersistentVolume Metrics + +- PersistentVolumeClaim Metrics + +- Pod Metrics + +- Pod Disruption Budget Metrics + +- ReplicaSet Metrics + +- ReplicationController Metrics + +- ResourceQuota Metrics + +- Service Metrics + +- StatefulSet Metrics + +- Namespace Metrics + +- Horizontal Pod Autoscaler Metrics + +- Endpoint Metrics + +- Secret Metrics + +- ConfigMap Metrics + +
+ +## MogDB 监控 + +为了获取 MogDB 自身的监控指标,需要配套的 MogDB exporter 采集相应的数据。 + +
diff --git a/product/zh/docs-mogdb-stack/v2.0/architecture/recovery-management.md b/product/zh/docs-mogdb-stack/v2.0/architecture/recovery-management.md new file mode 100644 index 00000000..88acd7e9 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/architecture/recovery-management.md @@ -0,0 +1,58 @@ +--- +title: 恢复管理 +summary: 恢复管理 +author: Ji Yabin, hhhhhzhen +date: 2022-12-30 +--- + +# 恢复管理 + +MogDB Operator 提供了从备份中恢复集群的功能。 + + + +如果您需要自定义恢复配置,则需要修改 MogDB cluster manifest restore spec,具体请参考 [resotre spec](../references/server/crd-references.md#MogdbClusterspecRestore): + +有关通过物理备份恢复的配置内容如下,具体请参考 [GSBaseBackupSource](../references/server/crd-references.md#MogdbClusterspecRestoreGSBaseBackupSource): + +```yaml +apiVersion: mogdb.enmotech.io/v1 +kind: MogdbCluster +spec: + restore: + # 执行恢复的镜像 + image: + # 恢复标识ID + restoreId: + # 目标集群名称 + clusterName: + # 物理备份源 + GSBaseBackupSource: + type: + target: +``` + +有关通过物理逻辑恢复的配置内容如下,具体请参考 [GSDumpAllSource](../references/server/crd-references.md#MogdbClusterspecRestoreGSDumpAllSource): + +```yaml +apiVersion: mogdb.enmotech.io/v1 +kind: MogdbCluster +spec: + restore: + # 执行恢复的镜像 + image: + # 恢复标识ID + restoreId: + # 目标集群名称 + clusterName: + # 逻辑备份源 + GSDumpAllSource: + type: + target: +``` + +
+ +## 架构 + +![deploy-arch](https://cdn-mogdb.enmotech.com/docs-media/mogdb-stack/v1.0.0/recovery-management.png) diff --git a/product/zh/docs-mogdb-stack/v2.0/tutorial/getting-started.md b/product/zh/docs-mogdb-stack/v2.0/tutorial/getting-started.md index 22c56735..c169ee4e 100644 --- a/product/zh/docs-mogdb-stack/v2.0/tutorial/getting-started.md +++ b/product/zh/docs-mogdb-stack/v2.0/tutorial/getting-started.md @@ -5,7 +5,9 @@ author: Wang Dong, hhhhhzhen date: 2022-12-30 --- -# 安装 MogDB Stack +# 开始 + +如果您尚未安装 MogDB-Stack,请参考[软件安装](../installation/helm.md)部分,根据需要选择一种方式安装 MogDB-Stack。 ## 前置条件 -- Gitee From 6bedda0379bd522ba148127d6b4b025e19da47b2 Mon Sep 17 00:00:00 2001 From: hhhhhzhen Date: Sun, 18 Dec 2022 23:24:22 +0800 Subject: [PATCH 5/6] feat(stack): add ha --- .../v2.0/architecture/assets/ha.png | Bin 0 -> 58333 bytes .../v2.0/architecture/high-availability.md | 156 ++++++++++++++ .../v2.0/tutorial/getting-started.md | 192 +----------------- 3 files changed, 160 insertions(+), 188 deletions(-) create mode 100644 product/zh/docs-mogdb-stack/v2.0/architecture/assets/ha.png create mode 100644 product/zh/docs-mogdb-stack/v2.0/architecture/high-availability.md diff --git a/product/zh/docs-mogdb-stack/v2.0/architecture/assets/ha.png b/product/zh/docs-mogdb-stack/v2.0/architecture/assets/ha.png new file mode 100644 index 0000000000000000000000000000000000000000..4ed27e49fb5da99feb4e043888ee5bd92c1e385b GIT binary patch literal 58333 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≈diU{-`HFyfp>Z3YmB(4OKnY5`@BMl=OzP|$-73Cp*&&{e=yAj*Ogl9G+p zC);exlggGgp0zjBw4gFWf-=7gEVS&Vr;4(2itKB9C1qu007eusF|jhGoCC0~Xx^N( zCKN^ycqF8Ju@ulR0(eKi4E(If%37-09c^xI?q1x63e?=*zVPq@7;i5j#5OOOl^dlL ztY$ z^y<~uUb7L9l0xXD3(Mqi59pONgC-A<`$LFY(2_Q0nt_zU_$-KuY*ft)n1?`gzJ(J6EA_5 zl$iMN&=y1}C_e2r&44e}gVF-b5|q~hjqIx=_avmHDM3#JbOQe5@9&T6KEaD40GuW_ zqGi%f_Y+Pt^#6MP@Zq<~T7R$o8Pes+FBpiBQLm#Zn!(CyfMHw}6W-ltFE9f3I|Q(u znVxnBJ&vEBKa@cp3mYHU0|o=i!vT;;D9eFP{ywqz4iQpYQ-h;h;0d;>tuEM1)TE^8 zcbjkp&x`MGzyPMa<+FimS~g+;L07L{-CY?utR>YQ2K5#h5)(s7L&JugstXu`_#_ZH z0`cTEq)wr=Z|8pc5WpxIuoxWam%Go;zuzXfYF_{XFQVEYPs*jrjc8nr$0saI+F8go z@8BFXRE42e#sS$I?9J>4<)0$|-8w4h)Vs_^83T8Bn5^*yIRUt_>d?d7{vZnO1qj5R z*&3B{Xd2qt+D5Qwrrm9VZJrsJ1<6;x?xQIjP6VSZIxj-26zYhs8EH5>P<^~?O#_m3 zLqkLPB6PnX^u^7Et?!eqU=LTssa;Yu1{{FDxUR!GfhmVGtHId>oOd1nf+{MG-_8h( zu*f$EHGn5HP|ZliyP+WpnM=7s2{&C3EsWY?O?hH=p|uaO6kTucb<9Ty4d&|2HbJ=7 zyhx+O0`%kNh$b|ob9(vsO80$RbY?@5_1MXvc`k4OP;xs zu?@>T$RUmh3)_OAVbQ7FgIX}Rm`Tgs{V3sND}C%}mRG|r2?HqrYW`s`HZBs(m=i!i zl8L{H-g2QbWzx6gaO! z$H0K=5$k+?@f~i!TvsoZD+A^ed-7=$eJAiz^lvRaLl*VfgQ4|Ga)g8@i&-9hzz9#h)?`H2sxaKN+# z9DM@<;&`p&d(B##n!08g`fS)(U8n#NpwnVM6~H??Jq_9#8~6u~9N=UU#RdT@QCNdC zTUAOxYCd!h;mPgcd-ifh^b9+;3a`PsPJ5K(0f6@kac`G?qqM+h+}s^c_We3Y z`;g($$~ z>ae}OsEf9BfdlU*>Q95HJ%%hxz$zw?TR>S?B!;8BB~~8Wy=uFQ{cONG`Y#-`jDLR% zwar~5RQa2K-fvv{K*XGlu58MXh>|_~Ml5~Pff0QMDh3kq+uZxN_%e(m1IZK zubXebM0S*Ss@Y)q1&Rt+7hrStPtTD(A}RZ6#4UqXZ{?To0QlTjN;0(rHkR_%?iW9YKoZA_6!5nT?>>4Ra+a^b&qiiWW-&qiT#X?F5Z;u_<9*#H z;+XD=ea@~KD`x2TlTl7gg>^1WNDPV_MZFt@>5p=+-j@(XVJ+WbWlO)4{cd)yUm=cp z^5%#xavi<-=SGMk*cwi#h2+^$3~J;vNd(jWg|;_DwJTe)RB~btOo~=c@hr9%$!=!< z+*;NoPkOxl`V5x5%b>`&bDSYA@;}pA^O6%=!l$Xsz8jTm2dsZ{M75YfV(*|DYg^?&{=(z4#s$`@Tl;9A_B3JRm zQlL{&#gFL%os>d`9$rV0KZm_3>EAEbbQ)4HdUkt_x9B1LvqhP3io?(`Rj09clbgXt2XZ#kHE9|0huYtfAZ-+S0S;89FeW|dsa51Vk)TUh7 z$m8#sGNw8V8mjC=RSvHd%q|9?aIZ?i@G?@X?DxoMNjq^*sr)tgF4~3HJ4xzgMm}fe z@I?40Nrlv5(&K(g(*H!Vr}PaQzDll#bs1m8H>-HdmTZ}emc=DF=m6Z8i+HBe;1DfYv`E_fS%yYmgK-?6*S@XwEt~HU}Oh?wY z3q)_XltvS)$VF1=ke#MtbjoGX1pnT%*}T=mPbw~T=Hv!6h$LQSC~9~P6ws*DtYk-h zL|^$|A6u*sAFA4VI;v)|{d8^W*?+wMuv>p~GLfw6yR`MRhd{0YgCDZhHRR@hE<0(Q zsKs`^d?c`173JhI*Q3ma&s%Zx-@uXQVY?{v`O$&uOHVQm(f12a0(1n}{^Q$@LcSXc zm3(tj3`FLCU0%zLy#0_ZZt&voN^YL!35z<*$fLzJfOr^$on3O5E%p9A3-H$}R)6u; z&l{GNr1e@>u2nU~*G#BZdS?||o&Nq8J3Jfaw^bVPT<5!3Z}D}=6Qzwm)J`vceR1_7 z!)R>puhM@f$ctg}W24u+KxTg~7tdxnu9(!GGrFLGY zbMV!VB`(ca$Miuiv_$tj02`+mnV#&2uPYGWc{pzG9ukv2&Fw`O9*dO*Y$E~MJ!%e=W*RgmOkBBhI`bHYB7}>`&=!TC=asv*^9&Vu_0uLD`t8yg#kQm;v z+~9w=t92}v>_VuMj*f2n@SvKPeo{_BMh;8BnQ~^0OIn>80O>7h5fRL=2GcUYVMiY` zCrtb$gNs$?DePaL5zzMr0442^smJQ3agE71rE#LI;9yI3I+D`hv z@Fyr7ZRC*iT=nRSh48H>uJcN{eeW-7>$zFVC@Fu@QK`-NBA2Qc7^$R??N~INra^`I z`B{LtcY-(_iJ!jktY%(WtmZ|>h2M1F5;@_^tuwCL54~CW9+DdLT)4D==NhNOAfR3Q zi*8r#Ju?ehMIcQ0bduyf*-4Cw+7gJ@GOo%=5 zA8H>29Q3lz+q`Ej%gm|2QSL}Mc_M*aeWt>%AN-b~ck9l=_t1s;$78wzDwctq)BgsH zpjmeV10W4aL*rS8L&9ES`YOTsi#78Hj$LBs56d|S{Z)2us(Cdj>{6+<(kU8kIy@rX z6Bswcow&x0qX2^RhB9TN(Ca+>Haf@F9|oC}4;=cmsnQoIvi!;fc($g>uIJx#iks-2SK@vhLnrzqf4qQJS2 zwmz{%4N*w$F{H6yPq$czlbl}`ruDX?&#zcTt6dK}x?S!BDKD{qj$(ONcP>`OrN6r{ zuXXXxnTus*J}Y&i+Vy?qtN4t}PNk8NXm7Y(b^?WoYX-lZe@PWAbavs)Xd0~MQlcbnZ#PZQvz59QwypI9E=ddYo@ z(*&cqV$ zw-T94X&o{+RXmHu(zg8Ly<10-9B&)h*fsie^tD5hOP55bv%Z9OMR!P`C$(%%12@*f zXH%q!@+%tH-~QS6-mmnz9fTzdpX3OSb%}g;UNukt`hZw5l_pkDwCtXEBgGfK)@JE@ z5uaLMeQ#)4S=)>X_T8~fO;Wl2<|RWzUhvw^L$*YWnTtyq>Up**y4lc?AK{Ik7ajME zZ#n-(EQfwrzGqOLu$qVp-8QC?uITpQ?Q=vk#!B~;IEX7U-0B$pp0}I~I9xlU^a+ky zkImTj_VmD!lER!E*4wwgFZqG<1yYKOcR(^i>Xi)bc+en_;&$c0Tj;Z_U zb0;d!V(R<&vG=7gvaA`tSR0O{Y7Wa3j+dW8{jVVDBd6} zLHh+xy*r%3KY)W1sy*tU$8~_s@+;O8TN`X=%5Xhx(V` zI44!oc@Lya(a`fvtj&nBp@eSge)bJ9y;!2DFzI#`)_9ZSoL|3=s`5%2?&b!&<~mmj z2@fPS3TGXm8@V5p^*j$LC^$5Xfr%MDm0Rz< zom@Ixs+VuL@wGT2MxD4(N-e)DTtLOIDPWR=U)AU)OZX3tDf^v-{xRhdA0w7x4hiO)gGgX4|z&CpYba zjo3Y~myde3YQ>0E$q>9*gKNn$=al|1no7Qdct?~eMlAL*ad$sQZDyR&W%}Il@a?8a zUnwImI#x{Ft9mp30&h7{m`JDT$xq|>sqUIg--YW5tQh&q=!srY(IwS9%^NlN!Kc8&+BWm)~lmNQLdPiWl|IkK#M`qH?K z3;bG{0^)~Sr5hGh_?7jRSh%qK_x9`CQ`FL)5u3WTsaZe$W^mSPm#zR_cZczgGgB5l;+$^W$%5)I6ux9XN>dfo4&6iEZ3Uzi94_BdS38R$V6z3IvzUZzKu$f z2~Lv1O3;+fVc?f|9q=;R$2`Enzk@u}MYZadjpkCVnkwBCIgbk&&sHF|f$fscEXK&9 z!at!b(T_{7mJ2=Ne~@!Jgb^3pMh~J9hrivca9vKJXJD5%4(6-oe!H=knXc7t8G?V^ zp+FH9?(CeJuF*$uZ?wJxNMtpi z^~^iDl>7X2QgSM4YWSJ9i8~?pj=Jgu(!WyEXiCeKB^JC+cbL7OYhNX;k@8m9-o0s- zvxHi+x*+hrxC-d%5^+j4PjZLa=b zY#{p0VN{aa`DeGkM&%)%RSF+2u2KwZ9dGi~+k1n~Ggr#Ub9cF(o~w1GRg0ky{APV? zd|F3R{OPa1H3;*lE|N^bQBLUx=)WyU!uhN@n8qT>+<)riOVMI!`R-z7kv$Sk=Xj_Q zR`*iA*gAFy#Wnl0Dp;g&b?%-lQOrj&(K0Em&3#aCOTSNYQQjs0w&cZ(WE-QhR+@Q6 z`y%qX2>1vJ^`6U{TYo&E=rRGW`@66DN@N9C>t0`zEQLNS$4(D<3aS;$8$DnPTqJBz zk6xsHxjD(dD)v#X=U<{inK)8t)^%%%|8n1!%0P5xEJc`kmGwdQw`V(w9k(m)dDbbj z(q9g_Dlf;r)k8#oxlhQGI-e@E*EZtjLGhnkMwE7^`%loulLV872+6=;bu@SlGc8N< zN=hngw#A=*rNdG))>E^S4}I+`T4kbo`@ zt84`+wUfcE6f5?5&y&wnwdjcia zg*gm?ja4Rcp&WO*wnhnOKg(r|-pt%r*UO;Cn~$8%ZFg3W?mSnoQ=CmdQ+g@)qPq%8 zVgoM9qX#U;6#*@zg9)Zr@2=?T*Vu;1b^nR_f8O1-__ha-V$`Fi05q_ zY$FbvlKdW{^o&toP+O6#I6Nv^TEz)1%wAqQl7mvLKk|_w003`G9MEUmj%U;3t+G}6 zu08rCfRYhJAYL@t;ODToj@xFG`9M{j?zR}X2`A#GB9x)x$oXM-# z8l*|9BPOa~1tR0=b1!pH>htG>VJT`ECz}04K5*-D|$^QZ{y!iavJ#iH!!;7^R1YD zdN+3ami!_St5#4zakd0=pyVsn-!vls0%j`zA*!nhgTFr;m)by_;w?!WenVd_*uR0c zd?WtTZK_(~uYao_6Ee8=BTeGuhTx?jw6KZ$BQ^&Q9nqX(Pq{}BvG7iZZ2oMGHQJ9h zTJTo;w?3>0SS0i+owZo3ga5$2p*GSv*&bBKV20{#sLMiz`c##oVPtzQ?Ts!-!fv!tHfOqp`$iGCM7m@}T7F7A`Y7fsUH4IV_<~j6N4%?kIUQ47W zMhL71{d>34&N&=hj%*kD6Q?%Z%Eick{>l3*Jr&ZAK5+137c#5j1B@V!nMux>BSeg* z`hQ$Wr&pWDRpPCV*Kf9jx97Wj@1L0xtxn{5�CYxWrlgdQuGc{R5g&2ABMitevZb zC76G17IEvdX*6GqBtNxNOlk8G)1}#T*%;48tiP#Q@2x;8_N(t1)N-WP9QeHkXuJ*` zxz4i5r0=CcO;oUP%UVbElyTpW-EOaM%pyFy@$UCJO+WE8gHpSvw1OlB8jT*lGVD0J zF)(9%kBuu(5nS=Yv_N!QI;>uHt`y6&D%=7UY;$D@iV6dlqSzGT2&7iDAVBD1^ig>H z&!i#ra*o~^cjw3@G3s}%yr>H3V(h#6UMKG3;H`hdO?fwv$|a$3Oma6s=Xwfx-f`V^ zDTuWA8|6&;iEDKJ&Xzkph!pY_q+6yRG%jOiO)8#Tv{$a?i!B>`dNykU`-ffv1?l{a zv)IoGziUa6xxkH?-qK#8`nN@TkD&@2_$?7;Crm{nWsi$Jc(NZuS5*@C{eBMf$innZ z`mf*k(eo`+L#A>nkV5~p>av9swCe(kB1QI7SU@p1$GIR zgcI(rpM_GrQ3(u`3*?LG7z)!>XZsn0TnbkTH^{&1R^L^2EY)Z5FpI`FM2gauw`iRL z{pro9ZcE|jOOa{4A8Qm(AB_4p4c-<6Qm8;fO43OJejT^4V&O_ilDx=~W=T9!di}$% zQuai$%@{X`>W#DkCEwZP72DC`9i*{F+W)NUU-0TNQ4Asa$Pn_0>MjT7KO?XZLa@&+ zqz08veLtJUzY7iHKYFL<&-6~cz5gv11SRFau}1u#m;D*8|1%(ehT;F$6=KX;{pUl? zr%=d{V*O`;vJ^#f0NhS9U(5NP9Ksv@?1_t(O zpUJF(g3c8@@9;(>iW`lrphKx}!N()0lyvagbO5#8SM7*9jo7x{5Ah z(EPoB9Ncl6Cz_f=D3mJ@vVb+DrJ><3D=!~7;=GH5<}RwU4rnoc0Ixxhxd)h0fd3H| zp0ue*&?D*1|LYk=`39Vip}GMmvA>!E24Z5*d*(T--{RN-5(c0L(*Wxu238F~n_7a2 zqhO@oyve2y9LYLYi~HA7_<&Y$9?)KjL2&{25P5m+t1bz8stcR0f~fbbb${aIk-^ZQx_3y zV6(KcVq#(fpiDL39(qJh$Jv4nwMdJOY^@(ZehgSgz-<7vn->rrPq%+!lMC{}L(VzG z=}{UA|1sEQGi8|5*0P@Qqv`0`50|^d3k$#8{j-q2?^DJMwpo~ zj>-$g7#bP^77`#^YB&M51mqBaZ9OtGyGG36Bdp|a@@LvaU8~kYs`8upPu5E*%&K+S z8eQsf#@6e0bbm`vh-fv&-Pa+~(9$|tRPnmwwqrh)gF=-7Xw-VO51?nS?tUJuPx%fE z5YS>h1<3#a8f$23KCPWpp2$j1pD`0TeDLJ!O*uf8qo7v+jBjdbxdtl%5NN=6NVmO1 z1-`k;uV@+W^-ta5yd=Heu$7gSMFAqVNd#R}le-${yNuV={Hj5k%Eld$Lq)(YjqIhJ z3Uuv1e*X*2YR;{K?$bu_%EQNrNbZlT9%I9oI=r@B?BA3-g47Kl9I<{#$7jPw(uXsB z26dTV_4P*C9GOQ_pPg7k;e1*HMu)1&PeeK#2Ko)us% zAT~0h*Zuv0E}YS}NlGhlvYTFe;=I*?-2s7t@tkI%BbsPE$x-oj>yc9cg+%cYfVBi$0BWG-@utR) z7yJQ%2^XwNL0EN`*zez%i4xuKL?WhBv$K7jpoUA?_|7sX=HWIk;?^r-RMsupxS!X{ zOB>B_y>>MA1+xN;ZS|+UmrS5#Ry>uT}&&Cr}Hc;^!Y(ac~>&Y39@aR>Xs* z=n2GDn7bs7N9{zaG(kjKE(%e$POLctBQK$YN>YjET7+A#-uQxf^Qzy7)b49A2PZ$`mZrQGEl%){X0@j3M`Q05 zud_xz1!lrceg_j+dH~0M0OUALO--{yIh{f+;ac9WuhuA#F-*e3o=`ysvH-}(YQco7 z5TNfkOyjdnfN2FNTnXGbT(wPB_oNJ97gjWlVn^LPap^O-egGrk>80(yn%AokLt-8e zur$|jnA^FpDX$*99IkR-vD1-$C1l$2XH!?CJ;fwWtOv2ijvNz-l-Jevy_uD&@WiSUq zo3G{#^ck3U8Ut=!(9>ix&3-jAPJ_ERTs#GApOar>wzd;hLv?=I;0OS@1g@zVw)+ks zru9qBRbyH1t`4fOF)~_y@wq(P5>{MTSXfXnUj3xlOFPP_m!;;gsi_ID@V3Bphnjn6 zSlE+FUDJDLv44|a46`S?--Aag)&Sy86p>(4wfGZL-1%!=lW`pEA)u3iVTPTx2Z(Io zgtVk^T_+$wanL{q^hc&#R1wrz!BIY7o-Q$P$?<#avZEh*1TKx@MeIjFHW3S0Gf`#~dMnF># z5vzU;@Cx?8?2cF1rks8pTb%@^7+|#2)zv|H#SS2uDURLzKi^nZ?d|P>OsPJgG=Y25 z+R*`k?qPsxUb%9`LpWt5>lIec0KetnTX1xt#GJI?b68kdn1>&pfBrXF!HJxiojn%N z12(u~BHv~Z>nA?YR`EySWm&!UJ3!VbJ}K!Lhz#fgO%3>L!X%*#rcb^&7;5ESw@4P%9+dc&v@bT*B37g-* zX#osAMOID@3ik@sB<|{d{d&`qE}*@DLjfqD>2QCwAn;MN9} z4s+CDf@ij-fE=lL>KG-1-QWsfIV4eP)pMUZT%?an6`aNje=)pLGk`oYh zPN2DC4xKo-BvHiElV25eEPxhni==_2WN?(w9sr?SJ9wL8*j|&4JwiXVFeC{Y*id{a zpe-*{6C*`i`F0z8x&l4A z5S4H644gfJv)9Uj`24Vl`|W;!98X2>secnFak$?#~I$A0Hw?!>dy~L0n{8o%HaU~0GBX11%(%ITt9&oMZtml zvlQfF5RR3)MPOxkgBzj21=fS-YAk30lo-~ZKNSw6ij0V`Z=;Ff`XpXWmk6C_0Akzh zxd09utgWrb7qF2)P@Fp*HGZ!PUL0)f+Ti7dR4p?$2q56{mxWsccx=%!u;yWr0qhoH zeH5X2HcBN~uo58Q0E`Z7eXE)QsBl5^UP>v|(U0%*@__sT6q#bLPvamVf%=hgqd%cp zQPsp6@B~n9ZEkMPrCJC)45Si;6XJj3*#t2 z08T6~|8&a9VhZFw<-o~@H~}=ka@vkETvR|g@Y&I33!vkHTL8m5fAWJ)#3GV0Gbcv` z0!E1I1mTu066vy;cE-}m!6c-<)W(iQZ6=|^l@hA04ug}e^dMvvkU)<0$|Ql1OCATP z=+kAGC}ALoLu@4#mDP>f>UvKmxFKl%d9SFr*b8>9zWZt!coMzq6<*kpM62 zb=2bJ0W6r17|Bn^zs9H{p@9eF=qfoL1}bp()j-CAzAT+md?}8l;Hz0hLBZ%T>8~&vUjL?-KD6pRhxy8$wt_aK%7~F^%>~jF}GFh z!_2}0mIS2+vG#E`6x<|FoVJ#hmJ9UAPiHAkH@wDvJRlEisq?RzK7fZXXdr(M^ebS! z=okOqSsaMZ2GYj*8y%Ym0Ogh<(i=3M^EIjgz&S|4#rtPwXKNRJg&DAn&$bu^E1Vn~ z`|ZeJllBP+C;*`!_Wh}3Sj)iL*pM%ZY@=UWRa#oQA1wm01+?q^C_MQ0dZZ$; zF?dlXlng~H2grgRau}im7YJ_-r``Z5*6Z}Q*A$R8AwWG@t~*&SAG4Xg24ZEPbQ72! z3}#`mKMR!u*5M&`7*{VT!Wx5wYY~?H+%-uOLPZo;3}D|l5nyzz^juw1|l z7f$p|+W}uObK-X%H!Lln$AVNI@V1UY+vC~DqZn>ameYgcQ*B+{#FP|NLJU5Xi-o1I zgBKMUd;#H7Xn~1LWs))@Qe(`$h$>+rEf-Z6$yKMr`t#gsqoYDmj6nD_uPrkH`tRUf z07d{F5o8L#dcFJbVGAhny<99HoD(XrW?s#72+T^bVa!zEZBU%C?N<*2)8Q6PV1=RR zZo?)tAEYF+72`hG zO@E;c`?Wl53#bYzwfpzM3=fC=23P>%i*Lg;rQUgO{d`#1z#Mytj&13%0j|6yjDjcv zvc}Sn7qkJ%0?H^-jZk1g!)ARv4Nnu*GG1`ex5y&!2o%KxOg51MLQRTpcxV zQ*eokA1eHi4kfdw7)u}%1R($~gK}V@g9bzDehJt>sFFxE&ThKa>Q_&A!sq}d3Ae4g z+lJl5qTuaYSQ4p=Eed(!>l$DY}J)1<%-nCl*f* z)E=H#++79Pqm@1GF~f>6Kqpn`=1D>H<{89vg%p^Uzs4s}t`C856DPVr>*Ym*TlxJ3 zCU6g%uTCub#kNf?y?r_SyExBE$;c?}H0ZOt!(m5$VId0>6Xu3m7k6i%_6L(T$X2S3 z5B|Ijg4VLG?MYDoz`${J$xUI8Z*0M#f;80B4X3X`*|TD7qJFu;{)5qtix)3a&Dimg z9JoAr&@h+=Bvy3S+@B>dp@GYH}##VaQzb(Vxg0cQ8OcmZ`r!*^&%W0MimF!19*JzEh>uP45%pKV=ma4_uI@5%0K{NT&P z#Ofho8~fn{me6^B2AG5>U6B(|%lJ64hH?d?rMdh3N|S$)rQYGaO~i_xC|kOi74x$@ z3Al_2g0JJ_t6-D_);>b@4jd{7{&}G|_>ev)2y#JL8c1fPMh)D!aw;k)RXeZUd;@NS zb1|TPmTz#pgjxgNgJww*Kq&*LaSq^Ys&$K+TMD(7Awxi^Js}MqsJ@2$dk@?&nTV&y zc7+vGcpwq&frM#dZu#%Nj?Efk;6!l`A=mo0whcM|9ynWwkwFe(|F_dJFmt7)r6DG= zQi0&*0Yp}i2Izt-iHXU{vm{l48ekPTA+M9|l$h7AVJSe+4vg+l5^hF*ez*a`ViBV+ zKH%v~L*hYK2)shgSMt??oF3p--Ye90hUz64E~|JRcw(`a=)lSa0%IOf_?@_fh2$A`12m38y8C@0so1*&icKgqW>Cz2%Ix$00QlA zB>-M^?jP6*@jovM-?$tLi=YzT7%o^3-G2(S@M|JFlX$P8R9E;?yqwei{Bbqm2#IDIVV(bJj0JwA)Sp;!;q_8p z6~(85ydsVgJW39B^mC5zKLVlMj794tKOSi?S^0ip=sa=N%H*6xR}s3uV6fO{-C!{U z2N7{&+CJk)h*es%K#Vry@0GWlB~!9~EGB$8uVYesq!<Zj8 zj7a7`enB(9ag!?j%^R&lNy(XmOumA1wU(*B4bPs=iS>LoM%mNVBTb4Re`XJ-775NR zgX7&ix;o~A&FQ*2#+lZdgEWyzc7eH-o(~tjY9B9h?!zfyGpluzY^8Ivb#^sgJ%QXQ ziO%(O8Jxu)3zY(9jb$3jyT6Fm^tO+FQmwW~*a~mIefVWdW$C>jwLKkEb)(be8k^z~?_e@_D(gS}y_pm5FFXF|bc%&V z1Gi%19&hk+XV>%Ih8t*|O*cSicHt_TVua0BjnpEGuwjzmv%J%7`;)baBy-US;fHPt z6t6gCLN>fqJq{!r>X%r{_r1arJQrsySPYPlM|TK??Ji8e{J-6vo_xydujKN}%cnzy zuU{vx?OlBMa5TBoKu>dO!&$8U+$m99MvKeQRnhzZ*_}?9=V@aXb{36sao;x!6s#s* zNxj7OZ+nXFQ5uS~hLeo7Km*mk`RuOKpl)5rh}=BY*F4DH*_fZ48A!VCj*!Fx^Mh=r zgqlwaE}K+U{L)vF7($PjWiNAcQ>|;O5rR(N;+nH6t6j<+0=4WGM0>``7HtFpz0{o-kdDGVhvi7l*}wL|2<|^R6E_aI>f*bAmr-x+2cQkYRwRAb*%NY(vvrz z_7{Hr)-pKMFKOw2Q*b=H)tNlO$8R$|VYMCTwZ9~cTWG$`d1|)J8A4u~&AR{luwVaR zZs59*_60-Q|BP;hA-Z}asl!}}myY|Rs9#xMKX!JIyB#JSnqHc&$PS3I_1awZLv{oU z9OBndJ5DE^?*Dq`NcwnupoC)cT-5(OF=s4gB*$U*J<}y+L$(LioIGXoPF~xC6dN!^h-g>HLdm0)%6z<5tC6uY>4guc!Klw zc>Ft-Ln+ofwki0$_8uya@vu{!&&Cjk5hK=+qiiI*Q-tw&?>Xlf=e1gg%~HziXp%S1 z#svcqm~8jznL5n$55MOd{7gCC*H+&?or<@LDL5$=m%Kd}spBd9_4StbyOy)1Z1jR$ zku52xycbiS6Zi6kbHWE~IJK87HM$D`Lp@#9?B@9t2m$ zyw=L9CMB7VWGNC}u7@pj>NIs+7n}H{xl>f-Y=3#PiG3zW<6wnuVlEXG!-LhN(GoR6 z;f>#~erur|&AmzF=_PC2fSbbmH33m{X4!muvLS3>9R3*yeKbW}#%KLs^h?LyQzIQm zzjRt)b`@Q~AU}I*(cjRlu!T}UTg6B9`Ak3iMOS{nFkPOC(`;u!md%fAd6FXAgvG6t5SAAw&=HKODsvY$zk%8@BaFr^v=d|hSb^j7kBZI=t=@jL; z6xBznjW+l(de%D@ON?irv?MGEF1@ANnay}T`Aau^&3(=DTx(|D$-kcM6n0u5ID46p zQ&bhRGiC#T+-l;#J)U_NIMG~HseJYf6Qa8TV@&#m!-c-f1QUEE1wBjA=6>HEJDpoU z3m9>5Qjoir=FI-flwN+>d2aTjx7!)CFxk}w&cJ0v7FDhuGn;{5G0XjyFO#S2IRV!0 z5fKy1XC0Zp{4zw9_^w=%440nxQ#sv3uG1stlt#WLxzPSAlb{a;S1*6ntuhx0xgU<}zk|*txWD!$Wj)W$7|Me9l+PSt zsFo9n+%rX=sz1zvJ^v3v=i^v{>^{yjoXfsyDiyHg2c}i&c*y~ijq@7U6S-e zbi32!9y@qzcD8#;e;17C?SAasFz+m#S|2ZUe%n2y)a}1FPl-2FWl>9@5l`M7Kz{bl zGP?ot%UP-0mg&A0Z_Q8{2|4HlYpivA?4~9W{=)<&scGC6F z!dtD>AtKVCO%8{mYoaNNJ^}gORrWnN@r9TCB?^6&r%BI!>56JdK*gGi%z^_Q za!9eDxfZz@koJ90=|BU|oqBI`Pja9ONu{<=)Gj4J(@8~p^69xUVAQ%gJ9UAi)ib>1 z(Y~~_Hp7>!s#RoRcaxbm)z}Kz#|-UMT2QLT353*$|Kv4Z~OcsF|2L7M;-Z z@4%zY4>Zj_I*5!D)Q9~{u3zT~CjOp@nHjXMdG%io#6!VBHADJh+HJ~o)OVYjxb=fZ z;~N_#n<;x&0WpA2N~)u(+P4-5wP84R1xs8GfpF5TC2<>w!IBUZZdg8KCmg`uwD48I z@4`s{*zdQ(z^-h*g21fdiiEG&_W8z+0eI3SKy~cB4*z~-s_(tYw=*n2otMn{Y$&cm z=K~FO2YW4sf4>2_=%qim1R9vx*)F#YQPq5?w!FNH2UNMtgT`6zYJXEKTs?5 zX{4ym_bm(hwpe|vh2P$OQttftK_}Wg2X9Uz{pK6gpLeabnk=v9XA#Zu=c#zae`}zR zzMK*Bf)aK78B_p46>WGe4zzh5KEB$!di0PD7SaSK@k>z^P$Nuce<e=Yz+Jj6Or z3lKt2nda}%TziQ+sp{r5(Adhnv{kk(n{(w^itiq0e=hkQTXp*Jw`{<=$t$e~Im7wV z-ivCEC_`MEsV3mio?!4}!ukG$yP}ZlntCnm@3bw;^z!jO_S?W#)kEnA!)}4TB%DzS z3;I40Vki7+XgzQi(F$QcPzVHo6hhzOaUv(+u%Iw>sSp}lqoy}zHUo^*-WvP6K7;4< z%oERlJ5(Fb?`&R`wm7qCnUl|zFcd@Za52VQ$-n&DW|SeYnRgVMI$0Cpvmw!Wn&=agbV(P=*5jk>T~|=SO9w7@~fO@ z?qPXPTLvQ;y9%6gFQ=Hk*06xTK5H3FS2GCFx#oHBb3khKqGNj%R5z+@07wdTyF#J( z*jPU2r9s257bN3Bsk=-FJx3{luoEH}PAHB+FXJn@lDvGp@H02I<#UMC$GiHAYfWZ1 zKjvDJ@vTibYOwGv78VS=G!U(Jl3=vlm7uF}4}I&W?Dni4yADf2V>>(A8LYdLp1AlI z*rht|gLNUOccM}nd)RySrLpl0bWye4od7@ts$2C1mk{1Odpm}<AHu%!gD@$ z&To>`vT0i?@;0t=hbH}6d+d_0SG*Lw~-Zs7S_Xs%Z6a14?X$pFh+Lk%5C_k+eDa!kV z)1l0`v?C-lL`|cw@=n`(S^AyV9U-VI>E+PNTMfL1${%#Jw2wNmQ>*C%`$xI5V4VIG zgr1XU(YHfc4^&&@MNlNtxVSdRKzHz}$Ok9dHB#O$zth%T!u%zExn4bO(wAUd{(cP>XTX>=8`zY9!{ON5g#|!W zOkT65u$#BpC8iQm&0DUs#5WP%e&={hBKdo%Nk8^xY@b)HJ1*NTN_a^BJC5_Cc^?(z z)2Y8Pv>j9O?i6<8>u*N-`)hn%bWSGk@x;QleW%6o3vTl0bYc<{&0CYlHRRv$yqFou(-^;xDXTL{0qti z`F4`a0&=b5;=khB6irk3>qMlfd~f@hI4GNLJ+0Hvii+c$_n_O7yE?U*tmJ$QbgM&9gy|zfdIHsK3JFVHA%f$qoflAJRoX)k+ zcOP<*2*lSwHwO+}8+C*Cy5lO9$g7=iGILW=cgBNDtZ~}(!Z~bOjPsSc!Y(WKL!>hX z7GYJt44^|u(#CY4khHCaVq)hwFeo`*iG!H^{b>2?xVRB1DLvcM?&pZ0OBbTkh#n=~ zMqFm}&4kUIFGM`E=XyUj?GZKF3u<0oUMi{=^ZTJj1PIFP&!1^ti9g3WFH6N{Czmte zjP(ej!|=o&6;IstN@GceK8}Qjn@jm=da})`mchXRAk?!=Ek@aQl}Oi|4V$uL!~;-a zzP`Q(2W|;nw9fn&6mZbWw7cxb0p|C>Kl>cz>&q`v`^;UF4JvGI!W|2X;ha~R1Q~qh z8qT-F%OLj%EzH@O8Mb9A#AnL+-H294X_=+HM*5KvLR(oCt%>Ke^fc0hx%kf3AI22q zD`PKVk#NPLw}Tx)VPxTBa|RZj?$l1+C0}sihxStz@|>Zp1p2v5=Yt)KT!kC=IpP$v z)EJ`MK|c*3XHQ@xKhoeJ412c%J~0yasA?A!RCdkV`APW6(U|43JLr#(os0`}#eNqQ z!%23X34j{Ef*zC@5u)KwYxQAol#FO=YXih;6V4tH0l>)u`#A)b_zO`_hIm1aWWBg7 zMuGWU-lr13_4$)C=x?S7DBe0rdv@zkN#Z5L9;i4ARH2SYTKscC8@68y)obhZA`Hr^ zs;Yus>ihQ*{yesmf`AbOiF#Q*m`^9MNOW~k=@+^=Kf8I{A9wdI$CyVmv&+A^!JyP| zyO;Qf_=c}LSL};U6OLMFZ#{1Tp9K<)Z6MKXS$5?WT8IjKg!lI?S3#HRTF|`%&CG)0 zV!Cv|yRZO1KuAb$sUOsfWYFYD70EJOFHq#pS;p656Q;C~l04~bd&E5XIj6amfTQiF z2G#_+`i&w=`a)p(mz9>{sDem8h^fLsEpTFIAL@iT?+wbB4s3J@0Dr*`V0HuE!t>_k z$uCtQ5UHGEIL?NEf{pjJqb!z-M`O4Q>S8i{5 zeH3oM$fmTiwsxx2m4uTw{Q(3ouZQYxeD;RvlvPo&g)WM#ASli+IiTL$LWWIGHh)H% z#_^5Ir>38r6^DPAzlDEb*)Xm=X#4+#UA}Z;`3qpxL`A(@yM^nSs7(tcB~`Nx#hS8+)vZ$2~4!|hn9Eo zBI*spJ0u(}P${Rkf+{`1b8bZsVT12WBq#$l!zyj+e5LL*=JXTsc&w4)ELthK6Sj_fwZdBmubz{CZFFpORBVpY?;dw*;Gy_c zQU1FkvV#WggvjzHE!W@l7GMmak`)iiMi*vlPj0qYG@IK@yJoBE8y|j-rG4p(kG8dc zG3E5oz0t$7ei2vKrhf5yjeh+yQH}7{e%msBjpx=r8r95G+F99V&SYw06^_t06GfVb z@)y&l^>0tPQT2MZxG)Hoq=f{fB#i0v2W^`A1<5o3vk=D$(-ElOJw|q?f zE@S_tQzE?WIB(Df3Y!s5PB2(Ar>#ix*rRnQo4j{hI+mrf$2iaZV6lD0|k5QEvL-LCZL)grS<^rEKPJ!unXHH#3t zR5deAAv1{P=K(hR(L!Vgux^voWUU~X4Eqed;$lr zsI>=>eh-Z`psa`?v$1r%`yj(^BX~ov%&`30irArf_;JND&41sl%g~BVuhlvyiOwg9 z4y`Z}FZeZCn_32aUu$|PL2i~T%fLkokEkxWY?t~$<-%1BTU<*e4YPFZC__hdv(pP` z`TzJ*h|j5Pv80MONA)x&Mdz^3x5zT!6L3U!$ll7pxULYGzK0PQVrcIMzp=Zi{rdLV z?rH9bywYRwjOh4LA77q4t1Oc**dqQ_?j* zAW5k?l8f3*2c+L;%KlolIE_En8;|`-)H;33Z~l;VS(eWpxnXzLNxM}3y$n8fd2X-! zg|mr6EEK<9K*m!A_w6~k^lGI#AE}3|H)tjx{2SMIx!BR)6~#KMC;X%l${K zMR-%<*U3eYOHj`WP-rq_BH#&yH+-yStQ{DP0nLUp4H8{8SQV>e)GuI5v&8 zY;An;aL$>?C)L1t*_%r0%UIdpehTiCQVWOT)n^VzAU? z&dPCJsdC1PF~s@0Lew2Eo|f-42{ZWc7HQI#*Zs%MKR<@Auul_Q^8CK*Ha0evG|$b& zg#zURga{CmfYCRBTF>dVTTyK&NaRutB&i=i@h=z0fKc7ceGgzng z+96)=bGBIti;NFT)=4vu!$%rq?j@3oG$a;%(c{t7vAX@-vp1-fmrh-ty+p?kZ!-bB z6M*NwK`7Fb$gggIx~6)24a>A&dNM=h2_-vDr{W@*F}yrGJByEx4`6j+Ufrp6G(qgnSvop7;QL12yn(f z`2Zjd+PiSL9WWh~lLhzTn4H$0o?&xznf7xpt`MVz6LLV5GabS{!?$(VC@@om|7B;T zNQau;t%}D_iKO0InGs3!NqA92Q$@JWwM;K~o}TG>cIXUkh~b^<76d{Q(O(;6Fz?Xr zu7*7GMIXSKaj90K9e~*Y)=&jh)<6r~y;eUr=m58FYU(TM0$u|OseF1obxM;C$7BJY zX&(+w03Z>NEi!eHbw4~2=yWDHqS~#L;20Sccb>CpgUXMuB_SQ>8zc>H~4E-b1Ro+*KzvaBltMr4`bjPWhxW(LwgEXmg#U_vYvU8!v z0Ha1l?}%2~i2POFi}}Ni{)1NnLsAFn-;gL-^fB`X;$bNke%x_qaT(RQ;8#DerhL%Vzk%lP6p9D|*cUiS?yEJ=;c;ZB*vci4_=i9YMFK*xQ2-YX9GE99 zH=jTyPC<|8GY#e0Ew)DfP-YTKjn_Kpa5+7YsEudS$w=*VeM77wEaK?aI!zlBGfF0& z6abdq3eQq!F;U9yshf_snsNa88#1Z32xk7sNGb;LuGbv>^s-qCk6XHCGrVFjDUQd$ z+!z`=JT;%BkTGX_#gx#crLX@9dOCoS8Ju&F(^Kx<^Y{crJh%XZQwxYt0B#MVZWrd< z-yb7a;ldv7*(@V)H_6zg(^c4HukuFo_Inln4pT834ttn^7pwm);OEtzXI>X>;?l@` zNX+~^Fjd#GOdS?BuD^BAwn`JGva#py|3k3tX?A!-Fa%8S<-vPIq5)<8OXaVaDHM2D zwd8pOssv3Axo+w3IW^2~!ugKBQEU%Dp#!Zc3u%TZtEi|0C3zGY7*2}V{o0oERO=Ca=ff772xaAAiKB^l{z8*Y2c@ndef9G{yO z-+ei{o@Z0Fk!TMGw_}UzvFNCbvI+}VVIFnMEH%~DqxhbjV{0C?bT({*vjk-%;V>u5 zvQcXuzlK|1v;~2#2{5!1K;5Hm1r~ru>a|O~oF;bv{R4qWdo}NGc6;@Bnw;V$KU3mc z>LhvDut!nSA2uys6Y$@sCC=l#d@29!N5!|+c-G2W^3OPHgRc!;j>W*vemA}AhB|Lg zvE_q2X4b}D=yW4xJZy-q;!ZM9-qMXrhqREwg<*CrzM1RSWgad;S#YVx)|(dl&#T& zNTG3)FSsf$d2E@kBuPHcCz4UDSzQ^ANzrV!KUPe_@?!1}DkY*hqSi%PKfg|wI~ojR zZwW$&FY7NhGwCVfw%0ZE8D7ChS&(DU%-@~YM?}j<17hj#a!XE5hA-mdN#L+4IQH)P z^&vm0h^NVb##xBHZVY9vo2*X-lfe=}g&6iUaE$=j2ryvy9j?()ZJ<3?guMesFOX_b z^h(sJEAIk1{jrE|o8a7jg@yO$F^GMB>pXp?p-uhzD+UFjdd+jZ5axG{Ixiy9%R1lE zJi1GI9myIumRqLxmRDVgX(-;ukv5MLvs+(<3>hE(NhGw_@X9r)WWrfzj#J$-P@zX1 zz}SGz8%!=VYR+ZJMFOW~YvqrKUhRnLnA`kwJ!icrX2(aix{4y(TJyjWveqEnZQ!~8 zNI{|F(W(}X4|qWoEe|*&dga!{rh*syC|}+@6hjxoYc*`~M0wc-$!`3f2$f8MI;5>= z(SU?zm&OqDQ36_4B3R8DfGKZSvTJVAi-< z#7jcP^&Q;X7H`GeYbVY{2ADOzTETMwgY_0DGysuU0Q%b3!-`fDj*Pw=!2JM5{wqu( zsDTd|vSI1Is_nCr8pMYI2xzCJZodG`w4!{^19kt|1sMWW%{bgFF4K{dW zaBwH4?uh2j9XD?)zqG5wH8(ggjK$GeeF4}dO2?sJimpD)C*6>4;c;gm_ibL>Rjn&u zDGaXT`6rSu-B5EXkCxASg*m3FP1Cdxrz|JW&+zEE2r+JD&5I5RBx|LhiKA+XruntG zriV|F-%4VFFtM|HfBA_VO#=>fX|9{hhEH^WM*esI2gOZuV{Jnuz zR~~MK;PoVq+pN!zF-R0|p^iE|0&1@NC znmsz6Kp;dBF>)Ah+(A8a<|`~JfRx!i_;D20jDt<~(swPsovIAN{p|sW%%+#t{RZv` z?JSv|#%1^3&?C*ws?K3=ph3sJbgoAh_ki;TR2$qtTLRX`yi0ZU*k?mF!R<~?7?7Us z?zR0drn0k7g@Gxyzctq*xUF~%69JSrKsbM1k8v78!(eSSL~vlJiJ@QkV=06}BXnP% zTx_8ii9S9-N2(o4DCEBnNj~m8-N`u-vE4bXyLNPm>Ee3oX>B8W;9&o{?e{J9IE-5U zSAwO(VVI&X8Ft`|y%mt0n5fMgScKE4wyLL&l{+Idci~SPAVu9tDyqi*1fB>a7}ynF zZ1`fiyuf!0kaLS@>=aHd0>$%M-@I3x^dDugo`ULSPpB_*xNhB0c_@Azup>Q_{h zY`n3kQTi@i$eoi{I7#Yl6RF4$Z?LLQd~;5Tne9(PLXIT)%ooJeS^h6O&^7L3HINv` zgZ6~G1)S3k$&E1~rz_x-LvFCoK%$}d$!%?%KVtbg8w}lLVl*)KdZ^g+dn8nDI2@iz z3N5^q{I$2cqEWlC?l5gvW>+44^m2ukKU7to;5ydBd!dF8E-U5}>@HA+F_YefNRAx5 zpI?mci(4m~VqC3;Pki@UF2TD_5YJEml@b}iuD0>xS0trPkW7B2y#+IGT-<7Du{b>v zKXm8{viL2xlN>`vUz>HmED!rjV(xxLpG-BMwhbEbmkgaCU-1|WDO8Tth^U@Jh4r4M zrkvhIEa%qLLCw#1{jlWqpeTyv;y}DfzIAY$uT)&x9+%6DIf2)AD1KpT?xglQgsNmV z4go{k#;72_je#MusMYXZ==VtKtd;dvS2bVNd$hsAS8#CqfcA=#<^WbzE+*~}@KI4* z-rRfyB@9m{%5@-iydP$&-c68bC%KXFnqEF&hA=pz-88K{x;x${p74%YHhPfZlS`-m z+B7s$A0#i(NU6%-RtU`8xk0=C<#DiTYnS&VXKq~vjy1~Le)8A{L*v^`kaN}VA#5-B zUUU@>f(jyBOVs3x_Wa;bYd2>bPs%Y;$3ED2mw8fl6J0*oFqi!`UQ=oNdJ8gur)!_4?P;W6$BM!^m@3kgp5Kr;Z3v!% zySjDfPW)XZ81Q0a2q4YQk#6=Qo7TqHNKg8xh)a`Xc*BYB3JvEwcHy3nSB= znYrWXqx?UuU)Vny{J%>3?r^N%|LvQEkkPQpOj2Z}jBr~Gk)%ShDhU-bva%^Uu@l-uM_G<|& z*NZ0(?LN>lfxZkC!`YBMUe3QR2(^g)bK`?Pe*AblV`0*C2?>cod2X4p5iw|>^Iua-92Y-_I4#Wa&f|(BNugCeupE}tOvZ6F26d-t2_YOMRpchdxg||foR6#Tnpa}%mh}p-< z1`pMLG@7#0rPSHV#^MS{p9g~7=;$SYYFy1I>VBvTG4l{=a8UR5TY_<+j#CC&k&;EjM z;*+;GwYL6>uDG*{S8%p$OyFbP=IT0z&R0x|_C|9E?j)tm>~c!zR*Yaa?Hl`j+NY$wdjuKA`1mQ* zjex}%9&>ed1zv+IM5PK%QAKT*)1#ji&;@RXW;wJHGk>vVU=riFb^Dg!7Ydv$_ z7jn|>5pp{|-!9?uwZtK@pGKEyCT7MW+SE(gU_6Pr!9Xua+YfrLHWxkTM!JA3jugLk z2ty_U2vC=khcf?3QQ>{5d$AKH%cXpV;Hu6!D)=SLgBg?wSVP0;*XOFP21Mc+J@fdU z%o^xDv@F+@@QyIm8{JkI7r#Z}x*#JStX=k|jT;y06~|q>cHc0qxu3K9z7hh9^7G3v zpOeVxFrHnIi*#uY#ZhY)v%0-|hnd!ggJF+%7_f#vR3Y~3g)zovwYs$zp|1~9e-)*q zq=bbJNlSz-)e3tE%nD^O{MZ9i9}&U20Uo;Qy_M1I@2M(2sAZ>UdpXErt@`a~w#x%c zK5^zr-)Zb6LI>#MCj&&09uZ*{aq)}!cLlj2&;g*(A@|c6AUc>Vrenscmh<<(dnZL- zv=B^*b4)XxN&Rx$kmbf1K3?5}<()$=o}!A19z&nY@$@#t>Ox5cst&)Q@1ZMtQKV~Z z8}0&HM+A<62+EeNTQTw}RI0)J&k&8)8I~OeE7TaQ^rJt*U|pxD`Nq zK3U=+T)ua2U0TDv#$Kt@veHqi!otGq*Pp;wVSXiy%3_8B!5)%_I zToAfAHZ^#ox(mWyJ)|oct$f|_6grN-*J#YWDm9xlBev|? z$YX-C?@ntdDiLYU0K| z&@>4T){8=MA$k)hOEe=o@tKBc;o;%^Gi?E%3E={5taxuN_AE_7>J0M$GP?vZ+%GD> zUdq2zb{=t6l#`8HOo*5Q*IP?==>0$}44jwuWEk*)11mNiO|;J`z#suA*+Ho3Jq*{g zug>bf)aM-=9rG%KD(y^B{`EnjKUUiAyUjb?y80>Ood?|`zpqG|<-^CK-~Sb)g&sW6 zPixp=wpRcUo&ZLDLeifQ1b}u!=cj%-jVbSc9{DBN&pb`7U&eQsz3eCru~N3ZB+{KM zdBhQs%pbgAvh(442{H)96Ou)v)URV!f20|0yJ+m(hnn}hcL96s{^i&$FAUu_y3nfm zMu@t4Psbbe>;Q!@Qzf>=cWylG9@)5QQwGuA$ah7@W+R5A0$X%)c3w;$SZ3MryR6|P zoCRlS`JsoHvEYKkj$BD>{rb!KVtzjVc@hf`-`*D$cA<5rYDs;=b`j}s29^`fJ%03c z`g=i0K&w4s5YX);&yVEQ z1@%D%u@fk8q=U`kBZst{cv6?=uFqgb9AOL9I4szockwY7E|9^fh@r{QXE?kdUQA4d zbtNKHz$EV6y!rH00^?cwsFm{%JE;aR?A|Zq7g{&&JtI4`(stSHD2`_*PMWC)uDyS^ z!S3v{+OzVfu2)~VeECGvqu`J)P9FC51K_#I%F3dZIROlbOP6l%T?af;<3@)E?2>Hs z$QQ?p)tb{k_+CDj0nU}Cbu4uaF~9IJV4|U|`U&=f$9wwA7A?3 zb^F%s>rkG2%AobdMQOpBxAFX-pUQz$BQMYPJm4i}$r8yAY?z<@&0M4L3r6|><;|a0 zz@usltxAb&F=xt>TzXifTRUBlXP1rS7|Y^2jw95W5h^x{H#7>6I`X%uKuQm+5Uh@Y zCo@i%Zz{1LYDsd(-btqyh*>Tka; zCjPMk(+0h+yvL8}EMWiF$8KM{YT+)V6-A))y=&3+e;;k2cV6E(-s`l%`{&mzs|*{DNple8t^| z*H(5d@?Tr(v6V@2t(8dUTN6@Be|o;Lw||tS;v^=2LXQGVFJ%OF?BiV3WIZ{6i{3xl zxL})P%nBA9O=(0@5Ye;%1zV-1&vB@N0fDL*v_H8t>C5k9RAdM2HqWZqXgMY)4-_CW zBk2x4(4~9BEhD_&vND>*+5IOtCI=z;c^@@7Ma8^oqkZcd=5)&3;IlzyCbcevY_Kn^)jE(O_`M$DJt*XTzQpjB&r1LLFeN{b<@_GZohNY_D3W56Q|;yzf2LW#zd zbygk}FR%q5ZlQ>-Wyr6Uug%thvI+vr6);7Y*6x8gLHO3gT3T9C?UQJe$A{6ZX9M_E z_MhKCze%Kh7Hp-w_J|1Mmo-j_0`EmwfurzL9RWjyG3V(*9$wu~)?mD&ou7zkID9>V z$PNn;^am(WET{neXV=GB~wbN$PO1D z34^3t&rd#=`7G&9`3z6R0zr?KQ_Uxc@?H(fl*MMu{iP$P=T=Jhf|T0n5ju57WkF#? zC=rLlPIfPR^I&q%RyUaJb|}=W*0~}lC&%)9nr4FjulLR`c32cIfY#v|YJSH|$)Jpx zd*F(K4i4TO2G~W)fVfFjffR)DU2F{vuWY@wXkeOQz%(zW@6;s0R=}7;zXHpX*!?t& z_*6JuXl(LxPrX$+MD^sP=fgR?(%9RIAkNnI+hX|^M{sEoHsNB^ZJQ4g6zr9MSg#gd#A7IY&$6VikC@NQF32ZG*2w!HtiP55KyvT)sSc z&TT#}C~&qfX%|p%J*5;688=w9*%L(0QF8L?AGsh3=I2j9w^n`sp**U9fS}mFz;KG- za_pWR1_tl&G^Qah@v(n=y04;lY%U71(O7wkkn()>ok9`u zr{9wcre7%M`gIZ#rqFRfLEtg8YRWt`T6~#;4C>@gT$aVaLIGZ}ra|_H26A8|&roNHiw=)JF4JkXw@q)RDZk?N3LNkgd z?D9+{U3XJd{sy6xkVPnp-7-kc_e!k}4hNiocn1rb%#hH5EHlbXkt-EZ-st=}$?)i% zV26SvvPUT?2W&y8+`X)+0VFhF-^u^pb>LGRy<;BgVVkzntFHvWykZqW+XRJB;o7CE ztLr9(ObR-$BIu*3HkuWayofl!_MtJLB9pA@h5|5HX!qz7BX|{UXxpk zhCWN_(bLSO@DBi+^1ZUpI`EcuY0wu0u>{yel}XM5dxGo9S7Fz>Ng?V-q%i>qV)6Y; zEvpl{(H(^azXu%`!?VwZu+8DJN6>yQ*Sp$UMsi~9J{@|CJ|8{gYm;UcC7dNccp36`&izGEmy8V%M~Du zHLF*<{)t7dhZP-tv%yZv?JR%fQQ$E6*gpFOMdnm!l}ztj{9}RDgQZsN03=Xi0d`nw z2|Tk$TSw;rMynGdfTV@1!b)g+1=QLULLpAlt;Qt%6f~$1%n1vtv%?=h`{bw;&wBP2 z5>NO(-8-n40cS(KRyLM4lYSHNIkWr$&>A}Yx89QB4aXkwr-C62^JAE{_&BWX0@m0nqu0(e|ijx1PWS1R$E8UP;@bQE9mb@Gc8a9~}W8{mLkd??k!4&}8nK-6 zJFDpr(fNb5Le1DeJI>Z^9;xzEOsMpT-e22NX{t+h^8x*%NRLT1!p&abfu#K7sdM|UKif#SRs*m=UQ*_7&ekct1$WGJ{f2=+`)!aW$wE6(1 z17)57AYcaK@{s%UwX(U&{JYG|TJa+l6xWFiEPAf9n)_8sg1di1HSgD*IQ#G2Eu181 z{jaZ3ysGg5S$Jz(+jKW|CQp6^Y<|h@+g4pKF9Y0)Lnjl2Rnc%!pRuDt%im4zu@m;}@Mj=WH2&gjf)t)U zR$0c+YV-wx_MeWZ~yWqASj5;Yh$dg_lG!>bfOwvqw}3Y$1LkEW5xbFh{YWC z6h~G&scaeR`wX*5)ZdGc^h#IZ&)<)bUZOSVQDP)d1JQt}dqN_D7AUqNzqpKgzx<|66I0WwgFD%S#%EW=QAigS zv_#9?A>_*@rTB;t0;%hM{Nza2#Yw4qHjZdh~fNJ1#>eM*A zi994LfBkX~EEBvK{5?lpRMZ-gCAvV;n~rCsrxVRxMBZSgD*uxD^3v*2KtR9>``m*l zN1?qAcHCt~yi^~E!(35_!fm6l?OW9x;dThhmn!1o$I$Evcowq2=s~`mpP?FEWrchj z3qSQB6B-j$i%`cx!{{J1|Ey#Y0xmoj`$d&mf|-wlgM)`h5d|24@;edAY}l~pX*4B( zfhf|6g*-%0>Q9b6^{ z#MLBjY$g)UkVS{5H3KF9!Cq*5ZscY`jpaM-qXsq8e$}{M)`SlV>r=O7at#w z9182=MPxOrkPZH`0>SbjdZ)24ejs3Az^JPdU(JYt5iyKpN%z291jEh~DPE}X0j*fc zrOMnt{}n8Ba#xjLsfjXxLFy%t1m>3CTLffBVZXmG`R6ATjYR`9aCox|nDBfr0EIHK z@Nc67rHAWpiw7mi;%^%T<^S;?V(Y=Pz$z_$*E=Q~`>J;g`9NgFs+j8J46&=`P5l!+ zA(PvS61ls|M?#0cMC$DU!Y+*(VraRBmU2y6gI#L1e=*}Ai^g5%_iQ|2bFCYU&gef| zclmtCy|gsM$@N`yJGZ1c3^Vn*jTLis-;0~EvYEd1sXXuA;CJtfM#kbM-Udcoawufv z=U)Q=oQL+P{FObSj;{rS&RR}I{d2p5uOOxeyDPj7)j?9nyPovBiP|5^ylim&J6)Za zwdD$XpshYPBjCvGOSO+(n!G~g@b}coqrd*FD8@-EEWA#>fRyR~uU}AJj$mZTZgeDG z+@dUEuzK_ zVsa7Tcs=C5t6a_Aavh9SXLMDc5eihCYe#x&3eq5)*CY<@(%s(PQ%iR#UjR!LnCveu zhY*umg-PE5-ERX87P@=?BsOgPc=*6`iM6@9qI&@TVIf-Rh)ta8I|}FteS_XhukZxv zbBzkf{?pkNRKf$!9f~rD;Iy#uu#jV_riOlx$#Qlm7EW&VePen-cyn)7!*4_^Y?lG8B(6<%c^;kNS%Q)HoEXe-IbyL+|Aq-`yg27MCtRp zhdO>JOT|<#a2{y$otc7DlI5BH&H41HbRhfZfN4#7>W$gmb%rjXI|XAQuU|Lax9`ZN zI6$q>K1Jo?xEAzzRPEXaz%TMt!PZO zZpQ|UUPe!mmP4R)=(=7vq9h!Ob0M9%kj+5QUL@~u+{T7Xd`6l|Yk|fL4@z2JJjxiL zg4{p57*$}x=*QoSiio)6>_qqs2r~clx6Vjv#QF1{7z>k8GVS?7;}7R)Zn;^y96;(1 zi)0x!TNpw&QYTZU^y3G)mM-^SRPr-nEaPLhYD3?orA)pKg>v)rZAr?+o57!CoXDYv zqtx^rETEveNdh^9NnGQnY;!eZ(Ty>5)CD{ z4`!yNH6tJ*WliwR5oC5%$Djr@0}c3nX$@ur>Y0t;y^f%?vH0{_#-}KKK=nHL-8+Ml z_7X_61NB!D7uN}6TcAlV>n?=&{w#|*BTtafK&|b|Z7HtBI_NRgI>VuRgU~XdwP2s) zg|ZwqRg<2e1w;3^@Qc69oK0S$Sr18sf&GFRf_ z3Xs(x*IPmkJg$U3*N)pMs*E2rU|OpO46^`J2nvPzm%)jNjn&p7f}e;J*baCqCtw%6 zvd&s9DhhY-kcovhq7!fA3ZY1V|K zl^v_+fDX|XVXk|Zc61>ML8yJe!~}bN6DraJPY{ueg1-}DgE=9H(qdY&+6Srl8G;R3 z=Y7bXzQCt`{c7$cv?8<|dgIf$NIdUXuU-M|#n&Oy|N7Osq`l^(DKMLg`|L&X2;eZ| zVFr)GCvah<+($mU**kHv@&pZ1YjM(#_179?ZVZHGL&)vOw^AOlaX7+pb?+4s$v80x$ zoyq(>8nbei3xVMhyb5WCse2I}U=dGQJ(i%}j*0~{1a;o032f}|Ky z0JuhBG)uq5JUGJP!UFfK-SOFCuE^MSNI{=Ck*;y$>c(SNOeF{HsR4pSX&rI+>YJ$L zA=R`&hT$Lj82cP`bE4>8erSJ*k2eAHR45fL3mVTd*p z+UMCN`c z$irjDP*a=3VXx8m2hoH)y%BIVP_fn1g8%I~sG+aU4l=V&-0Q7cV7qh&A8p`!5h-A? zcdwQf5)Upt%ZGTGr7O53F*Rtvs~=8B|C44(Me*+xTX+NT#EtG7*S>!*s!b!kOfXOd z$v<7CCEF}!$i5WhazsE<(o&i!uGhf60dV>KQ~{EJ49wl&AAbuoXJWEL3-ZSPRT7df zxKSao>sa<1d8Gda_ls37fSME9uVS)Y&Z3=Cp&B=G!QJ$AYQx*5+SQ9Cbi+KT{^|&X zC^Kle`xcljVA)UbGQqW0QL|UTO^2JW+>_P-hwtxt4ZMbHh>fpKd_pzOKUD>=OIzzx zB^p2`%Q89o)9tE93>^CN`bx#;Fc1c%pCCi zvG+&X4}e8Ik~mXX*OyK*dK@!QDqZ1vF@xbG20tjp+pC2J-B|SRP8>=g1G zm6{mx#J-g`SF1_pBUMRh0&^95fA>S#>Vc>p!hVC)KKl)UW$ag<-#{!?R1_Z~!5P|W zzeYIE)Mu#5-VxkOxgVA={wlAId)@$mLMmni0KJL46GGySl-|G_i+TD0hTK#qs503U z1oL8`4-}G4x5bDR3~QOS6sYfN?KL+3FnRf0tG%1$xvm5RB6@Y&HrXF(%o1K4dPtX{ zA-?QVJ>zjPh)!NXUX&kmly)$xF|;lWiWpaU6_{?=0g9tg#kZg@`nIUFSM?xtg0e` z;*lbwv<6n)-4tp7%PEw&PJ-PHs2_)s6wA&5i3N*|qZS2WOrBYhdweqrNu?K6$cUY= zFp-;hVKA<)IZddFyt3ZFfiVMURuYDg5TnG)JqHdn!-97eeDCdD;JkIT2_BG;Zs9LV zHELBP7St!htxT`vON#mLmKaLN0?;taxDVty9&~Ye+-h%udLS-AF+zOZI;K~gwOKtq zJ*D-_ad%MP=A`@d`9zETPxv$1qd9zQdbi#>2{8w)`nPY{6)q2Iu?GRv80&sMf!)7L zc}PoBa{&h!ux>DSF=OLE1z=N_UeLI~sH;IEtu|X25ahLbpfl%{=@;MmaUnJq&7a$~ zzykw04WVIC-fw(H-rd2G3n zUha1I6V1(GTh?T!=7fz0DBZmCc;Cg{+fJlw-?F}@zjND--7*p3yRTW^-F@ykv-u8} zlU&RF1s}L@IaaAQbJegsdvK{kvYP&vkNNs;#TvyK*RNr(BD)p49o5y<&$6B>n7V}~ z5*X$6L06%ijy$yM)a4yuQb`1B2x$`r8K1nHn3$LXCTKWYbYoAVer*Dr712`=J4^&x zQ!1Mcm;hoBBXIaOZ1v7%yIvH^rfTx7h^b2Ul*V~B|lmoHak z3NZ@7_CsR-nFZAK%=(0DTUrVcpAeb;>00Y7kga+l$u?}B4o-pDBdbM6H#}=K4!p1K z&Uq|qBmAXuh+nEjEW8&6cVIS0KwuzhOa;ETFoOe9_1Hi_QySmBa{`YTpWxcFbmhuI zRD^#=K06`D`x*=bG!r>UbK_E>)y031>(}sB#$%>$kH82D-y5lFa|sBpn7xZmeuq8L4( zZ)SVSt2KCd@e_d{^1M7R8l`OB|I`*6r4?_P{SYF5%!eCuQPh)-dyVWA&SE$r2{2ph z@7BltlIez7ip#sOsTRE(_9w zDimubMZr4;={ehWRu-1NLnDlo{)hB5HHQ|%zA8)VT?ky!)IW}9NqCY)LJ6MV*LL#{ zGjzzk7wp)7UmcK(BfE6j>S&Rwvtusz(C<&BS}@8$HwHn)*deo0wK85h#0ERppE?>|^U}9R zFU7>5}XHevqk>=SvL111w31d1lw(IPo? z^z<*v%Wbnwgn}^O=u|%$u-VCaEUW1aAQikP)T)4y8>ZBaIkrym{v$iua}e_rZM|IX z?m<+{r*!r8SInHoW7vJGwhvV^)V<@|Fn0O)X(WxEXovC!y;8hYQGt0w7~wUOwJ>2S_YP6(WX*>O^lKyBa+S26eX z-BLP-R!*FOGo8kiuP71i)V-j1PmwWTO|PQ?2_O7@E-F#ZvZ1(9Ai1^I=UMOBWIy!FI65L>S!ruPWPnRjm-&c+(HvS2e zO;RdIi)R-bSZFSu?755n{sVu1|8mDNLw$VW#TQjjxqYgoU_BKSKD5@2Eto$j zY$0J`d&QP%gn(3C-`H5-nt``<=Z>h57E*CFHNXFQDrEHD@ek5M&q*T%re^=#dAqT9 zSG>~dAn>Mv5~OyZ^$W31&yD4fw z$f~7iXxT=cxKOyt03a3UnG&2jHF~>^jDDiUGXt}q7&%a4AFh@Xzx*;G{$`2r99B&6 z)`b7X=&7Y1YwncSv9H{nd*$V9|z}DPm;bE$g`J$4PUx68h$Hv?>!92MY2vH1Uym6I7!8` zbF$2o(XiRRjlvIkUJZ6*pko)bTcp$-nXQIxl9THhn*ec42(o735fQA6jE=9)Vd(S^ zpbwjkRuum;&z;iq3@!&4jIvp|TE*H~B{cLO&+ll8sm4E+f)ex3E2otHGnD@S=bv@( zkTIV4crrim%df+c5`1Z5}`c!R6~dOltodQ!$+X2-NnD8tS9)-h&DTuLE*D4MvpEznPG)A7#K!=}^vU zDg@f5Xm&m%gv`l=eq-l{*VWaizGB^JWF{8auT2e?`ew2tkPXzPV0M&3aj03?*nYaq z7Mwb0$Vc5qunA04I~s&|-|?)(vF-UH+6I7jM6`>Gi&5aiG*(Rpv;bLHU|8qoenIVb zpm>on>u9SM(gK=?Nk^Da3Q*)Uo|n|xb z07)4AMT!yj?TLqgTEh9Uk>)+qi7ehmDEQ&kGFrNr? zBheeaqld#xb`JW~q%4YCzC9qXV15OOGooEppLa0?iPf8=%Ks(w6A;GIxy0>aSdS9A17~D2Go^I$%nCAWf?06;c9?k(~U9Ez+ zXlCO~my~Z42myb-nt5SNGl6B0Um-@vU6xrgGBWn0`_4uV{Nz-;K@k~VOoK7oq<@H| z3r`gxXN!oY%5REnPYv?19;w8s?u)Jm32NFEwTKiW|%D+Sdia$J&ppG@5+;2#BM3`aAj-Ha{jG&5gj8Qp#hOt)!rkivh$XGgE^AZdDG1Wo9}+ zjyy8529jYXHZ>!rk%vpRs*D1tHN;i&s~kQepL(h3_!TOlh+>bJjiRJ@dbEe*Q%K9h z<2UXb1>xSqth{pDeQxdap?UpK^YGzYg$oV15Hq6v(An7;l|tbl&>|!NhFR0#xJ9|y z%W|`*42P4;Wucojgz$xU7i*U>32C8S2z$e9mlXt&zYGpa1>H?gN0TsL2I#?PXT;Rm z0hZ*tZwX=a4m}ey~l^ zq+wuW)HvoxkUtgA$Lu##Q@^2ml<(1PGL{aION3j)`}ZJtDLu(iS+Ja+zYWs)fj2aX z9M_U1OM=*eSD>cT136m2@<6RKN{DyzqX{OqGQ}_rG%m~z770QH0__hIWo$kVkgy^c z;thX+b(t-kst7|s<&E#Z4-A3gDobqAuoYq)!O z9I>)OuLq+LDstdZ4#Oo@9svar_g@H(J(#{|P|28XM&e27*+yQnDeiN)f;xQ?CJLOx z8zS0(x#3K)^w<;t8-m`1iKN=m5qN^22tCm$D=Pz*2D)OzVSTi3<;-<1yV(33A2$aL z6j@=j{ELbTGC~;%3w_{0P?DWGF^C#TMi4uaN^s^-%W?np;~;DeCI)^s7U`}aS7Z~p z<|<|U!+8e^Wr4o7mipe(ebdv^z=;IVKZR!rQruw%^l2ij!f;w-;io%o;5|_cfp$Y) zAdvxCDRt8*~&`vXrTHf$JKG55axpM`1$c)mw`hSsn(LB{BxMB}WA8LMBL zsI~!^rfA|2@Yrw%L|gpd9+!Mpj$Ljb!4#QWn41p_4hjeePywE0OrqNaWm?1sl_O_@ zgR3$>y6(PLX88-THTsKYR+PXD6c(EDZ-9{k=P<27b%2ZJt;Ht4iOwH3>h4 zhJGV;*(ti`*s-+C%*+&V+P7)ALmRU0_G&^f89ggl_TvDFNwYmP2;?ULR6}?dOLF4w z-g_0iOG`@+W}BdsJ(#_%tu0=)a1qYZGV=?)2Y~|(4;q6W37|GXk^vl(^?=w%UD>4-8`WESg5}_s>5?qiQp)sCfbm37xKrgo1(s!CH1hFD*Xa z3|jz7i}8U~c-_TQD6QcxfJ1`D1?u%`vcVBMCS*X&)15o+^v^=j*g#x;nHU%lfO5U%TXaxxn6cX5%A zkMyewM~hjl4T}HLvAVBczn;7AeQtLvn$5&{6BM%{+HqS f?5F+DgZp9XXg4MoFs#MxgZ#NgPb)*iGT{FJNjC@- literal 0 HcmV?d00001 diff --git a/product/zh/docs-mogdb-stack/v2.0/architecture/high-availability.md b/product/zh/docs-mogdb-stack/v2.0/architecture/high-availability.md new file mode 100644 index 00000000..e940089d --- /dev/null +++ b/product/zh/docs-mogdb-stack/v2.0/architecture/high-availability.md @@ -0,0 +1,156 @@ +--- +title: 高可用 +summary: 高可用 +author: Ji Yabin, hhhhhzhen +date: 2022-12-30 +--- + +# 高可用 + +## 概述 + +> 注意:不同于 1.0 版本中的 sidecar 方式,自 2.0 版本开始,HA 以哨兵模式运行。 +> +> +> +> 我们为什么这样做: +> +> 1.为跨机房场景做准备; +> +> 2.以 sidecar 方式运行时,在数据库故障的某些场景下需要对数据库进行重启,导致 MogDB 进程变为 HA 进程的子进程; + +高可用是 MogDB Stack 体系中的一个功能组件,以哨兵模式运行,并实时监测 MogDB 集群的运行状态,当监测到集群出现故障时,触发修复逻辑。 + +发生切换的场景包括: + +- 机架掉电 +- 主库网络不可达 +- 数据库发生故障宕机 +- 数据库磁盘故障或者某些硬件故障 + +![ha](assets/ha.png) + +
+ +## 开启高可用组件 + +> HA 自身使用 dcs 保证高可用,当前仅支持 etcd,因此在启动组件时,需要准备一个高可用 etcd 集群,并将连接信息配置到 HA 中。 + +### 1.前置条件 + +- 已安装 kustomize v3+; +- 已安装 MogDB Operator; +- 若您需要正式开始高可用组件,而非进行高可用体验,请准备高可用 etcd 集群; + +
+ +### 2.获取安装包 + +```shell +wget https://cdn-mogdb.enmotech.com/mogdb-stack/v2.0.0/mogdb-operator-examples.tar +``` + +
+ +### 3.部署高可用组件 + +HA 组件安装目录位于安装包中的 `kustomize/install/ha` 目录下。 + +```shell +tar xf mogdb-operator-examples.tar && cd mogdb-operator-examples/kustomize/install/ha +``` + + + +**特别注意:默认情况下我们使用简易安装模式,即将 `etcd` 与 `ha` 部署在同一 pod 中,以供体验组件服务。若要正式使用该组件,请注意跟随 `kustomization.yaml` 文件中的指示注释掉 `patches/deployment-container-etcd.yaml` 一行,并修改 `patches/deployment-container-mogha.yaml` 文件,以传递您准备好的高可用 `etcd` 集群连接信息,该文件还允许您传递其它参数,具体参数列表请参考[参数列表](#参数列表)**。 + + + +确保您编辑好高可用组件参数后,以下命令将部署高可用组件: + +```shell +kustomize build ./kustomize/install/ha | kubectl apply -f - +``` + +预期输出: + +```shell +namespace/mogha created +serviceaccount/mogdb-ha created +clusterrole.rbac.authorization.k8s.io/mogdb-ha-role created +clusterrolebinding.rbac.authorization.k8s.io/mogdb-ha-rolebinding created +service/mogdb-ha created +deployment.apps/mogdb-ha created +``` + +
+ +### 4.检查安装 + +ha 组件默认安装在 `mogha` 命名空间中: + +```shell +kubectl get pods,svc -n mogha +``` + +预期输出: + +```shell +NAME READY STATUS RESTARTS AGE +pod/mogdb-ha-55cdbc7855-xfb8g 2/2 Running 0 44s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/mogdb-ha ClusterIP 10.107.90.105 6544/TCP 44s +``` + +
+ +### 5.注册高可用组件 + +在高可用组件部署成功后,需要将其注册至 MogDB Operator 中,以便正常使用高可用组件的功能。 + +在[4.检查安装](#4检查安装)中,我们得到 mogdb-ha 服务的 endpoints,现在将其注册到 MogDB Operator 中,MogDB Operator 默认安装在 `mogdb-operator-system` 命名空间中: + +```shell +kubectl edit configmap global-config -n mogdb-operator-system +``` + +之后修改 `.data.config.json` 中的 `haServices` 部分,将 endpoints 填入其中,并保存退出。 + +> tips: +> +> 在 kubernetes 中,我们一般不推荐使用 cluster-ip:port 的方式,因为 cluster-ip 并不是一个定值,我们推荐使用 kubernetes 的域名解析,其中 service 的 endpoints 遵循结构 `http://namespace.service-name.kubernetes-domain-name`。 +> +> 在本例中,namespace 为 mogha,service-name 为 mogdb-ha,kubernetes-domain-name 为 svc.cluster.local,因此 endpoints 为 `http://mogha.mogdb-ha.svc.cluster.local:6544`。 + +
+ +### 6.使用高可用组件 + +如果之后创建的 MogDB 集群要使用高可用组件,则需要您在 MogDB manifest 中将 .spec.enableHa 配置为 true。 + +```yaml +... +sepc: + enableHa: true +... +``` + +
+ +## 参数列表 + +| 参数 | 含义 | 类型 | 默认值 | +| -------------------------- | --------------------------------------- | ------ | --------------------- | +| debug | 是否开启 debug 模式 | 布尔值 | true | +| etcd-key | 存储相关信息时使用的 base path | 字符串 | "mogha" | +| etcd-username | 连接 etcd 集群的用户 | 字符串 | "" | +| etcd-password | 连接 etcd 集群的密码 | 字符串 | "" | +| etcd-endpoints | 连接 etcd 集群的地址 | 字符串 | "127.0.0.1:2379" | +| etcd-dial-timeout | 连接 etcd 集群的超时时间 | 整型 | 5 | +| observe-period | 探测 mogdb 集群的间隔时间 | 整型 | 60 | +| db-probe-period | 探测单个 mogdb 节点是否健康的间隔时间 | 整型 | 5 | +| db-probe-failure-threshold | 判断单个 mogdb 节点异常的探测次数阈值 | 整型 | 3 | +| mogdb-username | 连接 mogdb 集群的用户,一般情况不用指定 | 字符串 | operator 内置管理用户 | +| mogdb-password | 连接 mogdb 集群的密码,一般情况不用指定 | 字符串 | operator 内置管理用户 | + diff --git a/product/zh/docs-mogdb-stack/v2.0/tutorial/getting-started.md b/product/zh/docs-mogdb-stack/v2.0/tutorial/getting-started.md index c169ee4e..bcf25be3 100644 --- a/product/zh/docs-mogdb-stack/v2.0/tutorial/getting-started.md +++ b/product/zh/docs-mogdb-stack/v2.0/tutorial/getting-started.md @@ -7,198 +7,13 @@ date: 2022-12-30 # 开始 -如果您尚未安装 MogDB-Stack,请参考[软件安装](../installation/helm.md)部分,根据需要选择一种方式安装 MogDB-Stack。 +如果您尚未安装 MogDB-Operator 和 mgo 客户端,请参考[软件安装](../installation/helm.md)部分。 -## 前置条件 - -- 已安装 kustomize v3+; -- 已安装可用 kubernetes 集群; -- 已获取 kubernetes 管理员权限; -- 已安装 kubectl 且具有访问 kubernetes 集群的正确配置; - -
- -## 安装 MogDB Operator - -首先下载 MogDB Operator 安装包: - -```shell -wget https://cdn-mogdb.enmotech.com/mogdb-stack/v2.0.0/mogdb-operator.tar -``` +同样的,如果您尚未开启高可用组件,并且需要开启高可用组件,请参考[开启高可用组件](../architecture/high-availability.md#开启高可用组件)部分。
-### 1.安装 ha 组件 - -以下命令将使用 kustomize 生成 ha manifest,随后使用 kubectl 将其部署在 kubernetes 集群中: - -注:如果您需要对 manifest 进行自定义,请按需修改 `./kustomize/install/ha/kustomization.yaml` 中的内容。 - -```shell -kustomize build ./kustomize/install/ha | kubectl apply -f - -``` - -预期输出: - -```shell -namespace/mogha created -serviceaccount/mogdb-ha created -clusterrole.rbac.authorization.k8s.io/mogdb-ha-role created -clusterrolebinding.rbac.authorization.k8s.io/mogdb-ha-rolebinding created -service/mogdb-ha created -deployment.apps/mogdb-ha created -``` - -
- -### 2.安装 MogDB Operator - -以下命令将使用 kustomize 生成 operator manifest,随后使用 kubectl 将其部署在 kubernetes 集群中: - -注: - -- 如果您需要对 manifest 进行自定义,请按需修改 `./kustomize/install/default/kustomization.yaml` 中的内容。 -- 如果您自定义了 ha 组件导致 ha service endpoint 变化,请修改 `./kustomize/install/manager/configmap.yaml` 中 `haServices` 部分。 - -```shell -kustomize build ./kustomize/install/default | kubectl apply -f - -``` - -期望输出: - -```text -namespace/mogdb-operator-system created -customresourcedefinition.apiextensions.k8s.io/mogdbbackups.mogdb.enmotech.io created -customresourcedefinition.apiextensions.k8s.io/mogdbclusters.mogdb.enmotech.io created -customresourcedefinition.apiextensions.k8s.io/mogdbrecoveries.mogdb.enmotech.io created -serviceaccount/mogdb-apiserver created -serviceaccount/mogdb-operator-controller-manager created -role.rbac.authorization.k8s.io/mogdb-operator-leader-election-role created -clusterrole.rbac.authorization.k8s.io/mgo-cluster-role created -clusterrole.rbac.authorization.k8s.io/mogdb-operator-manager-role created -rolebinding.rbac.authorization.k8s.io/mogdb-operator-leader-election-rolebinding created -clusterrolebinding.rbac.authorization.k8s.io/mgo-cluster-role created -clusterrolebinding.rbac.authorization.k8s.io/mogdb-operator-manager-rolebinding created -configmap/mogdb-operator-global-config created -configmap/mogdb-operator-manager-config created -secret/mgorole-admin created -secret/mgouser-admin created -secret/mogdb-operator-huawei-registry created -service/mogdb-apiserver created -deployment.apps/mogdb-apiserver created -deployment.apps/mogdb-operator-controller-manager created -``` - -
- -### 3.检查安装 - -ha 组件默认安装在 `mogha` 命名空间中: - -```shell -kubectl get pods,svc -n mogha -``` - -预期输出: - -```shell -NAME READY STATUS RESTARTS AGE -pod/mogdb-ha-55cdbc7855-xfb8g 2/2 Running 0 44s - -NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE -service/mogdb-ha ClusterIP 10.107.90.105 6544/TCP 44s -``` - -operator 组件默认安装在 `mogdb-operator-system` 命名空间中: - -```shell -kubectl get pods,svc -n mogdb-operator-system -``` - -预期输出: - -```shell -NAME READY STATUS RESTARTS AGE -pod/mogdb-apiserver-f69bb9b9-4z9mp 1/1 Running 0 35s -pod/mogdb-operator-controller-manager-5b9f7dcc87-cf8fx 1/1 Running 0 35s - -NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE -service/mogdb-apiserver NodePort 10.99.235.65 8444:32444/TCP 35s -``` - -
- -## 安装 mgo client - -> 请注意,mgo 客户端的版本**必须**与 MogDB Operator 的版本匹配。 - -### 1.准备安装脚本 - -```shell -wget https://cdn-mogdb.enmotech.com/mogdb-stack/v2.0.0/client-setup.sh -chmod +x client-setup.sh -``` - -
- -### 2.安装 mgo client - -该脚本将下载 mgo 客户端并且提示您添加一些环境变量以供您在会话中设置: - -```shell -./client-setup.sh -``` - -预期输出: - -```shell -mgo Client Binary detected at: ~/.mgo -Updating Binary... -Downloading mgo_linux_x86_64 version: v2.0.0... - % Total % Received % Xferd Average Speed Time Time Time Current - Dload Upload Total Spent Left Speed -100 13.6M 100 13.6M 0 0 3482k 0 0:00:04 0:00:04 --:--:-- 3483k -mgo client files have been generated, please add the following to your bashrc -export PATH=${HOME?}/.mgo:$PATH -export MGOUSER=${HOME?}/.mgo/mgouser -export MGO_CA_CERT=${HOME?}/.mgo/client.crt -export MGO_CLIENT_CERT=${HOME?}/.mgo/client.crt -export MGO_CLIENT_KEY=${HOME?}/.mgo/client.key -``` - -您可通过以下命令添加环境变量,并根据需要选择是否将这些变量永久添加到您的环境中: - -注:变量 `MGO_APISERVER_URL` 需要指向 operator 所在命名空间中的 `service/mogdb-apiserver`。 - -```shell -export PATH="${HOME?}/.mgo:$PATH" -export MGOUSER="${HOME?}/.mgo/mgouser" -export MGO_CA_CERT="${HOME?}/.mgo/client.crt" -export MGO_CLIENT_CERT="${HOME?}/.mgo/client.crt" -export MGO_CLIENT_KEY="${HOME?}/.mgo/client.key" -export MGO_APISERVER_URL='https://127.0.0.1:32444' -``` - -
- -### 3.检查安装 - -[mgo version](../references/client/mgo-version.md) 命令是检查 MogDB Operator 连接性的好方法,因为它是一个非常简单、安全的操作。试试看: - -```shell -mgo version -``` - -如果它正常工作,您应该会看到类似于以下内容的结果: - -```shell -mgo client version v2.0.0 -mgo-apiserver version v2.0.0 -``` - -
- -### 4.[可选]设置mgo客户端 +## [可选]设置mgo默认命名空间 许多 mgo 命令要求传递命名空间标志 (-n) 。您可以使用 `MGO_NAMESPACE` 环境变量来设置 mgo 命令的默认命名空间: @@ -219,3 +34,4 @@ mgo show cluster -n mogdb-operator-system --all ``` (注:**-n**优先于**MGO_NAMESPACE**。) + -- Gitee From 909e13e0e22c547b65e8b05248eed532872bae35 Mon Sep 17 00:00:00 2001 From: hhhhhzhen Date: Tue, 20 Dec 2022 11:54:29 +0800 Subject: [PATCH 6/6] update(stack): fix enable ha --- .../docs-mogdb-stack/v2.0/architecture/high-availability.md | 2 +- .../v2.0/tutorial/create-a-mogdb-cluster.md | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/product/zh/docs-mogdb-stack/v2.0/architecture/high-availability.md b/product/zh/docs-mogdb-stack/v2.0/architecture/high-availability.md index e940089d..019d396e 100644 --- a/product/zh/docs-mogdb-stack/v2.0/architecture/high-availability.md +++ b/product/zh/docs-mogdb-stack/v2.0/architecture/high-availability.md @@ -112,7 +112,7 @@ service/mogdb-ha ClusterIP 10.107.90.105 6544/TCP 44s 在[4.检查安装](#4检查安装)中,我们得到 mogdb-ha 服务的 endpoints,现在将其注册到 MogDB Operator 中,MogDB Operator 默认安装在 `mogdb-operator-system` 命名空间中: ```shell -kubectl edit configmap global-config -n mogdb-operator-system +kubectl edit configmap mogdb-operator-global-config -n mogdb-operator-system ``` 之后修改 `.data.config.json` 中的 `haServices` 部分,将 endpoints 填入其中,并保存退出。 diff --git a/product/zh/docs-mogdb-stack/v2.0/tutorial/create-a-mogdb-cluster.md b/product/zh/docs-mogdb-stack/v2.0/tutorial/create-a-mogdb-cluster.md index 91730fbc..5630be72 100644 --- a/product/zh/docs-mogdb-stack/v2.0/tutorial/create-a-mogdb-cluster.md +++ b/product/zh/docs-mogdb-stack/v2.0/tutorial/create-a-mogdb-cluster.md @@ -76,7 +76,11 @@ cluster : cluster1 wget https://cdn-mogdb.enmotech.com/mogdb-stack/v2.0.0/mogdb-cluster.yaml ``` -注意:该 manifest 默认使用您 kubernetes 集群中的 `local-path `存储类,以及 `30012` 和 `30013` 端口用于读写。如果您需要对其中的属性进行修改,请参考[CRD 参考](../references/server/crd-references.md)。 +注意: + +- 关于 manifest 中详细的属性定义,请参考[CRD 参考](../references/server/crd-references.md); +- 默认情况下使用您 kubernetes 集群中的 `local-path `存储类,以及 `30012` 和 `30013` 端口用于读写; +- 默认情况下不开启高可用,若要开启高可用,请确保您已经注册高可用组件,并设置 `.spec.enableHa` 为 `true`;
-- Gitee