Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Implemente o operador Kubernetes

Para implantar várias instâncias de recursos do MongoDB em vários clusters Kubernetes, primeiro você precisa implantar o Operador Kubernetes em um dos clusters do Kubernetes. Depois que o Kubernetes Operator for implantado em um cluster central do Kubernetes, você poderá criar e gerenciar todos os seus recursos do MongoDB em todos os seus clusters do Kubernetes aplicando atualizações ao cluster central do Kubernetes.

Antes de iniciar o procedimento a seguir, execute as seguintes ações:

  • Instalar kubectl.

  • Instale Helm.

  • Conclua o procedimento GKE Clusters ou equivalente.

  • Conclua o procedimento Certificados TLS ou equivalente.

  • Conclua o procedimento Istion Service Mesh ou equivalente.

  • Instale o plugin kubectl mongodb. Para instalar o plugin-in kubectl mongodb:

    1

    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.gz

    • kubectl-mongodb_{{ .Version }}_darwin_arm64.tar.gz

    • kubectl-mongodb_{{ .Version }}_linux_amd64.tar.gz

    • kubectl-mongodb_{{ .Version }}_linux_arm64.tar.gz

    2

    Desempacote o pacote, como no exemplo a seguir:

    tar -zxvf kubectl-mongodb_<version>_darwin_amd64.tar.gz
    3

    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.

  • Atualize conforme necessário e defina as variáveis de ambiente definidas no arquivo env_variables.sh a seguir.

    1# Namespace in which Ops Manager and AppDB will be deployed
    2export OM_NAMESPACE="mongodb-om"
    3# Namespace in which the operator will be installed
    4export OPERATOR_NAMESPACE="mongodb-operator"
    5# Namespace in which MongoDB resources will be deployed
    6export MDB_NAMESPACE="mongodb"
    7
    8# comma-separated key=value pairs for additional parameters passed to the helm-chart installing the operator
    9export OPERATOR_ADDITIONAL_HELM_VALUES="${OPERATOR_ADDITIONAL_HELM_VALUES:-""}"
    10
    11export OFFICIAL_OPERATOR_HELM_CHART="mongodb/mongodb-kubernetes"
    12export OPERATOR_HELM_CHART="${OPERATOR_HELM_CHART:-${OFFICIAL_OPERATOR_HELM_CHART}}"

Você pode encontrar todo o código-fonte incluído no repositório do MongoDB Kubernetes Operator.

1
kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" create namespace "${OPERATOR_NAMESPACE}"
kubectl --context "${K8S_CLUSTER_1_CONTEXT_NAME}" create namespace "${OPERATOR_NAMESPACE}"
kubectl --context "${K8S_CLUSTER_2_CONTEXT_NAME}" create namespace "${OPERATOR_NAMESPACE}"
kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" create namespace "${OM_NAMESPACE}"
kubectl --context "${K8S_CLUSTER_1_CONTEXT_NAME}" create namespace "${OM_NAMESPACE}"
kubectl --context "${K8S_CLUSTER_2_CONTEXT_NAME}" create namespace "${OM_NAMESPACE}"
kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" create namespace "${MDB_NAMESPACE}"
kubectl --context "${K8S_CLUSTER_1_CONTEXT_NAME}" create namespace "${MDB_NAMESPACE}"
kubectl --context "${K8S_CLUSTER_2_CONTEXT_NAME}" create namespace "${MDB_NAMESPACE}"
2
mkdir -p secrets
kubectl create secret generic "image-registries-secret" \
--from-file=.dockerconfigjson="${HOME}/.docker/config.json" --type=kubernetes.io/dockerconfigjson \
--dry-run=client -o yaml > secrets/image-registries-secret.yaml
kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -n "${OPERATOR_NAMESPACE}" apply -f secrets/image-registries-secret.yaml
kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -n "${OM_NAMESPACE}" apply -f secrets/image-registries-secret.yaml
kubectl --context "${K8S_CLUSTER_1_CONTEXT_NAME}" -n "${OM_NAMESPACE}" apply -f secrets/image-registries-secret.yaml
kubectl --context "${K8S_CLUSTER_2_CONTEXT_NAME}" -n "${OM_NAMESPACE}" apply -f secrets/image-registries-secret.yaml
kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -n "${MDB_NAMESPACE}" apply -f secrets/image-registries-secret.yaml
kubectl --context "${K8S_CLUSTER_1_CONTEXT_NAME}" -n "${MDB_NAMESPACE}" apply -f secrets/image-registries-secret.yaml
kubectl --context "${K8S_CLUSTER_2_CONTEXT_NAME}" -n "${MDB_NAMESPACE}" apply -f secrets/image-registries-secret.yaml
3

Execute o comando a seguir para configurar seus clusters Kubernetes.

1kubectl mongodb multicluster setup \
2 --central-cluster="${K8S_CLUSTER_0_CONTEXT_NAME}" \
3 --member-clusters="${K8S_CLUSTER_0_CONTEXT_NAME},${K8S_CLUSTER_1_CONTEXT_NAME},${K8S_CLUSTER_2_CONTEXT_NAME}" \
4 --member-cluster-namespace="${OM_NAMESPACE}" \
5 --central-cluster-namespace="${OPERATOR_NAMESPACE}" \
6 --create-service-account-secrets \
7 --install-database-roles=true \
8 --image-pull-secrets=image-registries-secret
9
10kubectl mongodb multicluster setup \
11 --central-cluster="${K8S_CLUSTER_0_CONTEXT_NAME}" \
12 --member-clusters="${K8S_CLUSTER_0_CONTEXT_NAME},${K8S_CLUSTER_1_CONTEXT_NAME},${K8S_CLUSTER_2_CONTEXT_NAME}" \
13 --member-cluster-namespace="${MDB_NAMESPACE}" \
14 --central-cluster-namespace="${OPERATOR_NAMESPACE}" \
15 --create-service-account-secrets \
16 --install-database-roles=true \
17 --image-pull-secrets=image-registries-secret
4

Adicione o repositório MongoDB Helm Charts for Kubernetes ao Helm.

1helm repo add mongodb https://mongodb.github.io/helm-charts
2helm repo update mongodb
3helm search repo "${OFFICIAL_OPERATOR_HELM_CHART}"
5

Use os MongoDB Helm Charts for Kubernetes para implementar o Operador Kubernetes.

1helm upgrade --install \
2 --debug \
3 --kube-context "${K8S_CLUSTER_0_CONTEXT_NAME}" \
4 mongodb-kubernetes-operator-multi-cluster \
5 "${OPERATOR_HELM_CHART}" \
6 --namespace="${OPERATOR_NAMESPACE}" \
7 --set namespace="${OPERATOR_NAMESPACE}" \
8 --set operator.namespace="${OPERATOR_NAMESPACE}" \
9 --set operator.watchNamespace="${OM_NAMESPACE}\,${MDB_NAMESPACE}" \
10 --set operator.name=mongodb-kubernetes-operator-multi-cluster \
11 --set operator.createOperatorServiceAccount=false \
12 --set operator.createResourcesServiceAccountsAndRoles=false \
13 --set "multiCluster.clusters={${K8S_CLUSTER_0_CONTEXT_NAME},${K8S_CLUSTER_1_CONTEXT_NAME},${K8S_CLUSTER_2_CONTEXT_NAME}}" \
14 --set "${OPERATOR_ADDITIONAL_HELM_VALUES:-"dummy=value"}" \
15 --set operator.env=dev
6
1kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -n "${OPERATOR_NAMESPACE}" rollout status --timeout=2m deployment/mongodb-kubernetes-operator-multi-cluster
2echo "Operator deployment in ${OPERATOR_NAMESPACE} namespace"
3kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -n "${OPERATOR_NAMESPACE}" get deployments
4echo; echo "Operator pod in ${OPERATOR_NAMESPACE} namespace"
5kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -n "${OPERATOR_NAMESPACE}" get pods