Configurar Data Federation
Nesta página
Este tutorial demonstra como criar uma instância do banco de dados federado no Atlas a partir de arquivos de configuração do Kubernetes com o Atlas Kubernetes Operator. A instância do banco de dados federado neste tutorial conecta um bucket AWS S3 e um cluster Atlas.
Pré-requisitos
Este tutorial requer:
Um cluster Kubernetes em execução com o Atlas Kubernetes Operator implantado, incluindo um
AtlasProject
Recurso personalizado.Uma conta de usuário Amazon Web Services com permissões para modificar roles IAM .
Procedimento
Importante
Os Recursos Personalizados Não Excluem Mais Objetos por Padrão
O Atlas Kubernetes Operator usa arquivos de configuração de recurso personalizado para gerenciar sua configuração do Atlas , mas a partir do Atlas Kubernetes Operator 2.0, os recursos personalizados que você exclui no Kubernetes não são mais (por padrão) excluídos no Atlas. Em vez disso, o Atlas Kubernetes Operator simplesmente para de gerenciar estes recursos no Atlas. Por exemplo, se você excluir um
AtlasProject
Recurso Personalizado no Kubernetes, por padrão, o Atlas Kubernetes Operator não excluirá mais automaticamente o projeto correspondente do Atlas. Essa mudança no comportamento destina-se a ajudar a evitar exclusões acidentais ou inesperadas. Para saber mais, incluindo como reverter este comportamento para o padrão utilizado antes do Atlas Kubernetes Operator 2.,0 consulte Novo padrão: proteção de exclusão no Atlas Kubernetes 2 Operator.0.Da mesma forma, o Atlas Kubernetes Operator não exclui equipes do Atlas se você as remover de um projeto do Atlas no Kubernetes com o Atlas Kubernetes Operator.
Defina explicitamente os detalhes de configuração desejados para evitar o uso implícito de valores de configuração padrão do Atlas . Em alguns casos, herdar os padrões do Atlas pode resultar em um loop de reconciliação que pode impedir que seu recurso personalizado atinja um estado
READY
. Por exemplo, definir explicitamente o comportamento de autoscaling desejado em seu recurso personalizadoAtlasDeployment
, conforme mostrado no exemplo incluído, garante que um tamanho de instância estática em seu recurso personalizado não esteja sendo aplicado repetidamente a um sistema do Atlas que tenha o autoscaling ativado.autoScaling: diskGB: enabled: true compute: enabled: true scaleDownEnabled: true minInstanceSize: M30 maxInstanceSize: M40
Crie o role do Amazon Amazon Web Services Web Services IAM no Atlas
Execute o seguinte comando do Atlas CLI para criar o novo papel AWS IAM no Atlas. Substitua o seguinte espaço reservado pelo seu valor:
Espaço reservadoDescriçãoPROJECT-ID
Sequência hexadecimal única de 24 caracteres que identifica o projeto Atlas a ser usado.
atlas cloudProviders accessRoles aws create --projectId <PROJECT-ID> Observe os valores de campo retornados
RoleID
,Atlas AWS Account ARN
eUnique External ID
:AWS IAM role '<RoleID>' successfully created. Atlas AWS Account ARN: <AtlasAWSAccountARN> Unique External ID: <AtlasAssumedRoleExternalID>
Modifique sua política de confiança de role do AWS IAM.
Faça login no Console de gerenciamento da AWS .
Navegue até o serviço Identity and Access Management (IAM) .
Selecione Roles na navegação do lado esquerdo.
Clique no papel IAM existente que você deseja utilizar para acesso do Atlas a partir da lista de papéis.
Selecione a guia Trust Relationships.
Clique no botão Edit trust relationship.
Edite o Policy Document. Adicione um novo objeto
Statement
com o seguinte conteúdo.Observação
Substitua as linhas destacadas por valores gerados na etapa anterior.
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "AWS":"<atlasAWSAccountArn>" }, "Action":"sts:AssumeRole", "Condition":{ "StringEquals":{ "sts:ExternalId":"<atlasAssumedRoleExternalId>" } } } ] } Clique no botão Update Trust Policy.
Crie o AtlasDataFederation
recurso personalizado .
Execute o seguinte comando para criar o Recurso PersonalizadoAtlasDataFederation
. O roleId
deve corresponder ao valor retornado para RoleID
na etapa anterior e o spec.projectRef.name
deve corresponder ao nome do seu Recurso PersonalizadoAtlasProject
:
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
Verifique o status da sua instância do banco de dados federado.
Execute o seguinte comando até receber uma resposta do True
, que indica que o trigger de reconhecimento de data center está pronto:
kubectl get atlasdatafederation my-federated-deployment -o=jsonpath='{.status.conditions[?(@.type=="Ready")].status}'
Dê os próximos passos
Para configurar endpoints privados para sua instância do banco de dados federado, consulte Gerenciar endpoints privados.