Puedes utilizar Atlas Kubernetes Operator para gestionar recursos en Atlas sin salir de Kubernetes. Este tutorial demuestra cómo crear tu primer clúster en Atlas desde Helm Charts con Atlas Kubernetes Operator.
Nota
¿Prefieres comenzar sin Helm?
Para crear su primer clúster en Atlas a partir de archivos de configuración de Kubernetes con Atlas Kubernetes Operator, consulte Inicio rápido.
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.
Puedes acceder al proyecto Atlas Kubernetes Operator en GitHub:
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 borras un
AtlasProjectEl Recurso en Kubernetes, de forma predeterminada, el Atlas Kubernetes Operator ya no elimina automáticamente el proyecto correspondiente de Atlas. Este cambio en el comportamiento está destinado a ayudar a prevenir eliminaciones accidentales o inesperadas. Para obtener más información, incluyendo cómo revertir este comportamiento al por defecto usado antes del Atlas Kubernetes Operator 2.0, consulte Nuevo valor por defecto: protección contra borrado en Atlas Kubernetes Operator 2.0.De manera similar, Atlas Kubernetes Operator no elimina equipos de Atlas si los elimina de un proyecto Atlas en Kubernetes con 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ístrese para obtener una cuenta Atlas o inicie sesión.
Registrar una nueva cuenta de Atlas o Iniciar sesión en tu cuenta de Atlas.
Cree claves API para su organización.
Nota
Necesita la siguiente llave pública de API, llave privada de API y la información del Identificador de la Organización para configurar el acceso de Atlas Kubernetes Operator a Atlas.
Otorgar acceso programático a una organización y configurar la API Access List.
Necesita la siguiente llave pública de API, llave privada de API y la información del Identificador de la Organización para configurar el acceso de Atlas Kubernetes Operator a Atlas.
Si deseas que el Atlas Kubernetes Operator cree un nuevo Proyecto de Atlas, otorga acceso programático a una organización. Si tu organización requiere una lista de acceso IP para la API de administración de Atlas, también deberás configurar la lista de acceso a la API.
Importante
Debes asignar a la clave API el rol organizacional Organization Project Creator o superior.
Si deseas trabajar con un proyecto Atlas existente, Añadir acceso al proyecto desde un proyecto. Si tu organización requiere una lista de acceso IP para la API de Administración de Atlas, también debes configurar la lista de acceso a la API.
Importante
Debe asignar al clave API el rol de proyecto Project Owner.
Implementar el operador Atlas Kubernetes.
Ejecute uno de los siguientes conjuntos de comandos:
Si desea que Atlas Kubernetes Operator supervise todos los espacios de nombres en el clúster de Kubernetes, ejecute los siguientes comandos:
helm repo add mongodb https://mongodb.github.io/helm-charts helm install atlas-operator --namespace=atlas-operator --create-namespace mongodb/mongodb-atlas-operator Si quieres que Atlas Kubernetes Operator supervise un conjunto particular de namespaces, configura el indicador
--watchNamespacesen una lista separada por comas de namespaces para ser supervisados. Por ejemplo, ejecuta el siguiente comando para monitorear solo el namespaceatlas-operator:helm install atlas-operator --namespace=atlas-operator --set watchNamespaces=atlas-operator --create-namespace mongodb/mongodb-atlas-operator
Implementar la implementación de la base de datos Atlas.
Personalice el proyecto Atlas y los usuarios de su base de datos.
Nota
Puede encontrar los siguientes ejemplos adicionales de gráficos de Helm en GitHub:
atlas-basic: Un ejemplo básico de implementación del Atlas Kubernetes Operator que incluye la creación de un Proyecto Atlas, un clúster y un usuario de base de datos.
atlas-advanced: Un ejemplo extensible y avanzado de implementación del Atlas Kubernetes Operator con plantilla relacionada con implementaciones multiregión, comportamiento de escalado automático y más.
Crea un archivo llamado
install-values.yamly pega el siguiente ejemplo de código, que hace lo siguiente:Establece el nombre del proyecto a
My Project.Permite que todas las direcciones IP (0.0.0.0) accedan al proyecto.
Crea un usuario de base de datos llamado
dbadminque tiene eldbAdminrol.Crea un usuario de base de datos llamado
dbuserque tiene elreadWriterol.
project: # Project custom values atlasProjectName: "My Project" projectIpAccessList: - cidrBlock: "0.0.0.0/0" users: # Custom database users - username: dbadmin databaseName: admin roles: - databaseName: admin-role roleName: dbAdmin - username: dbuser databaseName: admin roles: - databaseName: user-role roleName: readWrite Ejecuta el siguiente comando.
Las banderas
--sety--valuesen el siguiente comando anulan los valores del archivoValues.yamly los valores por defecto de Helm Charts con tu Identificador de la Organización, claves de API y configuración de Proyecto de Atlas.Nota
mongodb/atlas-deploymenthace referencia al nombre de una gráfica en el repositorio.helm install atlas-deployment \ mongodb/atlas-deployment \ --namespace=my-cluster \ --create-namespace \ --set atlas.secret.orgId='<orgid>' \ --set atlas.secret.publicApiKey='<publicKey>' \ --set atlas.secret.privateApiKey='<privateApiKey>' \ --values install-values.yaml Para saber más sobre los parámetros disponibles, consulte
AtlasDeploymentCustom recurso.Para crear una instancia sin servidor, consulte el ejemplo de instancia sin servidor.
Verifique el estado de su usuario de base de datos.
Ejecuta el siguiente comando para esperar a que el usuario de la base de datos dbadmin esté listo:
kubectl wait --for=condition=ready --timeout=10m -n my-cluster atlasdatabaseusers/atlas-deployment-dbadmin
Nota
El AtlasDatabaseUser recurso personalizado espera hasta que el clúster esté listo. Crear un nuevo clúster Atlas de nivel gratuito tarda menos de 15 segundos. Crear un nuevo clúster Flex o Dedicado puede tardar hasta 10 minutos.
Recupera el secreto que Atlas Kubernetes Operator creó para conectarse a la implementación de la base de datos.
Importante
El siguiente comando requiere jq 1.6 o superior.
Ejecute el siguiente comando para recuperar la cadena de conexión y la contraseña del usuario de la base de datos dbadmin. Las cadenas de conexión serán diferentes a las del ejemplo.
kubectl get secret -n my-cluster my-project-cluster-name-dbadmin -o json | jq -r '.data | with_entries(.value |= @base64d)';
{ "connectionStringStandard": "mongodb://admin-user:%25SomeLong%25password$foradmin@atlas-cluster-shard-00-00.nlrvs.mongodb.net:27017,atlas-cluster-shard-00-01.nlrvs.mongodb.net:27017,atlas-cluster-shard-00-02.nlrvs.mongodb.net:27017/?ssl=true&authSource=admin&replicaSet=atlas-11q9bn-shard-0", "connectionStringStandardSrv": "mongodb+srv://admin-user:%25SomeLong%25password$foradmin@atlas-cluster.nlrvs.mongodb.net", "password": "%SomeLong%password$foradmin", "username": "dbadmin" }
Puede usar el siguiente secreto en su aplicación:
containers: - name: test-app env: - name: "CONNECTION_STRING" valueFrom: secretKeyRef: name: my-project-cluster-name-dbadmin key: connectionStringStandardSrv