Puedes usar el operador Atlas Kubernetes Operator para gestionar los recursos en Atlas sin salir de Kubernetes. Este tutorial demuestra cómo crear su primer clúster en Atlas a partir de archivos de configuración de Kubernetes con Atlas Kubernetes Operator.
Nota
¿Preferiría comenzar con Helm?
Para crear tu primer clúster en Atlas desde Helm Charts con Atlas Kubernetes Operator, consulta Introducción rápida a los charts de Helm.
Requisitos previos
Este tutorial requiere:
Un clúster de Kubernetes en ejecución con nodos que ejecutan procesadores con la arquitectura x86-64, AMD64 o ARM64.
jq1.6 o superiorAcceso al proyecto Atlas Kubernetes Operator en GitHub: https://github.com/mongodb/mongodb-atlas-kubernetes
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
Regístrate para obtener una cuenta de Atlas o inicia sesión.
Regístrate e inicia sesión en Atlas o Regístrate e inicia sesión en Atlas.
Instala Atlas Kubernetes Operator.
Elija uno de los siguientes métodos para instalar Atlas Kubernetes Operator:
Para instalar Atlas Kubernetes Operator usando Atlas CLI, ejecutar el siguiente comando:
Importante
El Atlas CLI crea un Clave de API pero no se puede detectar la IP saliente de su clúster. Utilice el indicador --ipAccessList para permitir que la dirección IP o el bloque CIDR de su clúster de Kubernetes se includa en lista de permitidos, para que el Atlas Kubernetes Operator pueda comunicarse con Atlas.
atlas kubernetes operator install --ipAccessList <IP_OR_CIDR> [options]
Este comando automáticamente:
Cree un nuevo API key en tu organización de Atlas.
Agrega tu IP/CIDR proporcionada a la clave de API lista de acceso IP.
Instala el Atlas Kubernetes Operator en tu clúster de Kubernetes obteniendo los manifiestos de GitHub.
Para obtener más información sobre la sintaxis del comando y los parámetros, consulta la documentación de Atlas CLI para atlas kubernetes operator install.
Para instalar el Atlas Kubernetes Operator usando kubectl, sigue estos pasos:
Reemplaza
<VERSION>con el número de versión más reciente y ejecuta uno de los siguientes comandos:Si quiere que el Atlas Kubernetes Operator supervise todos los namespaces en el clúster de Kubernetes, ejecute:
kubectl apply -f https://raw.githubusercontent.com/mongodb/mongodb-atlas-kubernetes/refs/heads/main/releases/v<VERSION>/deploy/all-in-one.yaml Si quieres que el Atlas Kubernetes Operator vigile solo su namespace, instala los archivos de configuración desde el directorio
deploy/namespaced:kubectl apply -f https://raw.githubusercontent.com/mongodb/mongodb-atlas-kubernetes/v<VERSION>/deploy/namespaced/crds.yaml kubectl apply -f https://raw.githubusercontent.com/mongodb/mongodb-atlas-kubernetes/v<VERSION>/deploy/namespaced/namespaced-config.yaml
Cree una clave API con
Organization Project Creatoro permisos deProject Ownersiguiendo el procedimiento en Conceder acceso programático a una organización.
Crea un secreto con tus claves API y tu Identificador de la Organización.
Para crear y etiquetar un secreto, ejecuta los siguientes comandos con tus claves API y el Identificador de la Organización:
kubectl create secret generic mongodb-atlas-operator-api-key \ --from-literal="orgId=<atlas_organization_id>" \ --from-literal="publicApiKey=<atlas_api_public_key>" \ --from-literal="privateApiKey=<atlas_api_private_key>" \ -n mongodb-atlas-system
kubectl label secret mongodb-atlas-operator-api-key atlas.mongodb.com/type=credentials -n mongodb-atlas-system
Si utilizas un almacenamiento externo de secretos, no necesitas poner información confidencial directamente en los secretos de Kubernetes. Para obtener más información, consulta Configurar almacenamiento secreto.
Cree el recurso personalizado AtlasProject.
Ejecuta el siguiente comando para crear el AtlasProject recurso personalizado:
Nota
El siguiente ejemplo no especifica spec.connectionSecretRef.name. Si no se especifica, el Atlas Kubernetes Operator utiliza la conexión por defecto secret previamente configurada con tus llaves API y el Identificador de la Organización.
Implementa el recurso personalizado del Atlas Kubernetes Operator.
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasProject metadata: name: my-project spec: name: Test Atlas Operator Project projectIpAccessList: - ipAddress: <your-ip-address-range> comment: "Adding your IP to Atlas access list" EOF
Cree el recurso personalizado AtlasDeployment.
Ejecuta uno de los siguientes comandos para crear un AtlasDeployment Recurso personalizado y crear un clúster:
Nivel de pago:
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasDeployment metadata: name: my-atlas-cluster spec: projectRef: name: my-project deploymentSpec: clusterType: REPLICASET name: "Test-cluster" tags: - key: "environment" value: "production" replicationSpecs: - zoneName: US-Zone regionConfigs: - electableSpecs: instanceSize: M10 nodeCount: 3 providerName: AWS regionName: US_EAST_1 priority: 7 EOF
nivel gratuito:
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasDeployment metadata: name: my-atlas-cluster spec: projectRef: name: my-project deploymentSpec: clusterType: REPLICASET name: "Test-cluster" replicationSpecs: - regionConfigs: - regionName: US_EAST_1 providerName: TENANT backingProviderName: AWS electableSpecs: instanceSize: M0 nodeCount: 3 EOF
Para crear una instancia sin servidor, consulte el ejemplo de instancia sin servidor.
Crea un secreto con una contraseña para iniciar sesión en la base de datos del clúster de Atlas.
Reemplace P@@ssword% con su contraseña y ejecute los siguientes comandos:
kubectl create secret generic the-user-password --from-literal="password=P@@sword%"
kubectl label secret the-user-password atlas.mongodb.com/type=credentials
Si utilizas un almacenamiento externo de secretos, no necesitas poner información confidencial directamente en los secretos de Kubernetes. Para obtener más información, consulta Configurar almacenamiento secreto.
Cree el recurso personalizado AtlasDatabaseUser.
Ejecuta el siguiente comando para crear el AtlasDatabaseUser recurso personalizado:
Nota
spec.passwordSecretRef debe hacer referencia a la contraseña que creó anteriormente.
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasDatabaseUser metadata: name: my-database-user spec: roles: - roleName: "readWriteAnyDatabase" databaseName: "admin" projectRef: name: my-project username: theuser passwordSecretRef: name: the-user-password EOF
Comprueba el estado de tu usuario 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:
Nota
El AtlasDatabaseUser Recurso personalizado espera hasta que el clúster esté listo. Crear un nuevo clúster de Atlas en el plan gratuito lleva menos de 15 segundos. Crear un nuevo clúster Flex o Dedicado puede tardar hasta 10 minutos.
kubectl get atlasdatabaseusers my-database-user -o=jsonpath='{.status.conditions[?(@.type=="Ready")].status}'
Recuperar el secreto que Atlas Kubernetes Operator creó para conectarse al clúster.
Copie el siguiente comando:
Importante
El siguiente comando requiere
jq1.6 o superior.kubectl get secret {my-project}-{my-atlas-cluster}-{my-database-user} -o json | jq -r '.data | with_entries(.value |= @base64d)'; Reemplaza los siguientes marcadores de posición con los detalles para tus recursos personalizados:
my-projectEspecifica el valor del campo
metadatade tuAtlasProjectRecurso Personalizado.my-atlas-clusterEspecifica el valor del campo
metadatade tuAtlasDeploymentRecurso Personalizado.my-database-userEspecifica el valor del campo
metadatade tuAtlasDatabaseUserRecurso Personalizado.Ejecuta el comando.
Nota
Tus cadenas de conexión serán diferentes del siguiente ejemplo.
{ "connectionStringStandard": "mongodb://theuser:P%40%40sword%25@test-cluster-shard-00-00.peqtm.mongodb.net:27017,test-cluster-shard-00-01.peqtm.mongodb.net:27017,test-cluster-shard-00-02.peqtm.mongodb.net:27017/?ssl=true&authSource=admin&replicaSet=atlas-pk82fl-shard-0", "connectionStringStandardSrv": "mongodb+srv://theuser:P%40%40sword%25@test-cluster.peqtm.mongodb.net", "password": "P@@sword%", "username": "theuser" } Puedes usar este secreto en tu aplicación:
containers: - name: test-app env: - name: "CONNECTION_STRING" valueFrom: secretKeyRef: name: test-atlas-operator-project-test-cluster-theuser key: connectionStringStandardSrv