Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Configurar armazenamento secreto

Você pode escolher a ferramenta de armazenamento secreta para o Kubernetes Operator. A ferramenta de armazenamento secreta é um local seguro para armazenar informações confidenciais para os componentes que o Kubernetes Operator managed. Isso inclui segredos para reconhecimento de data center MongoDB, Ops Manager e AppDB.

Depois de configurar o armazenamento secreto, o Kubernetes Operator acessa a ferramenta, recupera os segredos e os usa para estabelecer conexões com segurança.

O Kubernetes Operator oferece suporte às seguintes ferramentas de armazenamento secreto:

  • Kubernetes: store sensitive information as secrets (the built-in secret storage for Kubernetes). Kubernetes secrets store authentication credentials so that only Kubernetes can access them.

  • HashiCorp Vault: armazene informações confidenciais no Vault, um serviço de terceiros para gerenciamento secreto.

Você pode usar qualquer ferramenta de armazenamento de segredos com suporte para qualquer segredo na documentação Controladores do MongoDB para Kubernetes Operator, exceto aqueles listados nas limitações.

Importante

Após a configuração, o Kubernetes Operator usa sua ferramenta de armazenamento de segredos selecionada para todos os segredos, exceto aqueles listados nas limitações. Você não pode misturar e combinar ferramentas de armazenamento secreto.

Existem as seguintes limitações para as ferramentas de armazenamento de segredos suportadas:

Para definir a ferramenta de armazenamento secreto, selecione uma das seguintes opções:

Todos os tutoriais nesta documentação de Controladores MongoDB para Operador Kubernetes usam segredos Kubernetes por padrão. Para usar segredos do Kubernetes para armazenar segredos para o Operador Kubernetes, prossiga com a instalação do Operador Kubernetes e siga as etapas nos tutoriais.

Para usar o HashiCorp Vault para armazenar segredos para o Operador Kubernetes, conclua o procedimento a seguir.

Antes de começar, você deve:

  • Configure uma instância do Vault. O cluster Kubernetes em que o Operador Kubernetes está sendo executado deve ter acesso à instância do Vault.

    Observação

    Certifique-se de que o Vault não esteja em execução no modo de desenvolvimento e que a instalação do Vault siga todas as recomendações de configuraçãoaplicáveis.

  • Habilitar autenticação do Kubernetes para a instância do Vault. Isso permite que você autentique com o Vault.

  • Implemente o injetor de sidecar do Vault Agent no cluster Kubernetes. Isso permite que você injete segredos do Vault em seus Pods Kubernetes.

  • Baixe os quatro arquivos de políticas do Vault para o Kubernetes Operator, banco de dados MongoDB, Ops Manager e AppDB.

  • Create a role in Vault with the name mongodbenterprise. The configuration of secrets in the Kubernetes Operator relies on the presence of this role and its exact name.

1

Escreva as políticas para os Kubernetes Operator, MongoDB database, MongoDB Ops Manager e AppDB no Vault usando o comando a seguir, substituindo as variáveis pelos valores na tabela:

Espaço reservado
Descrição

{PolicyName}

Rótulo legível por humanos que identifica a política que você está criando no Vault.

{PathToPolicyFile}

O caminho absoluto para o arquivo de política que você baixou.

vault policy write {PolicyName} {PathToPolicyFile}

Repita o comando para todos os recursos que você está adicionando ao Vault.

2

Vincule os roles do Vault às políticas para o Kubernetes Operator, MongoDB database, MongoDB Ops Manager e AppDB usando os quatro comandos a seguir, substituindo as variáveis pelos valores na tabela:

Espaço reservado
Descrição

{OperatorPolicyName}

Um rótulo legível por humanos que identifica a política do Kubernetes Operator no Vault.

{DatabasePolicyName}

Um rótulo legível por humanos que identifica a política de MongoDB database no Vault.

{OpsManagerPolicyName}

Um etiqueta legível por humanos que identifica a política do MongoDB Ops Manager no Vault.

{AppDBPolicyName}

Um etiqueta legível por humanos que identifica a política do AppDB no Vault.

{ServiceAccountNamespace}

Etiqueta que identifica o namespace da conta de serviço vinculada ao seu pod.

vault write auth/kubernetes/role/{OperatorPolicyName}
bound_service_account_names=enterprise-operator bound_service_account_namespaces={ServiceAccountNamespace}
vault write auth/kubernetes/role/{DatabasePolicyName}
bound_service_account_names=mongodb-kubernetes-database-pods bound_service_account_namespaces={ServiceAccountNamespace}
vault write auth/kubernetes/role/{OpsManagerPolicyName}
bound_service_account_names=mongodb-kubernetes-ops-manager bound_service_account_namespaces={ServiceAccountNamespace}
vault write auth/kubernetes/role/{AppDBPolicyName}
bound_service_account_names=mongodb-kubernetes-appdb bound_service_account_namespaces={ServiceAccountNamespace}

Esses comandos garantem que os pods de cada componente tenham somente o acesso especificado em sua política.

Observação

Esta etapa concede ao Operador do Kubernetes acesso ao Vault. Para usar o Vault com aplicativos que o operador Kubernetes não gerencia, você deve gravar e vincular políticas do Vault para esses aplicativos.

You can adapt the commands in this step to bind other policies by replacing the name of the service accounts. To configure other applications to use Vault, replace the {ServiceAccountName} in the following command with the service account used for the application's pod:

vault write auth/kubernetes/role/{PolicyName}
bound_service_account_names={ServiceAccountName} bound_service_account_namespaces={ServiceAccountNamespace}
3

Before running commands in this step, ensure that you have created a Vault role with the name mongodbenterprise.

Adicione as seguintes linhas realçadas à seção spec.template.metadata.annotations do seu arquivo de sistema do Kubernetes Operator. Para a maioria dos usuários, o nome desse arquivo é mongodb-kubernetes.yaml ou mongodb-kubernetes-openshift.yaml.

Observação

Se você instalou o Operador Kubernetes usando o Helm e definiu operator.vaultSecretBackend.enabled como true, o Operador Kubernetes adicionará as seguintes anotações. Você pode prosseguir para a próxima etapa.

apiVersion: apps/v1
kind: Deployment
metadata:
name: mongodb-kubernetes-operator
namespace: production
spec:
replicas: 1
template:
metadata:
annotations:
vault.hashicorp.com/agent-inject: "true"
vault.hashicorp.com/role: "mongodbenterprise"

If you're running Vault in TLS mode, and specified the operator.vaultSecretBackend.tlsSecretRef value, the Kubernetes Operator adds the following annotations. Otherwise, add the following highlighted line to the file, replacing {TLSSecret} with the name of the secret containing a ca.crt entry. The content of the ca.crt entry must match the certificate of the CA used to generate the Vault TLS certificates.

annotations:
vault.hashicorp.com/agent-inject: "true"
vault.hashicorp.com/role: "mongodbenterprise"
vault.hashicorp.com/tls-secret: {TLSSecret}
vault.hashicorp.com/ca-cert: /vault/tls/ca.crt
4

Adicione as seguintes linhas realçadas à seção spec.env do seu arquivo de sistema do Kubernetes Operator. Para a maioria dos usuários, o nome desse arquivo é mongodb-kubernetes.yaml ou mongodb-kubernetes-openshift.yaml.

apiVersion: apps/v1
kind: Deployment
metadata:
name: mongodb-kubernetes-operator
namespace: production
spec:
env:
- name: OPERATOR_ENV
value: ENVIRONMENT_NAME
- name: SECRET_BACKEND
value: VAULT_BACKEND

Isso define a variável de ambiente do Vault no Kubernetes.

5

Usando seu aplicação de edição de texto preferido, crie um arquivo chamado config. Cole o seguinte texto no arquivo:

apiVersion: v1
kind: ConfigMap
metadata:
name: secret-configuration
namespace: {Namespace}
data:
VAULT_SERVER_ADDRESS: {VaultServerAddress}
OPERATOR_SECRET_BASE_PATH: mongodbenterprise/operator
DATABASE_SECRET_BASE_PATH: mongodbenterprise/database
OPS_MANAGER_SECRET_BASE_PATH: mongodbenterprise/opsmanager
APPDB_SECRET_BASE_PATH: mongodbenterprise/appdb

Os caminhos neste arquivo são os caminhos padrão. Você pode substituí-los por seus caminhos de base se tiver personalizado a configuração do Kubernetes Operator.

Se você estiver executando o Vault no modo TLS , também deverá adicionar a seguinte linha destacada ao arquivo:

OPS_MANAGER_SECRET_BASE_PATH: mongodbenterprise/opsmanager
APPDB_SECRET_BASE_PATH: mongodbenterprise/appdb
TLS_SECRET_REF: {TLSSecret}
6

Replace the placeholders in the config file with these values. Save the file with a YAML file type by replacing the .txt file extension with .yaml.

Espaço reservado
Descrição

{Namespace}

O namespace que você criou para o Operador Kubernetes. O namespace padrão é mongodb.

{VaultServerAddress}

O endereço que o Kubernetes Operator deve usar para se conectar ao Vault.

{TLSSecret}

Nome de um segredo contendo uma entrada ca.crt . O conteúdo da entrada ca.crt deve corresponder ao certificado da CA usada para gerar os certificados Vault TLS.

7

Emitir o seguinte comando para criar um ConfigMap contendo as informações do Vault:

kubectl create configmap secret-configuration --from-file=config.yaml

This creates a ConfigMap named secret-configuration. This ConfigMap contains the contents of the config file.

8

Você deve migrar manualmente os seguintes segredos para armazená-los no Vault:

Para migrar ou criar manualmente novos segredos, adicione-os ao Vault. Depois de adicioná-los ao Vault, você poderá removê-los do Kubernetes.

Todos os outros segredos que o Kubernetes Operator cria migram automaticamente, e o Kubernetes Operator usa o Vault para novos segredos. Os segredos criados pelo usuário devem ser adicionados ao Vault.

Observação

cert-manager recria automaticamente os segredos do Kubernetes que ele gera se você excluí-los do Kubernetes. Você deve gerenciar manualmente a remoção desses segredos ou parar de usar o cert-manager para evitar o armazenamento dos segredos no Kubernetes.

Depois de configurar a ferramenta de armazenamento secreto para os Controladores MongoDB para Kubernetes Operator, você pode: