Docs 菜单
Docs 主页
/
MongoDB Enterprise Kubernetes Operator
/ /

使用 ConfigMap 为每个MongoDB部署创建一个项目

在此页面上

  • Considerations
  • 先决条件
  • 使用 ConfigMap 创建一个项目
  • 使用自定义 CA 连接到启用 HTTPS 的 Ops Manager
  • 后续步骤

MongoDB Enterprise Kubernetes OperatorMongoDBEnterprise Kubernetes Operator 使用KubernetesKubernetes ConfigMap 链接到单个唯一的MongoDB OpsMongoDB Ops Manager Manager项目。如果引用的项目不存在, Kubernetes Operator 会根据您在 ConfigMap 中提供的 projectName 创建该项目。

要创建 Kubernetes Operator ConfigMap,您可以编辑示例 ConfigMap YAML文件的几行并应用 ConfigMap。 要查看完整示例,请参阅 project.yaml 文件。

或者,您可以使用MongoDB Cloud Manager用户界面或MongoDB Ops Manager用户界面创建或选择项目,并自动生成 ConfigMap YAML文件,然后将其应用到Kubernetes环境。

  1. 每个项目只能部署一个MongoDB资源。 应用此限制是因为MongoDB Ops Manager仅支持每个项目的数据库用户访问权限的一种身份验证方法。 要学习;了解详情,请参阅部署MongoDB数据库资源。

  2. 您必须将MongoDB Enterprise Kubernetes Operator部署与唯一的MongoDB Ops Manager项目配对。 您可以为部署的每个 MongoDB Enterprise Kubernetes Operator 实例创建一个不同的 ConfigMap,也可以通过省略 ConfigMap 中的data.projectName为任意数量的部署重复使用同一 ConfigMap,以便项目名称与部署的资源名称保持一致。 在配置映射中提供项目名称的情况下,如果该项目尚不存在,则会创建该项目。

重要

  • 您可以使用 Kubernetes Operator 通过 Cloud Manager 和 Ops Manager 6.0.x 版或更高版本来部署 MongoDB 资源。

  • 可以使用 Atlas Operator 将 MongoDB 资源部署到 Atlas。

1

如果您尚未执行,请运行以下命令,执行所创建命名空间的所有 kubectl 命令。

注意

MongoDB Ops Manager如果要在多 Kubernetes 集群 部署中部署MongoDB 资源:

  • context 设置为中心集群的名称,例如:kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME"

  • --namespace设置为您用于多 Kubernetes 集群 MongoDB 部署的相同范围,例如: kubectl config --namespace "mongodb"

kubectl config set-context $(kubectl config current-context) --namespace=<metadata.namespace>
2
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ConfigMap
metadata:
name: my-project
namespace: mongodb
data:
projectName: myProjectName # this is an optional parameter; when omitted, the Operator creates a project with the resource name
orgId: 5b890e0feacf0b76ff3e7183 # this is a required parameter
baseUrl: https://ops.example.com:8443
EOF
类型
说明
例子
metadata.name
字符串

Kubernetes 对象的名称。

资源名称必须少于或等于 44 个字符。

此名称必须遵循 RFC1123 命名规范,仅包含小写字母数字字符或- ,并以字母数字字符开头和结尾。

要学习;了解更多信息,请参阅有关名称的Kubernetes文档。

my-project
metadata.namespace
字符串
Kubernetes 命名空间 Kubernetes Operator 在其中创建此MongoDB 资源和其他 对象
mongodb
data.projectName
字符串

MongoDB Ops Manager项目的标签。

如果 项目不存在,KubernetesMongoDB Ops Manager Operator 会创建该项目。如果省略projectName ,Kubernetes Operator 将创建一个与 Kubernetes 资源同名的项目。

要使用 Cloud Manager 或 Ops Manager 组织中的现有项目,请找到projectName ,方法是单击 Cloud Manager 或 Ops Manager 页面左上角的 All Clusters链接,然后在Search框,或滚动以在列表中查找名称。 此列表中的每张卡片代表一个 Cloud Manager 或 Ops Manager组织项目的组合。

myProjectName
data.orgId
字符串

必需。 24 字符的十六进制string ,用于唯一标识您的Cloud Manager或MongoDB Ops Manager组织。

您可以使用 Kubernetes Operator 通过 Cloud Manager 和 Ops Manager 6.0.x 版或更高版本来部署 MongoDB 资源。

可以使用 Atlas Operator 将 MongoDB 资源部署到 Atlas。

指定现有组织:

  1. 查找该组织的 ID。

    点击左侧导航栏中的 Settings

  2. 将 orgId 复制并粘贴到 URL 中。

    选择您的组织,在浏览器中查看当前 URL,然后复制 <orgId> 占位符中显示的值,如下所示:

    https://ops.example.com:8443/ v2#/org/<orgId>/projects

必须具备组织项目创建者角色才能在现有 Cloud Manager 或 Ops Manager 组织中创建新项目。

如果您提供空字符串作为 orgId,Kubernetes Operator 会创建一个与您的项目同名的组织。

5b890e0feacf0b76ff3e7183
data.baseUrl
字符串

Ops Manager 应用程序的 URL,包括 FQDN 和端口号。

重要提示: 如果您使用MongoDB Ops Manager KubernetesOperator部署MongoDB Ops Manager MongoDBKubernetes,并且 将管理部署在其所部署到的 集群 外部 的 数据库资源,则必须设立data.baseUrl 设置为与spec.configuration.mms.centralUrl 中的MongoDB Ops Manager 设置相同的值 资源规范。要学习;了解更多信息,请参阅管理外部MongoDB部署。

如果使用 Cloud Manager,请将 data.baseUrl 值设置为 https://cloud.mongodb.com

https://ops.example.com:8443
3
kubectl describe configmaps <configmap-name>

此命令在 shell 中返回 ConfigMap 描述:

Name: <configmap-name>
Namespace: <namespace>
Labels: <none>
Annotations: <none>
Data
====
baseUrl:
----
<myOpsManagerURL>
Events: <none>

您可能已选择使用自己的TLS证书为 Ops Manager 实例启用HTTPS 。 如果您使用自定义证书,则需要将签署该自定义证书的 CA 添加到 Kubernetes Operator。 要添加自定义 CA,请完成以下操作:

1

KubernetesOperator 需要颁发 主机证书的 CA 的根MongoDB Ops Manager CA 证书。运行以下命令以创建 ConfigMap 在数据库 Pod 的同一命名空间中包含根 CA :

kubectl -n <metadata.namespace> create configmap <root-ca-configmap-name> \
--from-file=mms-ca.crt

重要

Kubernetes 操作符要求您在 ConfigMap 中命名 Ops Manager 资源的证书mms-ca.crt

2
1---
2apiVersion: v1
3kind: ConfigMap
4metadata:
5 name: <my-configmap>
6 namespace: <my-namespace>
7data:
8 projectName: <my-ops-manager-project-name> # this is an optional parameter
9 orgId: <org-id> # this is a required parameter
10 baseUrl: https://<my-ops-manager-URL>
11 sslMMSCAConfigMap: <root-ca-configmap-name>
12 sslRequireValidMMSServerCertificates: ‘true’
13...
3
  1. 调用以下命令,在默认配置编辑器中编辑项目的 ConfigMap:

    kubectl edit configmaps <my-configmap> -n <metadata.namespace>
  2. 粘贴示例 ConfigMap 中突出显示的部分 在项目 ConfigMap 结束时。

4

更改以下TLS密钥:

类型
说明
例子
sslMMSCAConfigMap
字符串
ConfigMap 的名称 在第一步中创建的证书,其中包含用于签署 主机证书的根 CA MongoDB Ops Manager证书。这会将 CA 证书挂载到 Kubernetes Operator 和数据库资源。
my-root-ca
sslRequireValidMMSServerCertificates
布尔

强制 Operator 要求 提供有效的 TLS MongoDB Ops Manager证书。

重要提示:该值必须用单引号括起来,否则操作符将引发错误。

'true'
5
6
kubectl describe configmaps <my-configmap> -n <metadata.namespace>

重要

始终包含带有kubectl的命名空间选项。 kubectl 如果不指定-n 选项,则默认为空命名空间,从而导致部署失败。您必须指定<metadata.namespace>字段的值。 Kubernetes Operator, 密钥MongoDB 资源应在同一唯一命名空间中运行。

此命令在 shell 中返回 ConfigMap 描述:

Name: <my-configmap>
Namespace: <namespace>
Labels: <none>
Annotations: <none>
Data
====
sslMMSCAConfigMap:
----
<root-ca-configmap-name>
sslRequireValidMMSServerCertificates:
----
true
Events: <none>

现在您已经创建了 ConfigMap,在开始 部署 MongoDB 资源 之前,请 为 Kubernetes Operator 创建档案 。

后退

创建档案