Menu Docs
Página inicial do Docs
/
Operador de Kubernetes do MongoDB Enterprise
/ /

Imagens de Container

Nesta página

  • Contêineres estáticos (visualização pública)
  • Arquitetura
  • Limitações
  • Migrar para contêineres estáticos
  • Migrar para contêineres não estáticos

Quando você instala o Operador Kubernetes, ele extrai as imagens do registro de contêiner Quay.io. As imagens do Kubernetes Operator são baseadas no sistema operacionalRed Hat UBI.8 O MongoDB reconstrói imagens do Kubernetes Operator diariamente para o sistema operacional mais recente e as atualizações da biblioteca de suporte.

As imagens oficiais oferecem os seguintes benefícios:

  • Eles são reconstruídos diariamente para as correções de vulnerabilidade upstream mais recentes.

  • O MongoDB os testa, mantém e oferece suporte.

Para ver todas as versões disponíveis de cada imagem, veja os links a seguir.

Nome da imagem
Descrição
Imagem do MongoDB Agent.
A imagem Enterprise MongoDB usada para containers estáticos e o banco de dados de aplicativos.
initContainer que contém os scripts de inicialização do banco de dados de aplicativo e o teste de preparação.
Imagem de ambiente de MongoDB database usada para contêineres não estáticos. Para saber mais sobre containers estáticos e não estáticos, consulte Containers estáticos (visualização pública).
initContainer imagem que contém os scripts de inicialização do MongoDB Agent e a análise de preparação.
Imagem do Ops Manager.
initContainer que contém os scripts de inicialização do Ops Manager e a análise de preparação.

Os containers estáticos são mais seguros e simples do que os containers não estáticos. Os containers estáticos são imutáveis no tempo de execução. Além disso:

  • Durante a execução, os containers estáticos não podem baixar binários ou executar scripts ou outros utilitários por meio de conexões de rede. Os containers estáticos só podem baixar arquivos de configuração de tempo de execução.

  • Durante a execução, os containers estáticos não podem modificar nenhum arquivo, exceto as montagens do volume de armazenamento.

  • Os containers estáticos não exigem que você verifique se há vulnerabilidades de segurança nos containers, ao contrário dos containers não estáticos que exigem verificação de segurança de containers. Se você usar containers estáticos, só poderá executar verificações de segurança nas próprias imagens de container, mas não em seus containers.

  • Se você tiver um ambiente com lacuna de ar, os contêineres estáticos não exigem que você hospede o binário do MongoDB no servidor que hospeda o MongoDB Ops Manager ou em outro servidorHTTPS .

  • Você não pode executar scripts CMD extensivos para o container estático.

  • Você não pode copiar arquivos entre containers estáticos usando initContainer.

Observação

Quando implantado como containers estáticos, um sistema do Kubernetes Operator consiste em dois containers - um container mongodb-agent e um container mongodb-enterprise-server. O recurso personalizado do banco de dados de dados MongoDB herda as definições de limite de recursos do contêiner mongodb-agent, que executa o processo mongod em um sistema de contêiner estático. Para modificar os limites de recursos do banco de banco de dados MongoDB , você deve especificar os limites de recursos desejados no mongodb-agent contêiner.

A partir do MongoDB Enterprise Kubernetes Operator 1.25, é possível usar a pré-visualização pública de contêineres estáticos em vez dos contêineres não estáticos existentes que baixam o binário do MongoDB do Cloud Manager MongoDB Ops Manager ou da Internet no tempo de execução. Você pode usar os procedimentos a seguir para habilitar ou desabilitar contêineres estáticos para todas as implantações do MongoDB ou individuais.

Os contêineres estáticos usam a imagem do mongodb-enterprise-server Repositório Quay.io.

A arquitetura dos containers estáticos e não estáticos difere significativamente e requer várias etapas para migrar de um para o outro. Para saber mais, consulte Migrar para containers estáticos e Migrar para containers não estáticos.

A arquitetura de contêiner não estático padrão pressupõe que você inicialize um contêiner de shell vazio, baixe e inicie o MongoDB Agent, que então baixa os binários para mongod e mongosh do Cloud Manager ou MongoDB Ops Manager.

Diagrama mostrando a arquitetura de alto nível de uma implementação do MongoDB com contêineres não estáticos configurados usando o MongoDB Enterprise Kubernetes Operator.
clique para ampliar

A arquitetura de contêiner estático utiliza afuncionalidade de namespace compartilhado do Kubernetes para executar o MongoDB Agent como um processo separado para que ele possa controlar o ciclo de vida completo do mongod e evitar o download de arquivos por uma rede.

Os containers estáticos são mais seguros e simples do que os containers não estáticos. Os containers estáticos são imutáveis no tempo de execução. Além disso:

  • Durante a execução, os containers estáticos não podem baixar binários ou executar scripts ou outros utilitários por meio de conexões de rede. Os containers estáticos só podem baixar arquivos de configuração de tempo de execução.

  • Durante a execução, os containers estáticos não podem modificar nenhum arquivo, exceto as montagens do volume de armazenamento.

  • Os containers estáticos não exigem que você verifique se há vulnerabilidades de segurança nos containers, ao contrário dos containers não estáticos que exigem verificação de segurança de containers. Se você usar containers estáticos, só poderá executar verificações de segurança nas próprias imagens de container, mas não em seus containers.

  • Se você tiver um ambiente com lacuna de ar, os contêineres estáticos não exigem que você hospede o binário do MongoDB no servidor que hospeda o MongoDB Ops Manager ou outro servidor HTTPS .

  • Você não pode executar scripts CMD extensivos para o container estático.

  • Você não pode copiar arquivos entre containers estáticos usando initContainer.

Observação

Quando implantado como containers estáticos, um sistema do Kubernetes Operator consiste em dois containers - um container mongodb-agent e um container mongodb-enterprise-server. O recurso personalizado do banco de dados de dados MongoDB herda as definições de limite de recursos do contêiner mongodb-agent, que executa o processo mongod em um sistema de contêiner estático. Para modificar os limites de recursos do banco de banco de dados MongoDB , você deve especificar os limites de recursos desejados no mongodb-agent contêiner.

Diagrama mostrando a arquitetura de alto nível de uma implementação do MongoDB com contêineres estáticos configurados usando o MongoDB Enterprise Kubernetes Operator.
clique para ampliar

Se você habilitar containers estáticos:

  • Você deve Desabilitar Queryable Backups para que o Backup Daemon Service não tente baixar os binários do MongoDB do MongoDB Ops Manager, o que prejudica a natureza imutável dos contêineres estáticos.

  • Com MongoDB Ops Manager, somente as versões 6.0.24, 7.0.5 ou posterior são compatíveis. O Kubernetes Operator usa automaticamente a versão correta do container do MongoDB Agent com base na versão do MongoDB Ops Manager selecionada para gerenciar uma sistema específica.

  • Com o MongoDB Cloud Manager, sua versão do MongoDB Agent pode ficar atrasada em relação à versão mais recente do MongoDB Cloud Manager porque o operador Kubernetes não pode chamar o endpoint agentVersion no MongoDB Cloud Manager. Para garantir que seu MongoDB Agent esteja atualizado com o MongoDB Cloud Manager, você pode executar uma das seguintes ações:

    • Especifique uma versão compatível do MongoDB Agent na especificação de MongoDB do MongoDB substituindo o StatefulSet imagem de contêiner para o MongoDB Agent. Por exemplo:

      podSpec:
      podTemplate:
      spec:
      containers:
      - name: mongodb-agent-ubi
      Image: 12.0.29.7785-1_1.24.0
    • Atualize o Kubernetes Operator para a versão mais recente, que atualiza automaticamente o MongoDB Agent.

  • Atualizar uma versão do MongoDB Atlas Triggers uma reinicialização contínua de todos os Pods, em ordem do último para o primeiro, e pode causar mais eleições, até o número de Pods. Isso vale para qualquer atualização que trigger uma reinicialização contínua.

  • Você não poderá determinar se ocorreu uma atualização do MongoDB database a partir do MongoDB Agent. Quando o Kubernetes rotaciona Pods após uma atualização, o MongoDB Agent substitui o arquivo de status de integridade para que você não saiba pelo status de integridade que ocorreu uma alteração de versão, apenas o status de integridade atual.

Para migrar de contêineres não estáticos para estáticos, defina as variáveis de ambiente do MongoDB Agent e habilite os contêineres estáticos seguindo as etapas abaixo. Você também pode habilitar contêineres estáticos durante a instalação ou atualização.

1
2

Siga o procedimento em Desativar queryable backups.

3

No arquivo de configuração do Kubernetes Operator, defina a variável de ambiente MDB_AGENT_IMAGE_REPOSITORY para especificar o repositório do qual o Kubernetes Operator baixa a imagem do MongoDB Agent para contêineres estáticos.

Em seu gráfico do Helm do Operador Kubernetes, defina registro. agente e agente.name para especificar o repositório do qual o Operador Kubernetes baixa a imagem do MongoDB Agent para contêineres estáticos.

4

Depois de salvar as alterações, aplique novamente sua configuração.

Se você usa o Kubernetes sem OpenShift, execute:

kubectl apply -f mongodb-enterprise.yaml

Se você usa Kubernetes com OpenShift:

oc apply -f mongodb-enterprise-openshift.yaml
helm upgrade enterprise-operator mongodb/enterprise-operator \
--set registry.pullPolicy='IfNotPresent'

Isso inicia uma reinicialização contínua de todos os Pods em seu sistema.

5

Selecione a guia apropriada abaixo para habilitar contêineres estáticos para todas as suas implantações do MongoDB de uma só vez, incluindo implantações existentes, ou uma implantação de cada vez.

Na especificação de recursos do MongoDB para uma implantação específica, defina a anotação metadata.annotations.mongodb.com/v1.architecture como static.

6

Depois de salvar as alterações, aplique novamente sua configuração.

Se você usa o Kubernetes sem OpenShift, execute:

kubectl apply -f <my-config-file>.yaml

Se você usa Kubernetes com OpenShift:

oc apply -f <my-config-file>.yaml
helm upgrade enterprise-operator mongodb/enterprise-operator \
--set <setting_1> --set <setting_2> --set operator.mdbDefaultArchitecture="static"

O Operador Kubernetes atualiza o StatefulSet imagens para seu sistema do MongoDB , fazendo a transição de um único container que anteriormente gerenciava tanto o MongoDB Agent quanto o banco de banco de dados do MongoDB para uma nova configuração com dois containers separados: um para o MongoDB Agent e outro para o banco de banco de dados do MongoDB . Esta atualização inicia uma reinicialização contínua.

Para migrar de contêineres estáticos para não estáticos, desative os contêineres estáticos seguindo as etapas abaixo. Você também pode desabilitar contêineres estáticos durante a instalação ou atualização.

1

Selecione a guia apropriada abaixo para desabilitar os contêineres estáticos para todas as suas implantações do MongoDB de uma só vez, incluindo as implantações existentes, ou uma implantação de cada vez.

No arquivo de configuração do Kubernetes Operator , defina MDB_DEFAULT_ARCHITECTURE ou operator.mdbDefaultArchitecture a non-static.

Na especificação de recursos do MongoDB para uma implantação específica, defina a anotação metadata.annotations.mongodb.com/v1.architecture como non-static.

2

Depois de salvar as alterações, aplique novamente sua configuração.

Se você usa o Kubernetes sem OpenShift, execute:

kubectl apply -f <my-config-file>.yaml

Se você usa Kubernetes com OpenShift:

oc apply -f <my-config-file>.yaml
helm upgrade enterprise-operator mongodb/enterprise-operator \
--set <setting_1> --set <setting_2> --set operator.mdbDefaultArchitecture="non-static"

O Operador Kubernetes substitui o StatefulSet imagens de seu sistema do MongoDB e inicia uma reinicialização contínua de todos os Pods em seu sistema.

Voltar

Compatibilidade