本教程演示如何使用Atlas Kubernetes Operator从Kubernetes配置文件在Atlas中创建联合数据库实例。本教程中的联合数据库实例连接一个 Amazon Web Services S3 存储桶和一个Atlas 集群。
先决条件
本教程要求:
部署了Atlas Kubernetes Operator 的运行的Kubernetes集群,包括
AtlasProject自定义资源。有权修改 IAM 角色的 Amazon Web Services 用户帐户。
步骤
重要
自定义资源不再默认删除对象
Atlas Kubernetes Operator使用自定义资源配置文件来管理Atlas配置,但从Atlas Kubernetes Operator2.0 开始,您在Kubernetes中删除的自定义资源不再(默认)在Atlas中删除。相反, Atlas Kubernetes Operator只是停止管理Atlas中的这些资源。
AtlasProject示例,如果您在Kubernetes中删除 自定义资源,默认默认, Atlas Kubernetes Operator不再自动从Atlas中删除相应的项目。这种行为更改旨在帮助防止意外删除。 要学习;了解详情,包括如何将此行为恢复为在Atlas Kubernetes Operator.2 0之前使用的默认,请参阅新默认值: Atlas Kubernetes2 Operator.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
在Atlas中创建AmazonAmazon Web Services Web Services IAM角色Atlas
运行以下 Atlas CLI 命令以在 Atlas 中创建新的Amazon Web Services IAM角色。将以下占位符替换为您的值:
占位符说明PROJECT-ID唯一的 24 个字符的十六进制字符串,用于标识要使用的 Atlas 项目。
atlas cloudProviders accessRoles aws create --projectId <PROJECT-ID> 请注意返回的字段值
RoleID、Atlas AWS Account ARN和Unique External ID:AWS IAM role '<RoleID>' successfully created. Atlas AWS Account ARN: <AtlasAWSAccountARN> Unique External ID: <AtlasAssumedRoleExternalID>
修改 AWS IAM 角色信任策略。
登录 AWS 管理控制台。
导航到 Identity and Access Management (IAM)服务。
从左侧导航栏中选择 Roles 。
单击角色列表中您希望用于 Atlas 访问的现有 IAM 角色。
选择 Trust Relationships 标签页。
单击 Edit trust relationship 按钮。
编辑 Policy Document。添加包含以下内容的新
Statement对象。注意
将突出显示的行替换为上一步返回的值。
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "AWS":"<atlasAWSAccountArn>" }, "Action":"sts:AssumeRole", "Condition":{ "StringEquals":{ "sts:ExternalId":"<atlasAssumedRoleExternalId>" } } } ] } 单击 Update Trust Policy 按钮。
创建AtlasDataFederation 自定义资源。
运行以下命令以创建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
采取后续步骤
要为联合数据库实例配置私有端点,请参阅托管私有端点。