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 tu primer clúster en Atlas a partir de archivos de configuración de Kubernetes con Atlas Kubernetes Operator, consulta la Guía rápida.
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 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.
Crea credenciales para tu organización.
Cree las credenciales que el operador de Atlas Kubernetes utiliza para autenticarse con Atlas. Elija una de las siguientes opciones:
Cree una clave API con Organization Project Creator o permisos de Project Owner siguiendo el procedimiento en Conceder acceso programático a una organización.
Cree una cuenta de servicio con los roles adecuados en su organización o proyecto de Atlas. Para obtener más información, consulte la descripción general de las cuentas de servicio.
Para obtener más información sobre cómo configurar las cuentas de servicio con Atlas Kubernetes Operator, consulte Configurar el acceso a Atlas mediante cuentas de servicio.
Implementa Atlas Kubernetes Operator.
Ejecute uno de los siguientes conjuntos de comandos:
Si desea que Atlas Kubernetes Operator supervise todos los namespaces 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
Implemente la implementación de la base de datos de Atlas.
Personaliza el proyecto Atlas y sus usuarios de bases de datos.
Nota
Puedes encontrar los siguientes Helm Charts adicionales de ejemplo 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 en
My Project.Permite que todas las direcciones IP (0.0.0.0) accedan al proyecto.
Crea un usuario de base de datos nombrado
dbadminque tiene el roldbAdmin.Crea un usuario de base de datos nombrado
dbuserque tiene el rolreadWrite.
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 predeterminados de Helm Charts con su ID de organización, credenciales y configuración del proyecto 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 helm install atlas-deployment \ mongodb/atlas-deployment \ --namespace=my-cluster \ --create-namespace \ --set atlas.secret.orgId='<orgid>' \ --set atlas.secret.clientId='<clientId>' \ --set atlas.secret.clientSecret='<clientSecret>' \ --values install-values.yaml Nota
Para obtener una lista completa de los valores de Helm admitidos para la autenticación y otros parámetros del gráfico, consulte el archivo values.yaml en el
helm-chartsrepositorio.Para obtener más información sobre los parámetros de recursos personalizados del operador de Atlas Kubernetes, consulte
AtlasDeploymentRecurso personalizado.Para crear una instancia sin servidor, consulte el ejemplo de instancia sin servidor.
Comprueba el estado de tu 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 de Atlas en el plan gratuito lleva 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 para el usuario dbadmin de la base de datos. Tus cadenas de conexión serán diferentes de la salida de 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