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

Implante conjuntos de réplicas em um cluster multi-Kubernetes sem uma interface de serviço

Nesta página

  • Antes de começar
  • Visão geral
  • Implemente um recurso do MongoDBMultiCluster sem uma malha de serviço

Use esse procedimento para implantar um conjunto de réplicas em um sistema do MongoDB de vários clusters Kubernetes sem usar uma tela de serviço para estabelecer conectividade externa entre clusters Kubernetes membros.

Como alternativa ao uso desse procedimento, você pode usar o Início Rápido do Multi-Kubernetes-Cluster, que usa uma malha de serviço.

Em um sistema do MongoDB de cluster multi-Kubernetes sem uma malha de serviço, use as seguintes configurações de recurso do MongoDBMultiCluster :

O procedimento a seguir estabelece conexões criptografadas por TLSentre hosts do MongoDB em um conjunto de réplicas e entre aplicativos clientes e deployments do MongoDB.

1

Execute o comando kubectl para criar um novo segredo que armazena o certificado de recurso MongoDBMultiCluster :

kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \
--namespace=<metadata.namespace> \
create secret tls <prefix>-<metadata.name>-cert \
--cert=<resource-tls-cert> \
--key=<resource-tls-key>

Observação

É necessário prefixar os segredos com <prefix>-<metadata.name>.

Por exemplo, se você chamar sua implantação my-deployment de e definir o prefixo como mdb, deverá nomear o segredo TLS para as comunicações TLS do cliente mdb-my-deployment-cert. Além disso, você deve nomear o segredo TLS para autenticação interna do cluster (se ativado) como mdb-my-deployment-clusterfile.

2

Execute o comando kubectl para vincular sua CA ao seu recurso MongoDBMultiCluster . Especifique o arquivo de certificado da CA que você deve sempre nomear ca-pem para o recurso MongoDBMultiCluster :

kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \
--namespace=<metadata.namespace> \
create configmap custom-ca -from-file=ca-pem=<your-custom-ca-file>
3

Se ainda não tiver feito isso, execute os seguintes comandos para executar todos os comandos kubectl no cluster central no namespace padrão.

kubectl config use-context $MDB_CENTRAL_CLUSTER_FULL_NAME
kubectl config set-context $(kubectl config current-context) \
--namespace=mongodb
4
  1. Copie o arquivo YAML do conjunto de réplicas de amostra e cole-o em um novo arquivo de texto.

  2. Altere as configurações do arquivo para corresponder à configuração do conjunto de réplicas desejada.

1# Provides statefulSet override per cluster
2
3apiVersion: mongodb.com/v1
4kind: MongoDBMultiCluster
5metadata:
6 name: multi-replica-set
7spec:
8 version: 6.0.0-ent
9 type: ReplicaSet
10 credentials: my-credentials
11 opsManager:
12 configMapRef:
13 name: my-project
14 externalAccess:
15 externalService:
16 annotations:
17 # Global cloud-specific annotations added to external services in all clusters
18 spec:
19 # ServiceSpec attributes to override in external services in all clusters
20 clusterSpecList:
21 - clusterName: cluster1.example.com
22 members: 2
23 externalAccess:
24 # Domain suffix that mongod processes will use in cluster1
25 externalDomain: cluster1.example.com
26 externalService:
27 annotations:
28 # Cloud-specific annotations for external services
29 spec:
30 # ServiceSpec attributes to override if necessary
31 - clusterName: cluster2.example.com
32 members: 1
33 externalAccess:
34 # Domain suffix that mongod processes will use in cluster2
35 externalDomain: cluster2.example.com
36 externalService:
37 annotations:
38 # Cloud-specific annotations for external services
39 spec:
40 # ServiceSpec attributes to override if necessary
41 - clusterName: cluster3.example.com
42 members: 1
43 externalAccess:
44 # Domain suffix that mongod processes will use in cluster3
45 externalDomain: cluster3.example.com
46 externalService:
47 annotations:
48 # Cloud-specific annotations for external services
49 spec:
50 # ServiceSpec attributes to override if necessary
51
52...
5

Especifique valores globais que afetam todos os clusters em um sistema MongoDB de cluster multi-Kubernetes usando o spec.externalAccess configurações e substituições específicas do cluster usando o spec.clusterSpecList.externalAccess.externalService configurações.

Quando você fornece essas configurações na especificação de recursos do MongoDBMultiCluster , o Kubernetes Operator cria serviços externos para cada Pod em todos os Kubernetes clusters. Em seguida, você usa esses serviços para estabelecer conectividade externa com todos os processos do mongod em seu sistema.

6

Defina um domínio externo para cada cluster de membro usando o spec.clusterSpecList.externalAccess.externalDomain configuração.

Como resultado, o Operador Kubernetes registra todos os processos do mongod no agrupamento de membro do Kubernetes em um nome de host de acordo com a seguinte convenção:

<pod-name>.<externalDomain>

Por exemplo, um processo do mongod pode ter o seguinte nome de host: my-replica-set-0-0.cluster-1.example.com.

7
Chave
Tipo
Descrição
Exemplo

string

Etiqueta para o recurso MongoDBMultiCluster .

Os nomes de recursos devem ter 44 caracteres ou menos.

Consulte também metadata.name e nomes na documentação do Kubernetes.

multi-replica-set

string

Versão do MongoDB que este recurso MongoDBMultiCluster deve executar.

O formato deve ser X.Y.Z para a edição Community e X.Y.Z-ent para a edição Enterprise.

IMPORTANTE: Certifique-se de escolher uma versão compatível do MongoDB Server. Versões compatíveis diferem dependendo da imagem base que o recurso do banco de banco de dados MongoDB utiliza.

Para saber mais sobre a versão MongoDB, consulte Versões do MongoDB no Manual MongoDB.

6.0.0-ent

spec
.opsManager
.configMapRef

string

Nome do ConfigMap com a configuração de conexão MongoDB Ops Manager do . A configuração spec.cloudManager.configMapRef.name é um nome alternativo para essa configuração e pode ser usada como substituto.

Esse valor deve existir no mesmo namespace que o recurso que você deseja criar.

IMPORTANTE: o operador Kubernetes rastreia quaisquer alterações no ConfigMap e reconcilia o estado do recurso MongoDB.

<my-project>

spec
.clusterSpecList
.clusterName

string

Nome do cluster no recurso MongoDBMultiCluster .

cluster1.example.com

spec
.clusterSpecList
.members

inteiro

O número de nós neste cluster.

2

spec
.clusterSpecList
.statefulSet
.spec

collection

Opcional.

Fornece a configuração para o StatefulSet substituição para cada um dos StatefulSets do cluster em uma implantação do MongoDB de cluster multi-Kubernetes. Se especificado em um nível de cluster individual em clusterSpecList, substitui a configuração global do StatefulSet para todo o sistema MongoDB do cluster multi-Kubernetes. Consulte Especificação de recursos multi-Kubernetes-Cluster e documentação do StatefulSet v apps do Kubernetes.1

Veja o exemplo.

spec
.clusterSpecList
.statefulSet
.spec
.volumeClaimTemplates
.spec

collection

Opcional. Se especificado, fornece uma substituição por cluster para o tamanho de armazenamento padrão do volumeClaimtemplates, para o volume persistente que armazena os dados.

Veja o exemplo.

string

Nome do secret que você criou como credenciais de autenticação da API do Ops Manager para o Kubernetes Operator se comunicar com o Ops Manager.

No Ops Manager, o secret do Kubernetes que contém as credenciais precisa existir no mesmo namespace que o recurso que você deseja criar.

IMPORTANTE: o operador do Kubernetes rastreia quaisquer alterações no Secret e reconcilia o estado do recurso MongoDB .

<mycredentials>

string

Tipo de recurso MongoDB a ser criado. O único valor suportado para este campo é ReplicaSet. Consulte Limitações.

ReplicaSet

8

Você também pode adicionar quaisquer configurações opcionais ao objeto especificação. Consulte Especificação de recursos multi-Kubernetes-Cluster.

9
10

Em qualquer diretório, invoque o seguinte comando do Kubernetes para criar seu conjunto de réplicas:

kubectl apply -f <replica-set-conf>.yaml
11
  1. Verifique o status dos serviços externos em todos os clusters de membros:

    kubectl get services

    O Kubernetes deve retornar um serviço externo criado para cada Pod do conjunto de réplicas em todos os clusters de membros.

  2. Verifique se cada serviço externo está exposto externamente e é acessível. Execute o comando semelhante ao exemplo a seguir:

    mongosh mongodb://my-replica-set-0-0.cluster-0.example.com:27017 \
    -tls -tlsCAFile "issuer-ca.pem"

    Conectar-se ao my-replica-set-0-0.cluster-0.example.com:27017 deve direcionar o tráfego do cliente para um serviço externo chamado my-replica-set-0-0-svc-external, que, por sua vez, direciona o tráfego para o processo mongod .

  3. Configure sua zona DNS para o domínio externo especificado para ponto para os serviços externos correspondentes. Essa configuração depende do seu ambiente ou do fornecedor de nuvem que você está usando.

12

Para verificar o status do seu recurso do MongoDBMultiCluster , utilize o seguinte comando no cluster central:

kubectl get mdbmc <resource-name> -o yaml -w

Com o sinalizador -w (inspeção) definido, quando a configuração muda, o resultado é atualizado imediatamente até que a fase de status atinja o estado Running . Para saber mais sobre os status de distribuição de recursos, consulte Solucionar problemas do operador Kubernetes.

Voltar

Implemente um recurso