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

Helm Charts 快速入门

在此页面上

  • 先决条件
  • 步骤
  • 注册 Atlas 帐户或登录。
  • 为您的组织创建 API 密钥。
  • 部署 Atlas Kubernetes Operator。
  • 部署 Atlas 数据库部署。
  • 检查数据库用户的状态。
  • 检索 Atlas Kubernetes Operator 创建的用于连接到数据库部署的密钥。

您可以使用 Atlas Kubernetes Operator 管理 Atlas 中的资源,而无需离开 Kubernetes。本教程演示如何在 Atlas 中使用 Atlas Kubernetes Operator 从 Helm Charts 创建第一个集群。

注意

您希望在没有 Helm 的情况下开始吗?

要使用Atlas Kubernetes Operator从Kubernetes配置文件在Atlas中创建第一个集群,请参阅快速入门。

本教程要求:

  • 正在运行的 Kubernetes 集群,其节点运行 x86-64、AMD64 或 ARM64 架构的处理器。

您可以访问 GitHub 上的 Atlas Kubernetes Operator 项目:

  • https://github.com/mongodb/mongodb-atlas-kubernetes

重要

自定义资源不再默认删除对象

  • Atlas Kubernetes Operator使用自定义资源配置文件来管理Atlas配置,但从Atlas Kubernetes Operator2.0 开始,您在Kubernetes中删除的自定义资源不再(默认)在Atlas中删除。相反, Atlas Kubernetes Operator只是停止管理Atlas中的这些资源。示例,如果您在Kubernetes中删除AtlasProject 自定义资源,则默认, Atlas Kubernetes Operator不再自动从Atlas中删除相应的项目。这种行为更改旨在帮助防止意外删除。要学习;了解详情,包括如何将此行为恢复为Atlas Kubernetes Operator2 之前使用的默认行为。0 ,请参阅新默认值: Atlas Kubernetes Operator中的删除保护2 。0 。

    同样,如果您使用Atlas Kubernetes Operator从Kubernetes中的Atlas项目中删除团队,则Atlas Kubernetes Operator不会从Atlas中删除团队。

  • 显式定义所需的配置详细信息,以避免隐式使用默认Atlas配置值。在某些情况下,继承Atlas默认值可能会导致协调循环,从而阻止自定义资源实现 READY 状态。示例,在 AtlasDeployment 自定义资源中显式定义所需的自动伸缩行为(如所包含的示例所示)可确保自定义资源中的静态实例大小不会重复应用于已启用自动伸缩的Atlas部署。

    autoScaling:
    diskGB:
    enabled: true
    compute:
    enabled: true
    scaleDownEnabled: true
    minInstanceSize: M30
    maxInstanceSize: M40
1

注册新的 Atlas 帐户登录您的 Atlas 帐户。

2

注意

您需要以下公共 API 密钥、私有 API 密钥和组织 ID 信息, 配置 Atlas Kubernetes Operator 对 Atlas 的访问权限。

向组织授予编程访问权限并配置API Access List

您需要以下公共 API 密钥、私有 API 密钥和组织 ID 信息, 配置 Atlas Kubernetes Operator 对 Atlas 的访问权限。

3

运行以下其中一组命令:

  • 如果您希望 Atlas Kubernetes Operator 监视 Kubernetes 集群中的所有命名空间,请运行以下命令:

    helm repo add mongodb https://mongodb.github.io/helm-charts
    helm install atlas-operator --namespace=atlas-operator --create-namespace mongodb/mongodb-atlas-operator
  • 如果您希望 Atlas Kubernetes Operator 仅监视自己的 命名空间 --watchNamespaces,将 标志设置为其自己的 命名空间 ,然后运行以下命令:

    注意

    您只能将--watchNamespaces 标志设置为其自己的 命名空间 。将--watchNamespaces 标志设置为任何其他 命名空间 目前不支持。

    helm install atlas-operator --namespace=atlas-operator --set watchNamespaces=atlas-operator --create-namespace mongodb/mongodb-atlas-operator
4
  1. 自定义 Atlas 项目及其数据库用户。

    注意

    您可以在Github中找到以下其他 HelmCharts GithubCharts示例:

    • atlas-basic:一个简单的Atlas Kubernetes Operator部署示例,包括创建Atlas项目、集群和数据库用户。

    • atlas-advanced :可扩展的高级Atlas Kubernetes Operator示例部署,带有与多区域部署、自动扩展行为等相关的生物标牌。

    创建名为 install-values.yaml 的文件并粘贴以下示例代码,该代码将执行以下操作:

    • 将项目名称设置为 My Project

    • 允许所有 IP 地址 (0.0.0.0) 访问项目。

    • 创建一个名为dbadmin且具有dbAdmin角色的数据库用户。

    • 创建一个名为dbuser且具有readWrite角色的数据库用户。

    project: # Project custom values
    atlasProjectName: "My Project"
    projectIpAccessList:
    - cidrBlock: "0.0.0.0/0"
    users: # Custom database users
    - username: dbadmin
    databaseName: admin
    roles:
    - databaseName: admin-role
    roleName: dbAdmin
    - username: dbuser
    databaseName: admin
    roles:
    - databaseName: user-role
    roleName: readWrite
  2. 运行以下命令。

    以下命令中的 --set--values 标志使用您的组织 ID、API 密钥和 Atlas 项目配置覆盖 Values.yaml 文件值和默认 Helm Charts 值。

    注意

    mongodb/atlas-deployment 引用存储库中图表的名称。

    helm install atlas-deployment \
    mongodb/atlas-deployment \
    --namespace=my-cluster \
    --create-namespace \
    --set atlas.secret.orgId='<orgid>' \
    --set atlas.secret.publicApiKey='<publicKey>' \
    --set atlas.secret.privateApiKey='<privateApiKey>' \
    --values install-values.yaml

    要了解可用参数的更多信息,请参阅 AtlasDeployment 自定义资源。

    要创建无服务器实例,请参阅无服务器实例示例。

5

运行以下命令,等待 dbadmin 数据库用户准备就绪:

kubectl wait --for=condition=ready --timeout=10m -n my-cluster atlasdatabaseusers/atlas-deployment-dbadmin

注意

AtlasDatabaseUser 自定义资源等待数据库部署就绪。创建新的数据库部署最多可能需要 10 分钟。

6

重要

以下命令需要 jq 1.6 或更高版本。

运行以下命令检索 dbadmin 数据库用户的连接字符串和密码。您的连接字符串将与示例输出不同。

kubectl get secret -n my-cluster my-project-cluster-name-dbadmin -ojson | jq -r '.data | with_entries(.value |= @base64d)';
{
"connectionStringStandard": "mongodb://admin-user:%25SomeLong%25password$foradmin@atlas-cluster-shard-00-00.nlrvs.mongodb.net:27017,atlas-cluster-shard-00-01.nlrvs.mongodb.net:27017,atlas-cluster-shard-00-02.nlrvs.mongodb.net:27017/?ssl=true&authSource=admin&replicaSet=atlas-11q9bn-shard-0",
"connectionStringStandardSrv": "mongodb+srv://admin-user:%25SomeLong%25password$foradmin@atlas-cluster.nlrvs.mongodb.net",
"password": "%SomeLong%password$foradmin",
"username": "dbadmin"
}

您可以在应用程序中使用以下密钥

containers:
- name: test-app
env:
- name: "CONNECTION_STRING"
valueFrom:
secretKeyRef:
name: my-project-cluster-name-dbadmin
key: connectionStringStandardSrv

后退

验证包的完整性