Este tutorial demuestra cómo crear una instancia federada de base de datos en Atlas a partir de archivos de configuración de Kubernetes con Atlas Kubernetes Operator. La instancia federada de base de datos en este tutorial conecta un AWS S3 cubo y un clúster de Atlas.
Requisitos previos
Este tutorial requiere:
Un clúster de Kubernetes en funcionamiento con Atlas Kubernetes Operator implementadas, incluido un
AtlasProjectRecurso personalizado.Una cuenta de usuario de AWS con permisos para modificar roles de IAM.
La Atlas CLI.
Procedimiento
Importante
Recursos personalizados ya no borran objetos por defecto
Atlas Kubernetes Operator uses custom resource archivos de configuración to manage your Atlas configuration, but as of Atlas Kubernetes Operator 2.0, custom resources you borrar in Kubernetes are no longer (por defecto) borrados in Atlas. En su lugar, Atlas Kubernetes Operator simplemente deja de gestionar esos recursos en Atlas. Por ejemplo, si eliminas un
AtlasProjectCustom recurso en Kubernetes, de forma predeterminada, el Atlas Kubernetes Operator ya no elimina automáticamente el Proyecto correspondiente de Atlas. Este cambio de comportamiento está diseñado para ayudar a prevenir eliminaciones accidentales o inesperadas. Para saber más, incluido cómo revertir este comportamiento al por defecto utilizado antes de Atlas Kubernetes Operator 2.0, consulta Nuevo valor por defecto: Protección de Eliminación en Atlas Kubernetes Operator 2.0.Del mismo modo, Atlas Kubernetes Operator no elimina los equipos de Atlas si los eliminas de un proyecto Atlas en Kubernetes utilizando Atlas Kubernetes Operator.
Define explícitamente los detalles de configuración que deseas para evitar el uso implícito de los valores de configuración por defecto de Atlas. En algunos casos, heredar los valores por defecto de Atlas puede crear un ciclo de conciliación que impida que el recurso personalizado alcance un estado de
READY. Por ejemplo, definir explícitamente el comportamiento de escalado automático deseado en el recurso personalizadoAtlasDeployment, como se muestra en el ejemplo incluido, garantiza que un tamaño de instancia estático en el recurso personalizado no se aplique repetidamente a una implementación de Atlas que tiene el escalado automático habilitado.autoScaling: diskGB: enabled: true compute: enabled: true scaleDownEnabled: true minInstanceSize: M30 maxInstanceSize: M40
Cree el rol AWS IAM en Atlas
Ejecute el siguiente comando de Atlas CLI para crear el nuevo rol de AWS IAM en Atlas. Reemplace el siguiente marcador de posición con su valor:
Marcador de posiciónDescripciónPROJECT-IDÚnica string hexadecimal de 24 caracteres que identifica el Proyecto de Atlas que se utilizará.
atlas cloudProviders accessRoles aws create --projectId <PROJECT-ID> Observa los valores de los campos devueltos:
RoleID,Atlas AWS Account ARNyUnique External ID:AWS IAM role '<RoleID>' successfully created. Atlas AWS Account ARN: <AtlasAWSAccountARN> Unique External ID: <AtlasAssumedRoleExternalID>
Modifica tu política de confianza de rol de AWS IAM.
Iniciar sesión en tu AWS Consola de gestión.
Navega hasta el Identity and Access Management (IAM) servicio.
Selecciona Roles en la navegación del lado izquierdo.
Haz clic en el rol IAM existente que deseas utilizar para acceder a Atlas desde la lista de roles.
Selecciona la pestaña Trust Relationships.
Haga clic en el botón Edit trust relationship.
Editar el Policy Document. Agrega un objeto
Statementnuevo con el siguiente contenido.Nota
Reemplace las líneas resaltadas con los valores devueltos en el paso anterior.
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "AWS":"<atlasAWSAccountArn>" }, "Action":"sts:AssumeRole", "Condition":{ "StringEquals":{ "sts:ExternalId":"<atlasAssumedRoleExternalId>" } } } ] } Haga clic en el botón Update Trust Policy.
Cree el recurso personalizado AtlasDataFederation.
Ejecute el siguiente comando para crear el AtlasDataFederation recurso personalizado. El roleId debe coincidir con el valor devuelto para RoleID en el paso anterior y el spec.projectRef.name debe coincidir con el nombre de su AtlasProject Recurso Personalizado:
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
Verifica el estado de tu instancia federada de base de datos.
Ejecute el siguiente comando hasta que reciba una respuesta True, lo que indica que el usuario de la base de datos está listo:
kubectl get atlasdatafederation my-federated-deployment -o=jsonpath='{.status.conditions[?(@.type=="Ready")].status}'
Da los siguientes pasos
Para configurar los nodos privados para tu instancia de base de datos federada, consulta Gestionar nodos privados.