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

独立的自定义资源定义

在此页面上

  • Considerations
  • 迁移到独立 CRD

您可以使用Atlas Kubernetes Operator管理Atlas项目中的资源,而无需使用Atlas Kubernetes Operator管理项目本身。在此独立自定义资源定义(“独立 CRD”)模型中,您可以直接通过AtlasAtlasDeployment AtlasDatabaseUserID 将 自定义资源 和 自定义资源等资源 与Atlas项目关联。

独立的 CRD 允许您为项目使用不同的编程基础架构管理系统,而您可以使用Atlas Kubernetes Operator来管理更频繁更改的资源,例如数据库用户或单个部署。

通过将Atlas项目的管理与用户和部署等子资源的管理分开,独立的 CRD 允许您根据需要将这些职责分配给组织内的不同人员或不同团队。

当您使用Atlas Kubernetes Operator管理项目时,您可以使用atlasProject资源的spec.connectionSecretRef.name参数配置Atlas Administration API身份验证,或者将此参数保留为未设置以默认为全局Atlas凭证。使用独立的 CRD 时,您可以为每个资源指定spec.connectionSecret.name 。此参数(如已设立)优先于spec.connectionSecretRef.name或全局Atlas凭证。

对于使用Atlas项目ID引用父资源的任何资源,都需要设置此参数,否则是可选的。

例子

您可以定义一个通过Atlas ID而不是atlasProject spec.name参数引用其父项目的atlasDeployment CRD。您必须为atlasDeployment资源定义一个spec.connectSecret.name ,如下所示:

apiVersion: atlas.mongodb.com/v1
kind: AtlasDeployment
metadata:
name: test-cluster-name
namespace: mongodb-atlas-system
spec:
externalProjectRef:
id: 671998971c8520583f24f411
connectionSecret:
name: my-atlas-key
deploymentSpec:
clusterType: REPLICASET
name: service-name
tags:
- key: "environment"
value: "production"
backupEnabled: true
replicationSpecs:
- zoneName: US-Zone
numShards: 3
regionConfigs:
- regionName: CENTRAL_US
providerName: GCP
backingProviderName: GCP
priority: 7
electableSpecs:
instanceSize: M10
nodeCount: 3

要将现有 CRD 从atlasProject级管理迁移到独立管理:

1

禁用项目协调并编辑子资源引用

  1. mongodb.com/atlas-reconciliation-policy: "skip"注解添加到父资源的metadata中。这可以防止Atlas Kubernetes Operator尝试协调父资源及其子资源。请考虑以下事项:

    apiVersion: atlas.mongodb.com/v1
    kind: AtlasProject
    metadata:
    name: my-project
    annotations:
    mongodb.com/atlas-reconciliation-policy: "skip"
    spec:
    name: Test project
    connectionSecretRef:
    name: my-atlas-key
    projectIpAccessList:
    - cidrBlock: "203.0.113.0/24"
    comment: "CIDR block for Application Server B - D"

    警告

    如果您不应用此注解, Atlas Kubernetes Operator将在您修改其他资源时继续尝试协调。对于在Atlas Kubernetes Operator 2.0中禁用“新默认值:删除保护”的用户,这可能会导致Atlas Kubernetes Operator在您删除atlasProject资源时删除Atlas项目,或者在尝试删除具有活动子资源的项目时进入阻止状态例如数据库用户或部署。

  2. 修改项目引用,使其点Atlas项目ID ,而不是atlasProject名称。

    示例,要解耦atlasDatabaseUser资源:

    apiVersion: atlas.mongodb.com/v1
    kind: AtlasDatabaseUser
    metadata:
    name: my-database-user
    spec:
    roles:
    - roleName: readWriteAnyDatabase
    databaseName: admin
    externalProjectRef:
    id: 671998971c8520583f24f411
    username: theuser
    passwordSecretRef:
    name: the-user-password
2
3

要停止使用Atlas Kubernetes Operator管理项目,您现在可以删除atlasProject CRD。要继续使用Atlas Kubernetes Operator管理项目和附加的子资源,请跳到下一步。

4

如果您想继续使用Atlas Kubernetes Operator管理您的项目,比如您仍然有资源从属于atlasProject ,请从atlasProject CRD 中删除协调策略注解来重新激活协调。

后退

Atlas for Government