Você pode escolher onde armazenar informações confidenciais dos componentes que o Atlas Kubernetes Operator gerencia, mas o Atlas Kubernetes Operator precisa encontrar ossegredos do Kubernetes que espera. Você pode armazenar segredos para o Atlas Kubernetes Operator de várias maneiras, incluindo os seguintes métodos:
- Coloque informações confidenciais diretamente nos segredos do Kubernetes. Todos os tutoriais na documentação do Atlas Kubernetes Operator utilizam segredos do Kubernetes por padrão. Para usar segredos do Kubernetes, siga as etapas nos tutoriais. 
- Coloque informações confidenciais em um repositório do Github seguindo um fluxo do GitOps. Para armazenar dados confidenciais no git com segurança, você pode usar o FERRAMENTAS, como o Cloud Segredos, que criptografa segredos para o cluster de destino pretendido. 
- Coloque informações confidenciais em uma ferramenta externa de armazenamento de segredos, como o HashiCorp Vault ou as soluções de gerenciamento de segredos nativos do Hyperscalers. Uma ferramenta intermediária de provisionamento de segredos obtém informações confidenciais da ferramenta de armazenamento secreto externo e cria segredos Kubernetes a partir das informações confidenciais. Para saber mais sobre a ferramenta secreta de provisionamento, consulte Considerações. 
Este tutorial configura uma ferramenta externa de armazenamento de segredos para utilizar com o Atlas Kubernetes Operator. Este tutorial se concentra em configurações "sem segredos" que não exigem que o Atlas Kubernetes Operator crie e armazene um segredo para provisionar segredos para seu cluster do Kubernetes.
Considerações
O tutorial a seguir instala ou configura as seguintes ferramentas e opções:
- Uma ferramenta secreta de provisionamento. A ferramenta de provisionamento secreto utiliza um ou mais mecanismos de autenticação para recuperar as credenciais do serviço de gerenciamento secreto e criar segredos que o Atlas Kubernetes Operator pode utilizar. Este tutorial instala um dos seguintes FERRAMENTAS de provisionamento secreto de código aberto: 
- Autenticação para acessar segredos. Você pode usar métodos diferentes para autenticar as contas de serviço e namespaces que podem acessar segredos no HashiCorp Vault: - Para o Operador de segredos externos, este tutorial usa a autenticação de token da web OIDC JSON. Para saber mais, consulte Autenticação JSON web token/OIDC. 
- Para o Driver CSI do Secrets Store, este tutorial usa a autenticação do Kubernetes. 
 - Como alternativa, o KMS do seu fornecedor de cloud pode usar sistemas IAM nativos para fornecer essa autenticação, que não é abordada neste tutorial. Para saber como configurar o KMS do seu fornecedor de nuvem para autenticação, consulte os seguintes recursos na documentação do Operador de segredos externos: 
Pré-requisitos
Antes de concluir este tutorial, você precisa das seguintes ferramentas e configurações:
- Executando contas de serviço para Kubernetes, Atlas Kubernetes Operator e Atlas e privilégios suficientes para configurá-las. - Você precisa de um cluster Kubernetes em execução com nós que executam processadores com a arquitetura x86-64, AMD64 ou ARM64. Para este tutorial, o cluster do Kubernetes está - https://kube01.internal.ioescutando na porta padrão (443).- Você pode acessar o projeto Atlas Kubernetes Operator no GitHub: - Para instalar o Atlas Kubernetes Operator utilizando o Atlas CLI, execute o seguinte comando: - atlas kubernetes operator install [options] - Para saber mais sobre a sintaxe e os parâmetros do comando, consulte a documentação da Atlas CLI do Atlas para a instalação do Atlas Kubernetes Operator . - Para implementar o Atlas Kubernetes Operator, execute o seguinte comando. Substitua - <version>pelo número de versão mais recente.- kubectl apply -f https://raw.githubusercontent.com/mongodb/mongodb-atlas-kubernetes/<version>/deploy/all-in-one.yaml - Para registrar uma conta Atlas, consulte Criar uma Conta Atlas. 
- Chaves de API. Você deve criar uma chave de API e configurar o API Access List. - Você precisa das seguintes informações da chave de API pública, chave de API privada e ID da organização para configurar o acesso do Atlas Kubernetes Operator ao Atlas. - Se você quiser que o Atlas Kubernetes Operator crie um novo projeto do Atlas , concedaacesso programático a uma organização. Se sua organização exigir uma lista de acesso IP para a API Atlas Administration, você também deverá configurar a lista de acesso da API. - Importante- Você deve atribuir a chave API ao role da organização Organization Project Creator ou superior. 
- Se você quiser trabalhar com um projeto Atlas existente, adicione acesso a um projeto. Se sua organização exigir uma lista de acesso IP para a API Atlas Administration, você também deverá configurar a lista de acesso da API. - Importante- Você deve atribuir à chave de API ao role de projeto Project Owner . 
 
- Um cofre de armazenamento secreto. Este tutorial usa HashiCorp Vault, que é um serviço de terceiros para armazenamento de segredos, executado em - https://vault.internal.io.- Você pode usar outros cofres de armazenamento secretos com o Atlas Kubernetes Operator, conforme necessário, incluindo o cloud KMS da Amazon Web Services, Azure e Google. 
- Somente acesso interno. Para evitar a exposição de informações confidenciais pela Internet pública, os seguintes componentes da solução de armazenamento secreto permitem apenas o acesso interno: - O serviço HashiCorp Vault ou KMS. 
- O serviço de API de cluster do Kubernetes. 
- A rede interna. Este tutorial utiliza - internal.io.
 - Embora os componentes anteriores permitam apenas o acesso interno, eles permitem o acesso uns aos outros e permitem o acesso a qualquer pessoa dentro de sua equipe ou organização. Esta é uma prática recomendada para segurança. 
- Autoridades de Certificação Pública (CAs). Você pode usar CAs públicas para evitar o gerenciamento e a distribuição de certificados raiz CA personalizados. - Você pode automatizar o gerenciamento e a renovação de certificados CA usando qualquer uma das seguintes ferramentas: - Neste tutorial: - Todos os serviços HTTPs - internal.iosão endereços internos, mas seus sites HTTPS possuem certificados atualizados automaticamente assinados por uma CA pública.
- Não é necessário nenhum TLS mútuo (mTLS) para essa integração porque ele executa somente a validação HTTPS no lado do servidor. 
- Os clientes podem confiar nesses certificados de serviço sem provisionamento adicional de certificados. 
 
Procedimento
Siga estas etapas para configurar o armazenamento secreto para o Atlas Kubernetes Operator.
Instale a ferramenta de provisionamento secreto no cluster de destino.
Selecione uma ferramenta de provisionamento secreta para instalá-la.
Para usar o Operador de segredos externos como ferramenta de provisionamento secreto:
- Execute os seguintes comandos para instalar o External Secrets Operator com Helm Charts e iniciar o serviço: - helm repo add external-secrets https://charts.external-secrets.io - helm upgrade -i --atomic \ - -n external-secrets --create-namespace --set extraArgs.loglevel=debug \ - external-secrets external-secrets/external-secrets` 
- Certifique-se de que os segredos externos sejam executados com sucesso: - kubectl get pod -n external-secrets -l app.kubernetes.io/name=external-secrets - NAME READY STATUS RESTARTS AGE - external-secrets-5779d5d6f6-2lhgd 1/1 Running 0 70s 
Para usar o Driver CSI do Secrets Store como a ferramenta de provisionamento secreto, siga estas etapas:
- Execute o seguinte comando para instalar o Driver CSI do Secrets Store com Helm Charts e iniciar o serviço: - helm repo add secrets-store-csi-driver https://kubernetes-sigs.github.io/secrets-store-csi-driver/charts - helm upgrade -i --atomic --set syncSecret.enabled=true \ - -n kube-system csi-secrets-store secrets-store-csi-driver/secrets-store-csi-driver 
- Execute o comando a seguir para instalar o plugin-in Secrets Store CSI HashiCorp Vault com Helm Charts. Você não precisa instalar o servidor HashiCorp Vault ou o injetor de segredos. - helm install vault hashicorp/vault \ - --set "server.enabled=false" --set "injector.enabled=false" \ - --set "csi.enabled=true" 
- Certifique-se de que o CSI do Secrets Store seja executado com sucesso: - kubectl get pod -n kube-system -l app.kubernetes.io/name=secrets-store-csi-driver - NAME READY STATUS RESTARTS AGE - csi-secrets-store-secrets-store-csi-driver-6dcm8 3/3 Running 0 2m2s 
- Certifique-se de que o fornecedor de CSI do HashiCorp Vault seja executado com sucesso: - kubectl get pods -l app.kubernetes.io/name=vault-csi-provider - NAME READY STATUS RESTARTS AGE - vault-csi-provider-j7xbr 2/2 Running 0 5m39s 
Configure a autenticação para acessar segredos.
Para configurar o token web OIDC JSON web token e a autenticação Kubernetes :
- Execute o comando a seguir para habilitar a autenticação de token da web OIDC JSON para o caminho de montagem. Se você configurar vários clusters do Kubernetes , deverá ativar a autenticação de token da web OIDC JSON para o caminho de montagem de cada cluster. - vault auth enable -path=jwt-kube01 jwt 
- Execute o seguinte comando para permitir o acesso não autenticado aos URLs de descoberta do OIDC no cluster - kube01.internal.io:- $ kubectl create clusterrolebinding oidc-reviewer \ - --clusterrole=system:service-account-issuer-discovery \ - --group=system:unauthenticated 
- Execute o seguinte comando para direcionar HashiCorp Vault a confiar no cluster. O emissor do cluster em - https://kube01.internal.io/deve corresponder à URL no documento de descoberta do OIDC em- .well-known/openid-configuration.- curl https://kube01.internal.io/.well-known/openid-configuration | jq .issuer - https://kube01.internal.io/ - vault write auth/jwt-kube01/config jwks_url="https://kube01.internal.io/openid/v1/jwks" 
- Crie as políticas que permitem acesso aos segredos que você deseja expor ao cluster. - O exemplo a seguir cria a política - external-secretsque você especifica nas etapas posteriores.- echo external-secrets-policy.hcl - path "secret/data/kube01/external-secrets/*" { - capabilities = ["read"] - } 
- Execute o comando para criar uma função do HashiCorp Vault e vincular uma conta de serviço do Kubernetes à função, que restringe o acesso da conta de serviço dentro do HashiCorp Vault. - O comando a seguir cria a função - jwt-kube01-systemdo tipo JSON web token (OIDC) para o público- vault. O comando especifica a declaração de usuário- sube a conta de serviço- defaultdo Kubernetes no namespace- mongodb-atlas-systemcomo o assunto vinculado. Este comando vincula a função ao conjunto de permissões da política- external-secretsno HashiCorp Vault.- vault write auth/jwt-kube01/role/jwt-kube01-system role_type="jwt" bound_audiences=vault \ - user_claim="sub" bound_subject="system:serviceaccount:mongodb-atlas-system:default" \ - policies="external-secrets" 
- Execute o comando - defaultpara criar outro role para o External Secrets Operator acessar o namespace .- O comando a seguir cria a função - jwt-kube01-defaultdo tipo JSON web token (OIDC) para o público- vault. Este comando especifica a declaração de usuário- sube a conta de serviço- defaultdo Kubernetes no namespace- defaultcomo o assunto vinculado. Este comando vincula a função ao conjunto de permissões da política- external-secretsno HashiCorp Vault.- vault write auth/jwt-kube01/role/jwt-kube01-default role_type="jwt" bound_audiences=vault \ - user_claim="sub" bound_subject="system:serviceaccount:default:default" \ - policies="external-secrets" 
- Garanta que a autenticação OIDC seja executada com sucesso para a conta de serviço do sistema: - export TEST_JWT_TOKEN=$(kubectl -n mongodb-atlas-system create token default --audience "vault") - vault write auth/jwt-kube01/login role=jwt-kube01-system jwt=$(TEST_JWT_TOKEN) - Atlas Kubernetes Operator retorna suas credenciais de token da web OIDC JSON web token para a conta de serviço do sistema. 
- Garanta que a autenticação OIDC seja executada com sucesso para a conta de serviço padrão: - export TEST_JWT_TOKEN=$(kubectl -n default create token default --audience "vault") - vault write auth/jwt-kube01/login role=jwt-kube01-default jwt=$(TEST_JWT_TOKEN) - Atlas Kubernetes Operator retorna suas credenciais de token da web OIDC JSON web token para a conta de serviço padrão. 
Para configurar a autenticação do Kubernetes:
- Execute o comando a seguir para habilitar a autenticação do Kubernetes para o caminho de montagem. Se você configurar vários clusters Kubernetes, deverá habilitar a autenticação do Kubernetes para o caminho de montagem de cada cluster. - vault auth enable -path=jwt-kube01 kubernetes - Quando você instala com o Helm, ele configura automaticamente a vinculação de função do cluster. 
- Crie políticas que permitam acesso aos segredos que você deseja expor no cluster. - O exemplo a seguir cria a política - vault-secretusada nas etapas posteriores. Ele usa- vault, um segredo do Kubernetes vinculado à conta de serviço HashiCorp Vault que o fornecedor Helm Chart CSI configura.- echo vault-secret.yaml - apiVersion: v1 - kind: Secret - metadata: - name: vault - annotations: - kubernetes.io/service-account.name: vault - type: kubernetes.io/service-account-token - $ kubectl apply -f vault-secret.yaml 
- Execute os comandos para confiar no cluster Kubernetes e usar a autenticação Kubernetes: - export VAULT_JWT ?= $(shell kubectl get secret/vault -o jsonpath='{.data.token}' |base64 -d) - vault write auth/k8s-kube01/config kubernetes_host="kube01.internal.io" token_reviewer_jwt=$(VAULT_JWT) 
- Execute o comando para criar uma função do HashiCorp Vault e vincular uma conta de serviço do Kubernetes à função, que restringe o acesso da conta de serviço dentro do HashiCorp Vault. - O comando a seguir cria a função - k8s-kube01no- auth/k8s-kube01vinculado à conta de serviço do Kubernetes nos namespaces- defaultou- mongodb-atlas-system. Esta função está vinculada à política de permissões do- secrets-storedentro HashiCorp Vault.- vault write auth/k8s-kube01/role/k8s-kube01-role \ - bound_service_account_names=default,mongodb-atlas-operator \ - bound_service_account_namespaces=default,mongodb-atlas-system \ - policies=secrets-store - As políticas devem existir e permitir acesso aos segredos. A política de exemplo a seguir permite acesso aos segredos KV v2 no caminho - kube01/secrets-store:- path "secret/data/kube01/secrets-store/*" { - capabilities = ["read"] - } 
- Verifique se a autenticação do Kubernetes é executada com sucesso para a conta de serviço do sistema: - export TEST_JWT_TOKEN=$( kubectl create -n mongodb-atlas-system token mongodb-atlas-operator) - vault write auth/jwt-kube01/login role=jwt-kube01-system jwt=$(TEST_JWT_TOKEN) 
- Certifique-se de que a autenticação do Kubernetes seja executada com sucesso para a conta padrão: - export TEST_JWT_TOKEN=$(kubectl -n default create token default) - vault write auth/jwt-kube01/login role=jwt-kube01-default jwt=$(TEST_JWT_TOKEN) 
Configure o provisionamento automático de segredos.
Para provisionar segredos com o Operador de segredos externo:
- Implemente o recurso personalizado - SecretStorepara a conta de serviço- defaultno namespace- mongodb-atlas-system:- $ cat external-secrets/vault-system.yaml - apiVersion: external-secrets.io/v1beta1 - kind: SecretStore - metadata: - name: vault-store - namespace: mongodb-atlas-system - spec: - provider: - vault: - server: "https://vault.internal.io" - path: "secret" - version: "v2" - auth: - jwt: - path: "jwt-kube01" - role: "jwt-kube01-system" - kubernetesServiceAccountToken: - expirationSeconds: 600 - serviceAccountRef: - name: "default" - audiences: - - vault - $ kubectl apply -f external-secrets/vault-system.yaml 
- Implemente o recurso personalizado - SecretStorepara a conta de serviço- defaultno namespace- default:- $ cat external-secrets/vault-default.yaml - apiVersion: external-secrets.io/v1beta1 - kind: SecretStore - metadata: - name: vault-store - namespace: default - spec: - provider: - vault: - server: "https://vault.internal.io" - path: "secret" - version: "v2" - auth: - jwt: - path: "jwt-kube01" - role: "jwt-role" - kubernetesServiceAccountToken: - expirationSeconds: 600 - serviceAccountRef: - name: "default" - audiences: - - vault - $ kubectl apply -f external-secrets/vault-default.yaml 
- Implemente o recurso personalizado do - ExternalSecretque referencia o segredo que contém a chave API. Você deve definir- spec.target.template.metadata.labelscomo- atlas.mongodb.com/typecom o valor- credentialspara o Atlas Kubernetes Operator encontrar o segredo que o External Secrets Operator cria.- Antes de executar o seguinte comando, certifique-se de que o HashiCorp Vault tenha o segredo preenchido no caminho Kv V2 - secret/data/kube01/external-secrets/atlas-accountcom as seguintes propriedades:- orgId
- publicApiKey
- privateApiKey
 - $ cat external-secrets/atlas.yaml - apiVersion: external-secrets.io/v1beta1 - kind: ExternalSecret - metadata: - name: atlas - namespace: mongodb-atlas-system - spec: - refreshInterval: "15s" - secretStoreRef: - name: vault-store - kind: SecretStore - target: - name: mongodb-atlas-operator-api-key - template: - metadata: - labels: - atlas.mongodb.com/type: credentials - data: - - secretKey: orgId - remoteRef: - key: secret/data/kube01/external-secrets/atlas-account - property: orgId - - secretKey: publicApiKey - remoteRef: - key: secret/data/kube01/external-secrets/atlas-account - property: publicApiKey - - secretKey: privateApiKey - remoteRef: - key: secret/data/kube01/external-secrets/atlas-account - property: privateApiKey - $ kubectl apply -f external-secrets/atlas.yaml - Este comando cria o segredo do Kubernetes - mongodb-atlas-operator-api-keyno namespace- mongodb-atlas-system.
- Deploy the - ExternalSecretcustom resource that references the secret that contains database user credentials. Você deve definir- spec.target.template.metadata.labelscomo- atlas.mongodb.com/typecom o valor- credentialspara o Atlas Kubernetes Operator encontrar o segredo que o External Secrets Operator cria.- Antes de executar o comando a seguir, verifique se o HashiCorp Vault tem o segredo preenchido no caminho Kv V2 - secret/data/kube01/external-secrets/db-usercom a propriedade- password.- $ cat external-secrets/dbuser.yaml - apiVersion: external-secrets.io/v1beta1 - kind: ExternalSecret - metadata: - name: dbuser - namespace: default - spec: - refreshInterval: "15s" - secretStoreRef: - name: vault-store - kind: SecretStore - target: - name: dbuser-password - template: - metadata: - labels: - atlas.mongodb.com/type: credentials - data: - - secretKey: password - remoteRef: - key: secret/data/kube01/external-secrets/db-user - property: password - $ kubectl apply -f external-secrets/atlas.yaml 
- Certifique-se de que os segredos retornam conforme o esperado ao executar os seguintes comandos: - $ kubectl get -n mongodb-atlas-system secrets/mongodb-atlas-operator-api-key - $ kubectl get -n default secrets/dbuser-password 
Para provisionar segredos com o CSI do Secrets Store:
- Implemente o recurso personalizado do - SecretProviderClassno namespace do- mongodb-atlas-system. Você deve definir- spec.secretObjects.labelscomo- atlas.mongodb.com/typecom o valor- credentialspara o Atlas Kubernetes Operator encontrar o segredo criado pelo CSI do Secrets Store.- Antes de executar o seguinte comando, certifique-se de que o HashiCorp Vault tenha o segredo preenchido no caminho Kv V2 - secret/data/kube01/external-secrets/atlas-accountcom as seguintes propriedades:- orgId
- publicApiKey
- privateApiKey
 - $ cat secrets-store/atlas.yaml - apiVersion: secrets-store.csi.x-k8s.io/v1 - kind: SecretProviderClass - metadata: - name: atlas - namespace: mongodb-atlas-system - spec: - provider: vault - secretObjects: - - data: - - key: orgId - objectName: atlas-org - - key: publicApiKey - objectName: atlas-pub-key - - key: privateApiKey - objectName: atlas-secret-key - secretName: mongodb-atlas-operator-api-key - type: Opaque - labels: - atlas.mongodb.com/type: credentials - parameters: - vaultAddress: https://vault.internal.io - vaultKubernetesMountPath: k8s-kube01 - roleName: k8s-kube01-role - objects: | - - objectName: atlas-org - secretPath: secret/data/kube01/secrets-store/atlas-account - secretKey: orgId - - objectName: atlas-pub-key - secretPath: secret/data/kube01/secrets-store/atlas-account - secretKey: publicApiKey - - objectName: atlas-secret-key - secretPath: secret/data/kube01/secrets-store/atlas-account - secretKey: privateApiKey - $ kubectl apply -f secrets-store/atlas.yaml - Este comando cria o segredo do Kubernetes - mongodb-atlas-operator-api-keyno namespace- mongodb-atlas-system.
- Execute o seguinte comando para adicionar um pod que monta os segredos necessários: - $ cat secrets-store/ako-patch.yaml - template: - spec: - containers: - - name: system-secret-placeholder - image: mongodb/atlas - command: ["sleep", "infinity"] - volumeMounts: - - name: secrets-store-mount - mountPath: "/mnt/secrets-store" - readOnly: true - volumes: - - name: secrets-store-mount - csi: - driver: secrets-store.csi.k8s.io - readOnly: true - volumeAttributes: - secretProviderClass: atlas - $ kubectl apply -f secrets-store/ako-patch.yaml 
- Implemente o - SecretProviderClassrecurso personalizado que referencia o segredo que contém credenciais de usuário de banco de dados . Você deve definir- spec.target.template.metadata.labelscomo- atlas.mongodb.com/typecom o valor- credentialspara o Atlas Kubernetes Operator para encontrar o segredo criado pelo CSI do Secrets Store.- Antes de executar o comando a seguir, verifique se o HashiCorp Vault tem o segredo preenchido no caminho Kv V2 - secret/data/kube01/external-secrets/db-usercom a propriedade- password.- $ cat external-secrets/dbuser.yaml - apiVersion: external-secrets.io/v1beta1 - kind: SecretProviderClass - metadata: - name: dbuser - namespace: default - spec: - provider: vault - secretObjects: - - data: - - key: password - objectName: dbuser - secretName: dbuser-password - type: Opaque - labels: - atlas.mongodb.com/type: credentials - parameters: - vaultAddress: https://vault.internal.io - vaultKubernetesMountPath: k8s-kube01 - roleName: k8s-kube01-role - objects: | - - objectName: "dbuser" - secretPath: "secret/data/kube01/secrets-store/db-user" - secretKey: "password" - $ kubectl apply -f secrets-store/dbuser.yaml 
- Execute o seguinte comando para criar o pod sentido horário do - secret-placeholder, que garante que o driver CSI do Secrets Store busque as credenciais do- dbusere sincronize-as com o Kubernetes:- $ cat secrets-store/placeholder.yaml - kind: Pod - apiVersion: v1 - metadata: - name: secret-placeholder - spec: - containers: - - image: mongodb/atlas - command: ["sleep", "infinity"] - name: secret-placeholder - volumeMounts: - - name: secrets-store-mount - mountPath: "/mnt/secrets-store" - readOnly: true - volumes: - - name: secrets-store-mount - csi: - driver: secrets-store.csi.k8s.io - readOnly: true - volumeAttributes: - secretProviderClass: dbuser - $ kubectl apply -f secrets-store/placeholder.yaml 
- Certifique-se de que os segredos retornam conforme o esperado ao executar os seguintes comandos: - $ kubectl get -n mongodb-atlas-system secrets/mongodb-atlas-operator-api-key - $ kubectl get -n default secrets/dbuser-password 
Implemente recursos personalizados do Atlas Kubernetes Operator.
Agora você pode implantar recursos personalizados do Atlas Kubernetes Operator . O Atlas Kubernetes Operator autentica com os segredos do Kubernetes que fazem referência ao seu HashiCorp Vault. Ajuste os valores do timeout conforme necessário para seus sistemas.
kubectl apply -f ako/project.yaml kubectl apply -f ako/deployment.yaml kubectl apply -f ako/user.yaml kubectl wait --for=condition=ready atlasdeployment/serverless-deployment --timeout=10m kubectl wait --for=condition=ready atlasdatabaseuser/user --timeout=10m 
Para saber mais sobre esses recursos personalizados, consulte Recursos personalizados.
Teste o sistema do Atlas Kubernetes Operator.
Para testar seu sistema do Atlas Kubernetes Operator, execute o seguinte comando:
export ATLAS_DEPLOYMENT_CONN_STR=$(kubectl get secrets/test-atlas-operator-project-test-serverless-deployment-dbuser -o jsonpath='{.data.connectionStringStandardSrv}' |base64 -d) mongosh $(ATLAS_DEPLOYMENT_CONN_STR) --apiVersion 1 --eval "show dbs" 
O Atlas Kubernetes Operator retorna uma lista dos seus comandos de reconhecimento de data center.