Atlas Kubernetes Operator 支持以下自定义资源:
Resource | 说明 |
---|---|
配置备份策略以备份集群 Atlas。 | |
配置备份安排以备份你的集群Atlas。 | |
Atlas 中某些项目内部集群的配置。 | |
Atlas 某些项目中数据库用户的配置。 | |
Atlas 中项目的配置。 | |
在 Atlas 中配置项目团队。 | |
在 Atlas 中配置联合数据库实例及其私有端点。 | |
在 Atlas 中配置联合身份验证。 |
重要
自定义资源不再默认删除对象
Atlas Kubernetes Operator使用自定义资源配置文件来管理Atlas配置,但从Atlas Kubernetes Operator 2.0开始,您在Kubernetes中删除的自定义资源将不再从Atlas中删除。 相反, Atlas Kubernetes Operator停止管理这些资源。 示例,如果您在Kubernetes中删除AtlasProject
自定义资源, Atlas Kubernetes Operator将不再自动从Atlas中删除相应的项目,从而防止意外删除。 要学习;了解详情,包括如何将此行为恢复为Atlas Kubernetes Operator 2之前使用的默认行为。 0 、 请参阅新默认值: Atlas Kubernetes Operator 2中的删除保护。 0 。
Atlas Kubernetes Operator 工作流程
使用 Atlas Kubernetes Operator 时,您可以创建新的 Atlas 项目,也可以使用现有的 Atlas 项目。
您需要以下公共 API 密钥、私有 API 密钥和组织 ID 信息, 配置 Atlas Kubernetes Operator 对 Atlas 的访问权限。
如果您希望Atlas Kubernetes Operator创建新的Atlas项目,请为组织授予编程访问权限。如果您的组织需要Atlas Administration API的IP访问列表,您还必须配置API访问权限列表。
重要
您必须为 API 密钥分配 Organization Project Creator组织角色或更高级别的角色。
如果要使用现有Atlas项目,请从项目添加项目访问权限。如果您的组织需要Atlas Administration API的IP访问列表,您还必须配置API访问权限列表。
重要
您必须为 API 密钥分配 Project Owner 项目角色。
要了解更多信息,请参阅配置对 Atlas 的访问权限。
创建和更新进程
每次更改任何支持的自定义资源中的spec
字段时,Atlas Kubernetes Operator 都会启动以下工作流程:
Atlas Kubernetes Operator 接收有关已更改自定义资源的事件。
Atlas Kubernetes Operator 更新
status.conditions
字段以反映资源尚未准备就绪:conditions: - lastTransitionTime: "2021-03-13T16:26:17Z" status: "False" type: Ready 要连接到 Atlas Administration API,Atlas Kubernetes Operator 会从以下位置之一读取组织ID 和 API密钥:
spec.connectionSecretRef.name
(如果在AtlasProject
自定义资源中指定)。默认下, Atlas Kubernetes Operator将连接密钥保存在与 自定义资源相同的命名空间
AtlasProject
中。要在其他命名空间中存储密钥,请指定spec.connectionSecretRef.namespace
参数。global
Atlas Kubernetes Operator密钥<operator-deployment-name>-api-key
(如果未指定spec.connectionSecretRef.name
)。
为了在 Atlas 中创建或更新资源,Atlas Kubernetes Operator 使用连接信息对 Atlas 进行API调用。
注意
有时,在协调自定义资源期间,Atlas Kubernetes Operator 会在 Atlas 中进行多个API调用。 例如,
AtlasProject
具有用于调用匹配 API 的 IP 访问列表 配置。如果在协调过程中出现任何错误,
status.conditions
会进行更新以反映错误。例子
- lastTransitionTime: "2021-03-15T14:26:44Z" message: 'POST https://cloud.mongodb.com/api/atlas/v1.0/groups/604a47de73cd8cag77239021/accessList: 400 (request "INVALID_IP_ADDRESS_OR_CIDR_NOTATION") The address 192.0.2.1dfdfd5 must be in valid IP address or CIDR notation.' reason: ProjectIPAccessListNotCreatedInAtlas status: "False" type: IPAccessListReady 如果更新成功,则
status.conditions
表明资源已准备就绪:conditions: - lastTransitionTime: "2021-03-13T16:26:17Z" status: "True" type: Ready
删除进程
从 Atlas Kubernetes Operator 2.0开始,当您从 Kubernetes 删除自定义资源时,该对象默认保留在 Atlas 中,但 Atlas Kubernetes Operator不再控制该对象。 您可以恢复整个部署的此默认值,或使用注释覆盖特定自定义资源的此默认值,以允许 Atlas Kubernetes Operator 从 Atlas 中删除相应的对象。 如果使用注解进行覆盖,则会开始以下工作流程:
Atlas Kubernetes Operator 收到有关已删除的自定义资源的事件。
要连接到 Atlas Administration API,Atlas Kubernetes Operator 从以下位置之一读取组织 ID 和API密钥:
spec.connectionSecretRef.name
(如果在AtlasProject
自定义资源中指定)。默认下, Atlas Kubernetes Operator将连接密钥保存在与
AtlasProject
自定义资源相同的命名空间中。要在其他命名空间中存储密钥,请指定spec.connectionSecretRef.namespace
参数。global
Atlas Kubernetes Operator密钥<operator-deployment-name>-api-key
(如果未指定spec.connectionSecretRef.name
)。
要删除 Atlas 中的资源,Atlas Kubernetes Operator 使用连接信息对 Atlas 进行API调用。
注意
Atlas Kubernetes Operator会删除在Kubernetes中创建的任何相关对象。示例,如果删除
AtlasDatabaseUser
,Atlas Kubernetes Operator也会删除相关的连接密钥。
使用注解跳过或覆盖默认值
您可以使用注解来修改 Atlas Kubernetes Operator 的默认行为。
如果您将
mongodb.com/atlas-resource-policy: "delete"
注解添加到自定义资源的metadata
,则当您删除Atlas Kubernetes Operator资源时,Atlas Kubernetes Operator会删除Atlas中的相应对象。例子
apiVersion: atlas.mongodb.com/v1 kind: AtlasProject metadata: name: my-project annotations: mongodb.com/atlas-resource-policy: "delete" 如果您已将新的删除行为恢复为在 Atlas Kubernetes Operator 2.0 之前使用的默认行为,则可以将
mongodb.com/atlas-resource-policy: "keep"
注解添加到自定义资源的metadata
,这样当您删除 Atlas Kubernetes Operator 时,Atlas Kubernetes Operator 就不会删除该资源。操作符资源。如果您将
mongodb.com/atlas-reconciliation-policy: "skip"
注解添加到自定义资源的metadata
中,Atlas Kubernetes Operator 不会启动该资源的协调。此注解允许您暂停与规范的同步,直到您删除该注解。 您可以使用此注解对自定义资源进行手动更改,避免 Atlas Kubernetes Operator 在同步期间撤消这些更改。删除此注解后,Atlas Kubernetes Operator 会协调资源并将其与规范同步。如果您将
mongodb.com/atlas-resource-version-policy: "allow"
注解添加到自定义资源的metadata
,则即使资源的版本标签与您正在使用的 Atlas Kubernetes Operator 版本不匹配,Atlas Kubernetes Operator 也会允许您使用该资源。 如果您的资源版本是落后于 Atlas Kubernetes Operator 版本的主要版本,则最新功能可能无法使用。 次要版本差异是向后兼容的。