Distribuir conjuntos de réplicas em um cluster multikubernetes
Nesta página
Use este procedimento para criar um novo conjunto de réplicas em um cluster Kubernetes de membros em uma implantação do MongoDB de cluster Kubernetes múltiplo.
Esse procedimento permite definir configurações diferentes para o recurso do conjunto de réplicas, como substituições para a configuração statefulSet. Como alternativa ao uso desse procedimento, você pode usar o Início Rápido de Multi-Kubernetes-Cluster, que cria um sistema do MongoDB de multi-Kubernetes cluster multi-Kubernetes com configurações padrão.
Antes de começar:
Saiba mais sobre sistemas de clusters multi-Kubernetes.
Revise a lista de serviços e ferramentas de vários clusters Kubernetes.
Instale o Operador Kubernetes em um sistema MongoDB de cluster multi-Kubernetes. Consulte Início Rápido do Multi-Kubernetes-Cluster.
Conclua os pré- requisitos.
Distribuir um MongoDBMultiCluster
recurso
Você pode usar os seguintes procedimentos nesta aba TLS-Encrypted Connections :
Implemente um recurso
MongoDBMultiCluster
Renovar certificados TLS para um recurso
MongoDBMultiCluster
Esses procedimentos estabelecem conexões criptografadas porTLS entre hosts MongoDB em um conjunto de réplicas e entre aplicativos cliente e deployments do MongoDB .
Antes de começar, você deve ter certificados válidos para criptografia TLS .
Distribua um MongoDBMultiCluster
recurso
Crie o segredo para o certificado TLS do seu MongoDBMultiCluster
recurso .
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
.
Crie o ConfigMap para vincular sua CA com seu MongoDBMultiCluster
recurso .
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>
Configure kubectl
o para utilizar o namespace do agrupamento central.
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
Copie e cole o recurso de amostra.
Copie o arquivo YAML do conjunto de réplicas de amostra e cole-o em um novo arquivo de texto.
Altere as configurações do arquivo para corresponder à configuração do conjunto de réplicas desejada.
1 # This example provides statefulSet overrides per cluster. 2 3 apiVersion: mongodb.com/v1 4 kind: MongoDBMultiCluster 5 metadata: 6 name: multi-replica-set 7 spec: 8 version: 6.0.0-ent 9 type: ReplicaSet 10 duplicateServiceObjects: false 11 credentials: my-credentials 12 opsManager: 13 configMapRef: 14 name: my-project 15 clusterSpecList: 16 - clusterName: cluster1.example.com 17 members: 2 18 statefulSet: 19 spec: 20 template: 21 spec: 22 containers: 23 # Example of custom sidecar containers. Remove it before using the file in production. 24 - name: sidecar1 25 image: busybox 26 command: [ "sleep" ] 27 args: [ "infinity" ] 28 # Use the following settings to override the default storage size of the "data" Persistent Volume. 29 volumeClaimTemplates: 30 - metadata: 31 name: data 32 spec: 33 resources: 34 requests: 35 storage: 1Gi 36 - clusterName: cluster2.example.com 37 members: 1 38 statefulSet: 39 spec: 40 template: 41 spec: 42 containers: 43 # Example of custom sidecar containers. Remove it before using the file in production. 44 - name: sidecar2 45 image: busybox 46 command: [ "sleep" ] 47 args: [ "infinity" ] 48 volumeClaimTemplates: 49 - metadata: 50 name: data 51 spec: 52 resources: 53 requests: 54 storage: 1Gi 55 - clusterName: cluster3.example.com 56 members: 1 57 statefulSet: 58 spec: 59 template: 60 spec: 61 containers: 62 # Example of custom sidecar containers. Remove it before using the file in production. 63 - name: sidecar3 64 image: busybox 65 command: [ "sleep" ] 66 args: [ "infinity" ] 67 volumeClaimTemplates: 68 - metadata: 69 name: data 70 spec: 71 resources: 72 requests: 73 storage: 1Gi 74 75 ...
Altere as configurações para seus valores preferidos.
Chave | Tipo | Descrição | Exemplo |
---|---|---|---|
string | Etiqueta para o recurso Os nomes de recursos devem ter 44 caracteres ou menos. Veja também | multi-replica-set | |
string | Versão do MongoDB que este recurso O formato deve ser 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 | |
string | Nome do ConfigMap com a configuração de conexão MongoDB Ops Manager do . A configuração 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 | <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 | 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 | <mycredentials> | |
string | Tipo de recurso MongoDB a ser criado. O único valor suportado para este campo é ReplicaSet . Consulte Limitações. | ReplicaSet |
Adicione quaisquer configurações aceitas adicionais para uma MongoDBMultiCluster
implantação de recurso do .
Você também pode adicionar quaisquer configurações opcionais ao objeto especificação. Consulte Especificação de recursos multi-Kubernetes-Cluster.
Salve este arquivo de configuração de conjunto de réplicas com uma .yaml
extensão .
Inicie o seu sistema de conjunto de réplicas .
Em qualquer diretório, invoque o seguinte comando do Kubernetes para criar seu conjunto de réplicas:
kubectl apply -f <replica-set-conf>.yaml
Monitore o status de sua implantação do MongoDB em cluster multi-Kubernetes.
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.
Renovar certificados TLS para um MongoDBMultiCluster
recurso
Renove periodicamente seus certificados TLS usando o procedimento a seguir.
Renove o segredo para um MongoDBMultiCluster
recurso .
Execute este kubectl
comando para renovar um segredo existente que armazena os certificados para o MongoDBMultiCluster
recurso :
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> \ --dry-run=client \ -o yaml | kubectl apply -f -
Este procedimento não criptografa conexões entre hosts MongoDB em um conjunto de réplicas e entre aplicativos cliente e MongoDB .
Distribua um MongoDBMultiCluster
recurso
Configure kubectl
o para utilizar o namespace do agrupamento central.
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
Copie e cole o recurso de amostra.
Copie o arquivo YAML do conjunto de réplicas de amostra e cole-o em um novo arquivo de texto.
Altere as configurações do arquivo para corresponder à configuração do conjunto de réplicas desejada.
1 # This example provides statefulSet overrides per cluster. 2 3 apiVersion: mongodb.com/v1 4 kind: MongoDBMultiCluster 5 metadata: 6 name: multi-replica-set 7 spec: 8 version: 6.0.0-ent 9 type: ReplicaSet 10 duplicateServiceObjects: false 11 credentials: my-credentials 12 opsManager: 13 configMapRef: 14 name: my-project 15 clusterSpecList: 16 - clusterName: cluster1.example.com 17 members: 2 18 statefulSet: 19 spec: 20 template: 21 spec: 22 containers: 23 # Example of custom sidecar containers. Remove it before using the file in production. 24 - name: sidecar1 25 image: busybox 26 command: [ "sleep" ] 27 args: [ "infinity" ] 28 # Use the following settings to override the default storage size of the "data" Persistent Volume. 29 volumeClaimTemplates: 30 - metadata: 31 name: data 32 spec: 33 resources: 34 requests: 35 storage: 1Gi 36 - clusterName: cluster2.example.com 37 members: 1 38 statefulSet: 39 spec: 40 template: 41 spec: 42 containers: 43 # Example of custom sidecar containers. Remove it before using the file in production. 44 - name: sidecar2 45 image: busybox 46 command: [ "sleep" ] 47 args: [ "infinity" ] 48 volumeClaimTemplates: 49 - metadata: 50 name: data 51 spec: 52 resources: 53 requests: 54 storage: 1Gi 55 - clusterName: cluster3.example.com 56 members: 1 57 statefulSet: 58 spec: 59 template: 60 spec: 61 containers: 62 # Example of custom sidecar containers. Remove it before using the file in production. 63 - name: sidecar3 64 image: busybox 65 command: [ "sleep" ] 66 args: [ "infinity" ] 67 volumeClaimTemplates: 68 - metadata: 69 name: data 70 spec: 71 resources: 72 requests: 73 storage: 1Gi 74 75 ...
Altere as configurações para seus valores preferidos.
Chave | Tipo | Descrição | Exemplo |
---|---|---|---|
string | Etiqueta para o recurso Os nomes de recursos devem ter 44 caracteres ou menos. Veja também | multi-replica-set | |
string | Versão do MongoDB que este recurso O formato deve ser 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 | |
string | Nome do ConfigMap com a configuração de conexão MongoDB Ops Manager do . A configuração 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 | <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 | 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 | <mycredentials> | |
string | Tipo de recurso MongoDB a ser criado. O único valor suportado para este campo é ReplicaSet . Consulte Limitações. | ReplicaSet |
Adicione quaisquer configurações aceitas adicionais para uma MongoDBMultiCluster
implantação de recurso do .
Você também pode adicionar quaisquer configurações opcionais ao objeto especificação. Consulte Especificação de recursos multi-Kubernetes-Cluster.
Salve este arquivo de configuração de conjunto de réplicas com uma .yaml
extensão .
Inicie o seu sistema de conjunto de réplicas .
Em qualquer diretório, invoque o seguinte comando do Kubernetes para criar seu conjunto de réplicas:
kubectl apply -f <replica-set-conf>.yaml
Monitore o status de sua implantação do MongoDB em cluster multi-Kubernetes.
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.