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

设置 Data Federation

在此页面上

  • 先决条件
  • 步骤
  • 在 Atlas 中创建 Amazon Web Services IAM角色
  • 修改 AWS IAM 角色信任策略。
  • 创建 AtlasDataFederation自定义资源。
  • 检查联合数据库实例的状态。
  • 采取后续步骤

本教程演示如何使用 Atlas Kubernetes Operator 从 Kubernetes 配置文件在 Atlas 中创建联合数据库实例。The federated database instance in this tutorial connects an AWS S3 bucket and an Atlas cluster.

本教程要求:

重要

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

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从Kubernetes中的Atlas项目中删除团队,则Atlas Kubernetes Operator不会从Atlas中删除团队。

1
  1. 运行以下 Atlas CLI 命令以在 Atlas 中创建新的Amazon Web Services IAM角色。将以下占位符替换为您的值:

    占位符
    说明
    PROJECT-ID
    唯一的 24 个字符的十六进制字符串,用于标识要使用的 Atlas 项目。
    atlas cloudProviders accessRoles aws create --projectId <PROJECT-ID>
  2. 请注意返回的字段值RoleIDAtlas AWS Account ARNUnique External ID

    AWS IAM role '<RoleID>' successfully created.
    Atlas AWS Account ARN: <AtlasAWSAccountARN>
    Unique External ID: <AtlasAssumedRoleExternalID>
2
  1. 登录 AWS 管理控制台。

  2. 导航到 Identity and Access Management (IAM)服务。

  3. 从左侧导航栏中选择 Roles

  4. 单击角色列表中您希望用于 Atlas 访问的现有 IAM 角色。

  5. 选择 Trust Relationships 标签页。

  6. 单击 Edit trust relationship 按钮。

  7. 编辑 Policy Document。添加包含以下内容的新 Statement 对象。

    注意

    将突出显示的行替换为上一步返回的值。

    {
    "Version":"2012-10-17",
    "Statement":[
    {
    "Effect":"Allow",
    "Principal":{
    "AWS":"<atlasAWSAccountArn>"
    },
    "Action":"sts:AssumeRole",
    "Condition":{
    "StringEquals":{
    "sts:ExternalId":"<atlasAssumedRoleExternalId>"
    }
    }
    }
    ]
    }
  8. 单击 Update Trust Policy 按钮。

3

运行以下命令以创建AtlasDataFederation自定义资源roleId应与上一步中为RoleID返回的值匹配,而spec.projectRef.name应与AtlasProject自定义资源的名称匹配:

cat <<EOF | kubectl apply -f -
apiVersion: atlas.mongodb.com/v1
kind: AtlasDataFederation
metadata:
name: my-federated-deployment
spec:
projectRef:
name: my-project
namespace: default
cloudProviderConfig:
aws:
roleId: 12345678
testS3Bucket: my-bucket
dataProcessRegion:
cloudProvider: AWS
region: OREGON_USA
name: my-fdi
storage:
databases:
- collections:
- dataSources:
- allowInsecure: false
collection: my-collection
collectionRegex:
database: my-database
databaseRegex:
defaultFormat: ".avro"
path: /
provenanceFieldName: string
storeName: my-data-store
urls:
- string:
name: my-collection-mdb
maxWildcardCollections: 100
name: my-database-mdb
views:
- name: my-view
pipeline:
source: my-source-collection
stores:
- name: my-store
provider: S3
additionalStorageClasses:
- STANDARD
bucket: my-bucket
delimiter: /
includeTags: false
prefix: data-
public: false
region: US_WEST_1
EOF
4

运行以下命令,直到收到True响应,这表明数据库用户已准备就绪:

kubectl get atlasdatafederation my-federated-deployment -o=jsonpath='{.status.conditions[?(@.type=="Ready")].status}'

要为联合数据库实例配置私有端点,请参阅托管私有端点。

后退

导入项目