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
  • Compatibilidade com o modo local ou remoto
  • Limitações
  • Perguntas frequentes
  • 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 simples e seguros do que os containers não estáticos. Os containers estáticos são imutáveis no tempo de execução, o que significa que eles não mudam da imagem usada para criar o container. Além disso:

  • Durante a execução, os containers estáticos não baixam binários nem executam scripts ou outros utilitários por meio de conexões de rede. Os containers estáticos baixam apenas arquivos de configuração de tempo de execução.

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

  • Você pode executar verificações de segurança nas imagens do contêiner para determinar o que está realmente sendo executado como um contêiner ativo, e o contêiner que é executado não executará binários diferentes do que foi definido na imagem.

  • Os containers estáticos não exigem que você hospede o binário do MongoDB no MongoDB Ops Manager ou em outro servidorHTTPS , o que é especialmente útil se você tiver um ambiente com lacunas de ar.

  • 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 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 nesta página 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 por padrão, mas você pode usar seu próprio registro se o configurar para seus nós do Kubernetes .

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.

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ê usar containers estáticos, não precisará configurar o MongoDB Ops Manager para ser executado em Modo Local ou Modo Remoto, a menos que você use queryable backup. Na arquitetura de container estática, os binários do agente e mongod têm suas próprias imagens de container e elas não são baixadas do MongoDB Ops Manager.

Os queryable backups são a exceção porque, na arquitetura de contêiner não estática, por padrão, o Backup Daemon baixa e executa os binários do MongoDB Server para todas as versões das quais é feito backup. Esse comportamento padrão do MongoDB prejudica a natureza totalmente estática dos containers usados para executar o Backup Daemon. Se você usar queryable backup, ainda deverá hospedar os binários relevantes do MongoDB Server usando o modo local ou remoto. Para saber mais, consulte Configurar um recurso MongoDB Ops Manager para usar o Modo Local ou Configurar um recurso MongoDB Ops Manager para usar o Modo Remoto.

Se você usou o modo Remoto ou Local antes e não quer usar backups consultáveis, faça o seguinte para garantir que mongodb-enterprise-server imagens pode ser baixado nos nós usado pelos pods:

  1. Configure um registro de contêiner interno para seus nós do Kubernetes.

    Os nós irá baixar as imagens do Quay.io a menos que você use um registro de contêiner local.

  2. Baixee adicione as imagens.mongodb-enterprise-server

Se você habilitar containers estáticos:

  • Você deve desativar os 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 containers 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.

Não, se você usar containers estáticos, não precisará configurar o MongoDB Ops Manager para ser executado no Modo Local ou no Modo Remoto, a menos que você use queryable backups. Para saber mais, consulte Modos locais e remotos.

Os containers estáticos não baixam o binário do MongoDB no tempo de execução. Em vez disso, ele usa as imagens do mongodb-enterprise-server Repositório Quay.io. Para saber mais sobre as alterações, consulte a etapa 6.

Há muitas maneiras de determinar se seu sistema está usando um contêiner estático. Para saber mais, consulte a etapa 7.

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.

Se você quiser usar queryable backup, deverá configurar o recurso MongoDB Ops Manager para usar o Modo Local ou o Modo Remoto para que os binários de todas as versões em uso possam ser extraídos do MongoDB Ops Manager.

3

Não há containers de inicialização usados com a arquitetura de containers estáticos. Se uma substituição de um container de inicialização estiver presente, a migração de containers não estáticos para estáticos falhará.

Remova quaisquer substituições do StatefulSet para containers de inicialização da especificação de recursos do MongoDB ou da especificação de recursos do Ops Manager. Por exemplo, certifique-se de que nenhuma das seguintes configurações tenha sido definida para initContainers:

4

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.

5

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.

6

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.

7

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.

Quando você migra para containers estáticos, as seguintes alterações se aplicam:

  • Nós do Kubernetes use o registro de container configurado para realizar os downloads.

  • As versões do agente de monitoramento e do agente de automação estão alinhadas.

  • O Kubernetes Operator, em vez do agente, lida com as atualizações do MongoDB .

  • O Kubernetes Operator substitui as imagens existentes, o que causará uma reinicialização contínua.

8
  • Verifique o valor de uma das seguintes variáveis, que você deve ter definido como static:

    MDB_DEFAULT_ARCHITECTURE
    Variável para todos os sistemas.
    metadata.annotations[mongodb.com/v1.architecture]
    Variável por sistema.
  • Verifique o sistema de implantação de banco de dados de dados para verificar o uso de duas imagens separadas, uma para o agente e outra para MongoDB, e certifique-se de que nenhum contêiner de inicialização esteja implantado.

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