Menu Docs
Página inicial do Docs
/
Operador de Kubernetes empresarial
/

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:

Você pode usar qualquer ferramenta de armazenamento de segredos compatível para qualquer segredo na documentação do MongoDB Enterprise 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 do MongoDB Enterprise Kubernetes Operator usam segredos do 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 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.

  • Ative a 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.

  • Crie uma função no Vault com o nome mongodbenterprise. A configuração de segredos no Operador Kubernetes depende da presença deste papel e seu nome exato.

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-enterprise-database-pods bound_service_account_namespaces={ServiceAccountNamespace}
vault write auth/kubernetes/role/{OpsManagerPolicyName}
bound_service_account_names=mongodb-enterprise-ops-manager bound_service_account_namespaces={ServiceAccountNamespace}
vault write auth/kubernetes/role/{AppDBPolicyName}
bound_service_account_names=mongodb-enterprise-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.

Você pode adaptar os comandos nesta etapa para vincular outras políticas substituindo o nome das contas de serviço. Para configurar outros aplicativos para usar o Vault, substitua {ServiceAccountName} no seguinte comando pela conta de serviço usada para o pod do aplicativo:

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

Antes de executar os comandos nesta etapa, certifique-se de ter criado uma função no Vault com o nome 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-enterprise.yaml ou mongodb-enterprise-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-enterprise-operator
namespace: production
spec:
replicas: 1
template:
metadata:
annotations:
vault.hashicorp.com/agent-inject: "true"
vault.hashicorp.com/role: "mongodbenterprise"

Se você estiver executando o Vault no modoTLS e especificou o valor operator.vaultSecretBackend.tlsSecretRef , o Kubernetes Operator adicionará as seguintes anotações. Caso contrário, adicione a seguinte linha destacada ao arquivo, substituindo {TLSSecret} pelo nome do 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.

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-enterprise.yaml ou mongodb-enterprise-openshift.yaml.

apiVersion: apps/v1
kind: Deployment
metadata:
name: mongodb-enterprise-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 estiver executando o Vault no modo TLS , você 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

Substitua os espaços reservados no arquivo config por estes valores. Salve o arquivo por um tipo de arquivo YAML substituindo a extensão de arquivo .txt por .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

Isto cria um ConfigMap denominado secret-configuration. Este ConfigMap contém o conteúdo do arquivo config.

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 o MongoDB Enterprise Kubernetes Operator, você pode:

Voltar

Habilitar autenticação

Nesta página