Antes de criar um sistema MongoDB de cluster multi-Kubernetes usando o início rápido ou um procedimento de sistema, conclua as tarefas a seguir.
Para saber mais sobre os pré-requisitos específicos para o início rápido, consulte Pré- requisitos do Quick Start.
Revise as arquiteturas de hardware suportadas
Clone os drivers MongoDB para repositório do operador Kubernetes
Clone o repositório do MongoDB Controladores para o Operador Kubernetes:
git clone https://github.com/mongodb/mongodb-kubernetes.git
Definir variáveis de ambiente
Defina as variáveis de ambiente com nomes de cluster onde você distribui os clusters, como neste exemplo:
export MDB_CENTRAL_CLUSTER_FULL_NAME="mdb-central" export MDB_CLUSTER_1_FULL_NAME="mdb-1" export MDB_CLUSTER_2_FULL_NAME="mdb-2" export MDB_CLUSTER_3_FULL_NAME="mdb-3"
Instalar o Go e o Helm
Instale as seguintes ferramentas:
Instale o Go 1v.17 ou posterior.
Entender as funções e vinculações de funções do Kubernetes
Para usar um sistema do MongoDB de cluster multi-Kubernetes, você deve ter um conjunto específico de Kubernetes Roles, ClusterRoles, RoleBindings, ClusterRoleBindings e ServiceAccounts, que você pode configurar de qualquer uma das seguintes maneiras:
Siga o Início Rápido de Multi-Kubernetes-Cluster, que informa como usar o plugin doMongoDB para criar automaticamente os objetos necessários e aplicá-los aos clusters apropriados dentro de sua implantação do MongoDB de clusters multi-Kubernetes.
Usar elmo para configurar as roles necessárias do Kubernetes e as contas de serviço para cada cluster de membros:
helm template --show-only \ templates/database-roles.yaml \ mongodb/mongodb-kubernetes \ --set namespace=mongodb | \ kubectl apply -f - \ --context=$MDB_CLUSTER_1_FULL_NAME \ --namespace mongodb helm template --show-only \ templates/database-roles.yaml \ mongodb/mongodb-kubernetes \ --set namespace=mongodb | \ kubectl apply -f - \ --context=$MDB_CLUSTER_2_FULL_NAME \ --namespace mongodb helm template --show-only \ templates/database-roles.yaml \ mongodb/mongodb-kubernetes \ --set namespace=mongodb | \ kubectl apply -f - \ --context=$MDB_CLUSTER_3_FULL_NAME \ --namespace mongodb Crie manualmente arquivos de objeto
.yamldo Kubernetes e adicione as funções e contas de serviço necessárias do Kubernetes ao seu sistema do MongoDB de vários clusters Kubernetes com o comandokubectl apply. Isso pode ser necessário para determinados fluxos de trabalho altamente automatizados. O MongoDB fornece arquivos de configuração de amostra.Para recursos personalizados com escopo para um subconjunto de namespaces:
Para recursos personalizados com escopo para um namespace em todo o cluster:
Cada arquivo define vários recursos. Para suportar sua implantação, você deve substituir os valores de espaço reservado nos seguintes campos:
subjects.namespaceem cada recursoRoleBindingouClusterRoleBindingmetadata.namespaceem cada recursoServiceAccount
Após modificar as definições, aplique-as executando o seguinte comando para cada arquivo:
kubectl apply -f <fileName>
Definir o escopo do sistema
By default, the multi-cluster Kubernetes Operator is scoped to the namespace in which you install it. The Kubernetes Operator reconciles the MongoDBMultiCluster resource deployed in the same namespace as the Kubernetes Operator.
Quando você executa o plug-in kubectl do MongoDB como parte do início rápido de vários clusters e não modifica as configurações kubectl mongodb do plug-in, o plug-in:
Cria um ConfigMap padrão denominado
mongodb-kubernetes-operator-member-listque contém todos os clusters de membros do sistema MongoDB do cluster multi-Kubernetes. Este nome está codificado e você não pode alterá-lo. Consulte Problemas conhecidos.Cria ServiceAccounts, Roles, ClusterRoles, RoleBindings e ClusterRoleBindings no cluster do operador e em cada cluster de membros.
Aplica as permissões corretas para contas de serviço.
Usa as configurações anteriores para criar sua implantação do MongoDB de clusters multikubernetes.
Depois que o Operador Kubernetes cria a implantação do MongoDB de cluster multi-Kubernetes, o Operador Kubernetes começa a observar MongoDB recursos no namespace mongodb.
Para configurar o Operador Kubernetes com as permissões corretas para implantar em um subconjunto ou em todos os namespaces, execute o comando a seguir e especifique os namespaces que você deseja que o Operador Kubernetes observe.
kubectl mongodb multicluster setup \ --central-cluster="${MDB_CENTRAL_CLUSTER_FULL_NAME}" \ --member-clusters="${MDB_CLUSTER_1_FULL_NAME},${MDB_CLUSTER_2_FULL_NAME},${MDB_CLUSTER_3_FULL_NAME}" \ --member-cluster-namespace="mongodb2" \ --central-cluster-namespace="mongodb2" \ --create-service-account-secrets \ --cluster-scoped="true"
Ao instalar a implementação do MongoDB de cluster multi-Kubernetes em vários ou em todos os namespaces, você pode configurar o Kubernetes Operator para:
Observação
Instale e configure uma única instância do Kubernetes Operator e configure-a para monitorar um, muitos ou todos os recursos personalizados em subconjuntos de namespaces diferentes e não sobrepostos. Consulte também O MongoDB suporta a execução de mais de uma instância do Kubernetes Operator?
Assista a recursos em vários namespaces
If you set the scope for the multi-Kubernetes cluster MongoDB deployment to many namespaces, you can configure the Kubernetes Operator to watch MongoDB resources in these namespaces in the multi-Kubernetes cluster MongoDB deployment.
Defina o spec.template.spec.containers.name.env.name:WATCH_NAMESPACE no mongodb-kubernetes.yaml dos Controladores MongoDB para o Repositório do Github do Operador Kubernetes para a lista separada por vírgulas de namespaces que você deseja que o Operador Kubernetes assista:
WATCH_NAMESPACE: "$namespace1,$namespace2,$namespace3"
Execute o seguinte comando e substitua os valores na última linha pelos namespaces que você gostaria que o Operador Kubernetes observasse.
helm upgrade \ --install \ mongodb-kubernetes-operator-multi-cluster \ mongodb/mongodb-kubernetes \ --namespace mongodb \ --set namespace=mongodb \ --version <mongodb-kubernetes-operator-version>\ --set operator.name=mongodb-kubernetes-operator-multi-cluster \ --set operator.createOperatorServiceAccount=false \ --set operator.createResourcesServiceAccountsAndRoles=false \ --set "multiCluster.clusters={$MDB_CLUSTER_1_FULL_NAME,$MDB_CLUSTER_2_FULL_NAME,$MDB_CLUSTER_3_FULL_NAME}" \ --set operator.watchNamespace="$namespace1,$namespace2,$namespace3"
Assista a recursos em todos os namespaces
If you set the scope for the multi-Kubernetes cluster MongoDB deployment to all namespaces instead of the default mongodb namespace, you can configure the Kubernetes Operator to watch MongoDB resources in all namespaces in the multi-Kubernetes cluster MongoDB deployment.
Set the spec.template.spec.containers.name.env.name:WATCH_NAMESPACE in mongodb-kubernetes.yaml to "*". You must include the double quotation marks (") around the asterisk (*) in the YAML file.
WATCH_NAMESPACE: "*"
Execute o seguinte comando:
helm upgrade \ --install \ mongodb-kubernetes-operator-multi-cluster \ mongodb/mongodb-kubernetes \ --namespace mongodb \ --set namespace=mongodb \ --version <mongodb-kubernetes-operator-version>\ --set operator.name=mongodb-kubernetes-operator-multi-cluster \ --set operator.createOperatorServiceAccount=false \ --set operator.createResourcesServiceAccountsAndRoles=false \ --set "multiCluster.clusters={$MDB_CLUSTER_1_FULL_NAME,$MDB_CLUSTER_2_FULL_NAME,$MDB_CLUSTER_3_FULL_NAME}" \ --set operator.watchNamespace="*"
Planejar a conectividade externa: Você deve usar uma malha de serviços?
Uma Service Mesh permite a comunicação entre clusters entre os membros do conjunto de réplicas distribuídos em diferentes clusters Kubernetes. O uso de uma interface de serviço simplifica muito a criação de sistemas MongoDB de vários clusters Kubernetes e é a maneira recomendada de implantar o MongoDB em vários clusters Kubernetes. No entanto, se sua organização de T.I. não usar uma Service Mesh, você poderá implantar um conjunto de réplicas em um MongoDB deployment de vários Kubernetes sem ele.
Dependendo do seu ambiente, faça o seguinte:
Se você puder usar uma interface de serviço, instale o Istio.
Se você não puder usar uma malha de serviço:
Revise a seção Como o operador do Kubernetes estabelece conectividade?
Como o operador Kubernetes estabelece conectividade?
Independentemente do tipo de sistema, um MongoDB deployment no Kubernetes deve estabelecer as seguintes conexões:
Do Ops Manager MongoDB Agent no Pod ao seu processo
mongod, para habilitar o gerenciamento e o monitoramento do ciclo de vida do MongoDB.Do MongoDB Agent do Ops Manager no Pod para a instância do Ops Manager, para habilitar a automação.
Entre todos os processos do
mongod, para permitir a replicação.
Quando o Kubernetes Operator implementa os recursos do MongoDB, ele trata esses requisitos de conectividade das seguintes maneiras, dependendo do tipo de implementação:
In a single Kubernetes cluster deployment, the Kubernetes Operator configures hostnames in the replica set as FQDNs of a Headless Service. This is a single service that resolves the DNS of a direct IP address of each Pod hosting a MongoDB instance by the Pod's FQDN, as follows:
<pod-name>.<replica-set-name>-svc.<namespace>.svc.cluster.local.Em um sistema do MongoDB de vários clusters Kubernetes que usa uma malha de serviço, o Operador do Kubernetes cria um StatefulSet separado para cada membro do conjunto de réplicas do MongoDB no cluster Kubernetes. Uma malha de serviço permite a comunicação entre processos
mongodem clusters Kubernetes distintos.O uso de uma malha de serviço permite a implantação do MongoDB de clusters multi-Kubernetes para:
Achieve global DNS hostname resolution across Kubernetes clusters and establish connectivity between them. For each MongoDB deployment Pod in each Kubernetes cluster, the Kubernetes Operator creates a ClusterIP service through the
spec.duplicateServiceObjects: trueconfiguration in theMongoDBMultiClusterresource. Each process has a hostname defined to this service's FQDN:<pod-name>-svc.<namespace>.svc.cluster.local. These hostnames resolve from DNS to a service's ClusterIP in each member cluster.Estabeleça comunicação entre Pods em diferentes clusters Kubernetes. Como resultado, os membros do conjunto de réplicas hospedados em clusters diferentes formam um único conjunto de réplicas nestes clusters.
Em um sistema do MongoDB de cluster multi-Kubernetes sem uma tela de serviço, o Operador do Kubernetes usa as seguintes configurações de recursos do
MongoDBMultiClusterpara expor todos os seus processos domongodexternamente. Isso permite a resolução DNS de nomes de host entre clusters Kubernetes distintos e estabelece conectividade entre Pods roteados por meio das redes que conectam esses clusters.
Opcional: instale o Istion
Instale o Istio em um modo multi-primary em diferentes redes usando a documentação do Istio. O Istipo é uma camada de serviço que simplifica a resolução de DNS e ajuda a estabelecer comunicação entre clusters entre os clusters Kubernetes de membros em uma implantação do MongoDB de vários clusters Kubernetes. Se você optar por usar uma interface de serviço, precisará instalá-la. Se você não puder utilizar uma interface de serviço, pule esta seção e use domínios externos e configure o DNS para habilitar a conectividade externa.
Além disso, oferecemos o script de exemplo install_istio_separate_network. Este script é baseado na documentação do Istion e fornece um exemplo de instalação que usa o modo multi-primary em redes diferentes. Não garantimos a manutenção do script com futuros lançamentos do Istion. Se você optar por usar o script, revise a documentação mais recente do Istio para instalar um multicluster e, se necessário, ajuste o script para que corresponda à documentação e ao seu sistema. Se você usar outra solução de Service Mesh, crie seu próprio script para configurar redes separadas para facilitar a resolução de DNS.
Habilitar conectividade externa por meio de domínios externos e zonas de DNS
Se você não utilizar uma malha de serviço, faça o seguinte para habilitar a conectividade externa para e entre os processos do mongod e o MongoDB Agent do Ops Manager:
Ao criar um sistema MongoDB de cluster multi-Kubernetes, use o spec.clusterSpecList.externalAccess.externalDomain configuração para especificar um domínio externo e instruir o Operador Kubernetes a configurar nomes de host para processos do
mongodno seguinte padrão:<pod-name>.<externalDomain> Observação
Você pode especificar domínios externos somente para novas implementações. Você não pode alterar domínios externos depois de configurar uma implantação do MongoDB de clusters multi Kubernetes.
Após configurar um domínio externo desta forma, os agente MongoDB do Ops Manager e os processos do
mongodutilizam este domínio para se conectar uns aos outros.Personalize serviços externos que o Kubernetes Operator cria para cada Pod no cluster do Kubernetes. Use a configuração global no spec.externalAccess configurações e substituições específicas do cluster do Kubernetes no spec.clusterSpecList.externalAccess.externalService configurações.
Configure os nomes de host do Pod em uma zona DNS para garantir que cada Pod do Kubernetes hospedando um processo do
mongodpermita estabelecer uma conexão externa com os outros processos domongodem um sistema MongoDB de multi-Kubernetes cluster. Um Pod é considerado "exposto externamente" quando você pode se conectar a um processomongodusando o nome de host<pod-name>.<externalDomain>nas portas 27017 (esta é a porta do banco de dados padrão) e 27018 (esta é a porta do banco de dados + 1). Talvez você também precise configurar regras de firewall para permitir o tráfego TCP nas portas 27017 e 27018.
Após concluir estes pré-requisitos, você poderá distribuir um cluster multi-Kubernetes sem uma tela de serviço.
Verificar a conectividade entre clusters
Siga as etapas deste procedimento para verificar se os FQDNs de serviço podem ser acessados nos clusters do Kubernetes.
Neste exemplo, você implanta um aplicação de amostra definido em sample-service.yaml em dois clusters Kubernetes.
Crie um namespace em cada cluster.
Crie um namespace em cada um dos clusters Kubernetes para distribuir o sample-service.yaml.
kubectl create --context="${CTX_CLUSTER_1}" namespace sample kubectl create --context="${CTX_CLUSTER_2}" namespace sample
Observação
Em determinadas soluções de malha de serviço, talvez seja necessário anotar ou rotular o namespace.
Verifique CLUSTER_1 se pode se conectar a CLUSTER_2.
Implante o Pod em CLUSTER_1 e verifique se você pode acessar o aplicativo de amostra em CLUSTER_2.
kubectl run --context="${CTX_CLUSTER_1}" \ -n sample \ curl --image=radial/busyboxplus:curl \ -i --tty \ curl -sS helloworld2.sample:5000/hello
Você deverá ver uma saída semelhante a este exemplo:
Hello version: v2, instance: helloworld-v2-758dd55874-6x4t8
Verifique CLUSTER_2 se pode se conectar a CLUSTER_1.
Implante o Pod em CLUSTER_2 e verifique se você pode acessar o aplicativo de amostra em CLUSTER_1.
kubectl run --context="${CTX_CLUSTER_2}" \ -n sample \ curl --image=radial/busyboxplus:curl \ -i --tty \ curl -sS helloworld1.sample:5000/hello
Você deverá ver uma saída semelhante a este exemplo:
Hello version: v1, instance: helloworld-v1-758dd55874-6x4t8
Revise os requisitos para implantar o Ops Manager
Como parte do Quick Start, você implementa um recurso do MongoDB Ops Manager no cluster central.
Prepare-se para conexões criptografadas por TLS
Se você planeja proteger seu sistema MongoDB de cluster multi-Kubernetes usando criptografia TLS , conclua as tarefas a seguir para habilitar a autenticação interna do cluster e gerar certificados TLS para clusters de membros e o MongoDB Agent:
Observação
Você deve possuir o certificado CA e a chave que usou para assinar seus certificados TLS .
Gere um certificado TLS para serviços do Kubernetes.
Use uma das seguintes opções:
Gere um certificado TLS curinga que cubra os nomes de host dos serviços que o Kubernetes Operator cria para cada Pod no sistema.
Se você gerar certificados curinga, poderá continuar usando os mesmos certificados ao escalar ou reequilibrar nós nos clusters de membros do Kubernetes, por exemplo, para recuperação de desastres.
Por exemplo, adicione o nome de host semelhante ao seguinte formato ao SAN:
*.<namespace>.svc.cluster.local Para cada serviço Kubernetes que o Operador Kubernetes gera correspondente a cada Pod em cada cluster de membros, adicione SANs ao certificado. Em seu certificado TLS , a SAN para cada serviço do Kubernetes deve usar o seguinte formato:
<metadata.name>-<member_cluster_index>-<n>-svc.<namespace>.svc.cluster.local onde
nvaria de0aclusterSpecList[member_cluster_index].members - 1.
Gere um certificado TLS para os agente MongoDB do seu projeto.
Para o certificado TLS do MongoDB Agent:
O Nome Comum no certificado TLS não pode estar vazio.
A Organização e Unidade organizacional combinadas em cada certificado TLS devem ser diferentes da Organização e Unidade organizacional no certificado TLS para seus membros do conjunto de réplicas.
Para acelerar a criação de certificados TLS para clusters de membros do Kubernetes, oferecemos o script setup_tls. Não garantimos a manutenção do roteiro. Se optar por usar o roteiro, teste-o e ajuste-o às suas necessidades. O script faz o seguinte:
Creates the
cert-managernamespace in the connected cluster and installs cert-manager using Helm in thecert-managernamespace.Instala uma CA local usando mkcert.
Downloads TLS certificates from
downloads.mongodb.comand concatenates them with the CA file name andca-chain.Cria um ConfigMap que inclui os arquivos
ca-chain.Cria um recurso
Issuer, que o cert-manager usa para gerar certificados.Cria um recurso
Certificate, que o cert-manager usa para criar um objeto de chave para os certificados.
Para usar o roteiro:
Instale mkcert o.
Instale mkcert na máquina em que você planeja executar este script.
Execute o script setup_tls.
curl https://raw.githubusercontent.com/mongodb/mongodb-kubernetes/master/scripts/release/kubectl-mongodb/setup_tls.sh -o setup_tls.sh
A saída inclui:
A secret containing the CA named
ca-key-pair.Um segredo contendo os certificados do servidor no centro n
clustercert-${resource}-cert.A ConfigMap containing the CA certificates named
issuer-ca.
Gere um certificado TLS para os agente MongoDB do seu projeto.
Para o certificado TLS do MongoDB Agent:
O Nome Comum no certificado TLS não pode estar vazio.
A Organização e Unidade organizacional combinadas em cada certificado TLS devem ser diferentes da Organização e Unidade organizacional no certificado TLS para seus membros do conjunto de réplicas.
Gere um certificado TLS para nomes de host SAN.
Use uma das seguintes opções:
Gere um certificado TLS curinga que contenha todos os externalDomains criados na SAN. Por exemplo, adicione os nomes de host semelhantes ao seguinte formato ao SAN:
*.cluster-0.example.com, *.cluster-1.example.com Se você gerar certificados curinga, poderá continuar usando-os ao escalar ou reequilibrar nós nos clusters de membros do Kubernetes, por exemplo , para recuperação após desastres.
Gere um certificado TLS para cada nome de host nó do conjunto de réplicas do MongoDB no SAN. Por exemplo, adicione os nomes de host semelhantes aos seguintes ao SAN:
my-replica-set-0-0.cluster-0.example.com, my-replica-set-0-1.cluster-0.example.com, my-replica-set-1-0.cluster-1.example.com, my-replica-set-1-1.cluster-1.example.com Se você gerar um certificado TLS individual que contenha todos os nomes de host específicos, deverá criar um novo certificado sempre que escalar ou reequilibrar nós nos clusters de membros do Kubernetes, por exemplo , para recuperação de desastres.
Gere um certificado TLS para os agente MongoDB do seu projeto.
Para o certificado TLS do MongoDB Agent:
O Nome Comum no certificado TLS não pode estar vazio.
A Organização e Unidade organizacional combinadas em cada certificado TLS devem ser diferentes da Organização e Unidade organizacional no certificado TLS para seus membros do conjunto de réplicas.
Importante
O Operador do Kubernetes usa kubernetes.io/tls segredos para armazenar certificados TLS e chaves privadas para recursos do Ops Manager e MongoDB . A partir da versão do Kubernetes Operator 1.17.0, o Kubernetes Operator não permite arquivos PEM concatenados armazenados como segredos Opaco.
Escolha GitOps ou o plug-in kuberctl MongoDB
Você pode optar por criar e manter os arquivos de recursos necessários para o sistema de recursos do MongoDBMultiCluster em um ambiente GitOps.
If you use a GitOps workflow, you can't use the kubectl mongodb plugin, which automatically configures role-based access control (RBAC) and creates the kubeconfig file that allows the operator cluster to communicate with its member clusters. Instead, you must manually configure or build your own automation for configuring the RBAC and kubeconfig files based on the procedure and examples in Configure Resources for GitOps.
As seções de pré-requisito a seguir descrevem como instalar o plug- kubectl do MongoDB plugin se você não usar o GitOps ou configurar recursos para o GitOps se usar.
Instalar o plug-in kuberctl do MongoDB
Use o plug-in kubectl mongodb para:
Observação
Se você usar GitOps, não poderá usar o plugin-in kubectl mongodb . Em vez disso, siga o procedimento em Configurar recursos para GitOps.
Para instalar o plug-in kubectl mongodb :
Baixe a versão desejada do pacote do Kubernetes Operator.
Faça o download da versão desejada do pacote do Kubernetes Operator na página de lançamento do repositório do MongoDB Operators for Kubernetes.
O nome do pacote usa este padrão: kubectl-mongodb_{{ .Version }}_{{ .Os }}_{{ .Arch }}.tar.gz.
Use um dos seguintes pacotes:
kubectl-mongodb_{{ .Version }}_darwin_amd64.tar.gzkubectl-mongodb_{{ .Version }}_darwin_arm64.tar.gzkubectl-mongodb_{{ .Version }}_linux_amd64.tar.gzkubectl-mongodb_{{ .Version }}_linux_arm64.tar.gz
Localize o binário do plugin kubectl mongodb e copie-o para o destino desejado.
Encontre o binário kubectl-mongodb no diretório descompactado e mova-o para o destino desejado, dentro do PATH para o usuário do Kubernetes Operator, conforme mostrado no exemplo a seguir:
mv kubectl-mongodb /usr/local/bin/kubectl-mongodb
Agora você pode executar o plug-in kubectl mongodb usando os seguintes comandos:
kubectl mongodb multicluster setup kubectl mongodb multicluster recover
Para saber mais sobre os sinalizadores suportados, consulte a Referência do plugin Kubectl do MongoDB.
Configurar recursos para GitOps
Se você usar um fluxo de trabalho GitOps, não poderá usar o plugin-in kubectl mongodb para configurar automaticamente o RBAC (controle de acesso baseado em roles) ou o arquivo kubeconfig que permite ao cluster de operadores se comunicar com seus clusters de membros. Em vez disso, você deve configurar e aplicar manualmente os seguintes arquivos de recursos ou construir sua própria automação com base nas informações abaixo.
Observação
Para saber como o kubectl mongodb plugin automatiza as seguintes etapas, visualize o código no Github.
Para configurar o RBAC e o kubeconfig para GitOps:
Crie e aplique recursos RBAC a cada cluster.
Use estes exemplos de recursos de RBAC para criar o seu. Para saber mais sobre esses recursos de RBAC, consulte Noções básicas sobre funções e vinculações de funções do Kubernetes.
Para aplicá-los aos clusters centrais e nós com o GitOps, você pode usar uma ferramenta como o Argo CD.
Crie e aplique o arquivo ConfigMap.
O Operador Kubernetes controla seus clusters de membros usando um arquivo ConfigMap. Copie, modifique e aplique o seguinte exemplo ConfigMap:
apiVersion: v1 kind: ConfigMap data: cluster1: "" cluster2: "" metadata: namespace: <namespace> name: mongodb-kubernetes-operator-member-list labels: multi-cluster: "true"
Configure o segredo kubeconfig para o operador Kubernetes.
The Kubernetes Operator, which runs in the operator cluster, communicates with the Pods in the member clusters through the Kubernetes API. For this to work, the Kubernetes Operator needs a kubeconfig file that contains the service account tokens of the member clusters. Create this kubeconfig file by following these steps:
Obtain a list of service accounts configured in the Kubernetes Operator's namespace. For example, if you chose to use the default
mongodbnamespace, then you can obtain the service accounts using the following command:kubectl get serviceaccounts -n mongodb Obtenha o segredo de cada conta de serviço que pertence a um cluster de membros.
kubectl get secret <service-account-name> -n mongodb -o yaml In each service account secret, copy the CA certificate and token. For example, copy
<ca_certificate>and<token>from the secret, as shown in the following example:apiVersion: v1 kind: Secret metadata: name: my-service-account namespace: mongodb data: ca.crt: <ca_certificate> token: <token> Copie o exemplo
kubeconfiga seguir para o cluster de operadores e substitua os espaços reservados pelos<ca_certificate>e<token>que você copiou dos segredos da conta de serviço executando os comandos listados abaixo.apiVersion: v1 clusters: - cluster: certificate-authority: server: https:// name: kind-e2e-cluster-1 - cluster: certificate-authority: server: https:// name: kind-e2e-cluster-2 contexts: - context: cluster: kind-e2e-cluster-1 namespace: mongodb user: kind-e2e-cluster-1 name: kind-e2e-cluster-1 - context: cluster: kind-e2e-cluster-2 namespace: mongodb user: kind-e2e-cluster-2 name: kind-e2e-cluster-2 kind: Config users: - name: kind-e2e-cluster-1 user: token: - name: kind-e2e-cluster-2 user: token: Preencha os seguintes comandos do
kubectlcom os valores corretos e execute-os para atualizar seu arquivo de exemplokubeconfig.kubectl config --kubeconfig=kubeconfig set-cluster kind-e2e-cluster-1 --certificate-authority=<cluster-1-ca.crt> kubectl config --kubeconfig=kubeconfig set-cluster kind-e2e-cluster-2 --certificate-authority=<cluster-2-ca.crt> kubectl config --kubeconfig=kubeconfig set-credentials kind-e2e-cluster-1 --token=<cluster-1-token> kubectl config --kubeconfig=kubeconfig set-credentials kind-e2e-cluster-2 --token=<cluster-2-token> Crie um segredo no cluster do operador que você monta no Operador Kubernetes, conforme ilustrado no gráfico de referência do Helm. Por exemplo:
kubectl --context="${CTX_CENTRAL_CLUSTER}" -n <operator-namespace> create secret --from-file=kubeconfig=<path-to-kubeconfig-file> <kubeconfig-secret-name>