Puede usar Atlas Kubernetes Operator para administrar recursos en Atlas sin salir de Kubernetes. Este tutorial muestra cómo crear su primer clúster en Atlas a partir de archivos de configuración de Kubernetes con Atlas Kubernetes Operator.
Nota
¿Preferirías empezar con Helm?
Para crear su primer clúster en Atlas desde Helm Charts con Atlas Kubernetes Operator, consulte Inicio rápido de gráficos 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 superior
Puede acceder al proyecto Atlas Kubernetes Operator en GitHub:
Para instalar el operador Atlas Kubernetes mediante la CLI de Atlas, ejecute el siguiente comando:
atlas kubernetes operator install [options]
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.
Procedimiento
Importante
Los recursos personalizados ya no eliminan objetos de forma predeterminada
El Operador de Kubernetes de Atlas utiliza archivos de configuración de recursos personalizados para administrar la configuración de Atlas. Sin embargo, a partir del Operador de Kubernetes 2.0 de Atlas, los recursos personalizados que elimine en Kubernetes ya no se eliminan (de forma predeterminada) en Atlas. En su lugar, el Operador de Kubernetes de Atlas simplemente deja de administrar esos recursos en Atlas. Por ejemplo, si elimina un
AtlasProjectRecurso Personalizado en Kubernetes, el Operador de Kubernetes de Atlas ya no elimina automáticamente el proyecto correspondiente de Atlas. Este cambio de comportamiento tiene como objetivo evitar eliminaciones accidentales o inesperadas. Para obtener más información, incluido cómo revertir este comportamiento al valor predeterminado utilizado antes del Operador de Kubernetes 2 0de Atlas., consulte Nuevo valor predeterminado: Protección contra eliminaciones en el Operador de Kubernetes 2 de0 Atlas..De manera similar, Atlas Kubernetes Operator no elimina equipos de Atlas si los elimina de un proyecto Atlas en Kubernetes con Atlas Kubernetes Operator.
Defina explícitamente los detalles de configuración deseados para evitar el uso implícito de los valores predeterminados de Atlas. En algunos casos, heredar los valores predeterminados de Atlas puede generar un bucle de conciliación que impide que su recurso personalizado alcance el estado
READY. Por ejemplo, definir explícitamente el comportamiento de escalado automático deseado en su recurso personalizadoAtlasDeployment, como se muestra en el ejemplo incluido, garantiza que un tamaño de instancia estático en su recurso personalizado no se aplique repetidamente a una implementación de Atlas con 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.
Registre una nueva cuenta Atlas o inicie sesión en su cuenta Atlas.
Cree claves API para su organización.
Nota
Necesita la siguiente clave API pública, clave API privada y la información de ID de la organización para configurar el acceso del operador de Kubernetes de Atlas a Atlas.
Otorgar acceso programático a una organización y configurar la API Access List.
Necesita la siguiente clave API pública, clave API privada y la información de ID de la organización para configurar el acceso del operador de Kubernetes de Atlas a Atlas.
Si desea que el operador de Kubernetes de Atlascree un nuevo proyecto de Atlas, otorgue acceso programático a unaorganización. Si su organización requiere una lista de acceso de IP para la API de administración de Atlas, también debe configurarla.
Importante
Debe asignar a la clave API el rol de organización Organization Project Creator o superior.
Si desea trabajar con un proyecto de Atlas existente, agregue el acceso al proyecto desdeun proyecto. Si su organización requiere una lista de acceso IP para la API de administración de Atlas, también debe configurarla.
Importante
Debe asignar al clave API el rol de proyecto Project Owner.
Implementar el operador Atlas Kubernetes.
En uno de los siguientes escenarios, reemplace <version> con el último número de versión:
Si desea que Atlas Kubernetes Operator supervise todos los espacios de nombres en el clúster de Kubernetes, ejecute el siguiente comando:
kubectl apply -f https://raw.githubusercontent.com/mongodb/mongodb-atlas-kubernetes/v<version>/deploy/all-in-one.yaml Si desea que Atlas Kubernetes Operator solo observe su espacio de nombres, debe instalar los archivos de configuración desde el
deploy/namespaceddirectorio: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
Crea un secreto con tus claves API y el ID de tu organización.
Para crear y etiquetar un secreto, ejecute los siguientes comandos con sus claves API y el ID 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 usa almacenamiento secreto externo, no necesita guardar información confidencial directamente en los secretos de Kubernetes. Para obtener más información, consulte Configurar almacenamiento secreto.
Cree el AtlasProject recurso personalizado.
Ejecute el siguiente comando para crear el AtlasProject recurso personalizado:
Nota
El siguiente ejemplo no spec.connectionSecretRef.name especifica. Si no se especifica, Atlas Kubernetes Operator usa el secreto de conexión predeterminado previamente configurado con sus claves de API y el ID de organización.
Implemente el recurso personalizado 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 AtlasDeployment recurso personalizado.
Ejecute 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.
Cree un secreto con una contraseña para iniciar sesión en la base de datos del clúster 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 usa almacenamiento secreto externo, no necesita guardar información confidencial directamente en los secretos de Kubernetes. Para obtener más información, consulte Configurar almacenamiento secreto.
Cree el AtlasDatabaseUser recurso personalizado.
Ejecute el siguiente comando para crear el AtlasDatabaseUser recurso personalizado:
Nota
spec.passwordSecretRef debe hacer referencia a la contraseña que usted 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
Verifique el estado de su usuario de base de datos.
Ejecute el siguiente comando hasta que reciba una respuesta True, 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 Atlas de nivel gratuito tarda 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}'
Recupere 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)'; Reemplace los siguientes marcadores de posición con los detalles de sus recursos personalizados:
my-projectEspecifique el valor del
metadatacampo de suAtlasProjectrecurso personalizado.my-atlas-clusterEspecifique el valor del
metadatacampo de suAtlasDeploymentrecurso personalizado.my-database-userEspecifique el valor del
metadatacampo de suAtlasDatabaseUserrecurso personalizado.Ejecuta el comando.
Nota
Las cadenas de conexión serán diferentes a las 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