Você pode usar o Kubernetes Operator para implantar recursos do MongoDB Search e Vector Search para serem executados com o MongoDB Enterprise v8.0.10 ou superior em um cluster do Kubernetes. Este procedimento demonstra como implantar e configurar o processo mongot para ser executado com um conjunto de réplicas novo ou existente no cluster do Kubernetes.
Pré-requisitos
Para implantar o MongoDB Search e o Vector Search, você deve ter o seguinte:
Um cluster Kubernetes em execução com
kubeconfigdisponível localmente.A ferramenta de linha de comando do Kubernetes,
kubectl, configurada para se comunicar com seu cluster.Helm, o gerenciador de pacote do Kubernetes, para instalar o Operador Kubernetes.
Bash v5.1 ou superior para executar os comandos neste tutorial.
projeto Ops Manager ou MongoDB Cloud Manager e credenciais de API.
Procedimento
Obrigatório. Defina as variáveis de ambiente.
Para definir as variáveis de ambiente para uso nas etapas subsequentes deste procedimento, copie o seguinte, defina os valores para as variáveis de ambiente e carregue as variáveis de ambiente:
# set it to the context name of the k8s clusterexport K8S_CTX="<local cluster context>"
# the following namespace will be created if not existsexport MDB_NS="mongodb"
# name of the MongoDB Custom Resource.export MDB_RESOURCE_NAME="mdb-rs"
# OM/CM's project name to be used to manage mongodb replica setexport OPS_MANAGER_PROJECT_NAME="<arbitrary project name>"
# URL to Cloud Manager or Ops Manager instanceexport OPS_MANAGER_API_URL="https://cloud-qa.mongodb.com"
# The API key can be an Org Owner - the operator can create the project automatically then.# The API key can also be created in a particular project that was created manually with the Project Owner scope .export OPS_MANAGER_API_USER="abcdefg"export OPS_MANAGER_API_KEY="00000-abcd-efgh-1111-12345678"export OPS_MANAGER_ORG_ID="62a73abcdefgh12345678"
# minimum required MongoDB version for running MongoDB Search is 8.0.10export MDB_VERSION="8.0.10"
# root admin user for convenience, not used here at all in this guideexport MDB_ADMIN_USER_PASSWORD="admin-user-password-CHANGE-ME"# regular user performing restore and search queries on sample mflix databaseexport MDB_USER_PASSWORD="mdb-user-password-CHANGE-ME"# user for MongoDB Search to connect to the replica set to synchronise data fromexport MDB_SEARCH_SYNC_USER_PASSWORD="search-sync-user-password-CHANGE-ME"
export OPERATOR_HELM_CHART="mongodb/mongodb-kubernetes"# comma-separated key=value pairs for additional parameters passed to the helm-chart installing the operatorexport OPERATOR_ADDITIONAL_HELM_VALUES=""
export MDB_CONNECTION_STRING="mongodb://mdb-user:${MDB_USER_PASSWORD}@${MDB_RESOURCE_NAME}-svc.${MDB_NS}.svc.cluster.local:27017/?replicaSet=${MDB_RESOURCE_NAME}"Condicional. Adicione o repositório do MongoDB Helm.
O Helm automatiza a implantação e o gerenciamento de instâncias do MongoDB no Kubernetes. Se você já adicionou o repositório Helm que contém o gráfico Helm para instalar o operador Kubernetes Operator, pule esta etapa. Caso contrário, adicione o repositório Helm.
Para adicionar, copie, cole e execute o seguinte comando:
helm repo add mongodb https://mongodb.github.io/helm-chartshelm repo update mongodbhelm search repo mongodb/mongodb-kubernetesCondicional. Instale os drivers do MongoDB para o Kubernetes Operator.
O Operador Kubernetes observa MongoDB, MongoDBOpsManager e MongoDBSearch recursos personalizados e gerencia o ciclo de vida de suas implantações do MongoDB . Se você já instalou os Controladores MongoDB para Kubernetes Operator, pule esta etapa. Caso contrário, instale os Controladores MongoDB para Kubernetes Operator a partir do repositório Helm que você adicionou na etapa anterior.
Para instalar os Controladores MongoDB para o Operador Kubernetes no namespace do mongodb, copie, cole e execute o seguinte:
helm upgrade --install --debug --kube-context "${K8S_CTX}" \ --create-namespace \ --namespace="${MDB_NS}" \ mongodb-kubernetes \ ${OPERATOR_ADDITIONAL_HELM_VALUES:+--set ${OPERATOR_ADDITIONAL_HELM_VALUES}} \ "${OPERATOR_HELM_CHART}"Condicional. Crie e implemente o recurso MongoDB Enterprise .
Se você já implementou o MongoDB Enterprise, pule para a próxima etapa. Caso contrário, implemente o recurso MongoDB Enterprise .
Para implementar o MongoDB Enterprise, complete as seguintes etapas:
Crie um recurso personalizado do
MongoDBdenominadomdb-rs.O recurso define os recursos de memória e CPU para os containers
mongodemongodb-agente instrui o Operador Kubernetes a configurar um conjunto de réplicas do MongoDB com membros 3:Para implantar o MongoDB Enterprise, copie, cole e execute o seguinte no namespace:
kubectl apply --context "${K8S_CTX}" -n "${MDB_NS}" -f - <<EOFapiVersion: mongodb.com/v1kind: MongoDBmetadata: name: ${MDB_RESOURCE_NAME}spec: members: 3 version: ${MDB_VERSION}-ent type: ReplicaSet opsManager: configMapRef: name: om-project credentials: om-credentials security: authentication: enabled: true ignoreUnknownUsers: true modes: - SCRAM agent: logLevel: DEBUG statefulSet: spec: template: spec: containers: - name: mongodb-enterprise-database resources: limits: cpu: "2" memory: 2Gi requests: cpu: "1" memory: 1GiEOFAguarde a conclusão do sistema de recursos
MongoDB.Quando você aplica o recurso personalizado do
MongoDB, o operador Kubernetes começa a distribuir os nós MongoDB (Pods). Essa etapa pausa a execução até que a fase de status do recursomdbc-rssejaRunning, o que indica que o conjunto de réplicas da MongoDB Community está operacional.echo "Waiting for MongoDB resource to reach Running phase..."kubectl --context "${K8S_CTX}" -n "${MDB_NS}" wait --for=jsonpath='{.status.phase}'=Running "mdb/${MDB_RESOURCE_NAME}" --timeout=400secho; echo "MongoDB resource"kubectl --context "${K8S_CTX}" -n "${MDB_NS}" get "mdb/${MDB_RESOURCE_NAME}"echo; echo "Pods running in cluster ${K8S_CTX}"kubectl --context "${K8S_CTX}" -n "${MDB_NS}" get pods
Obrigatório. Crie e carregue os segredos de usuário MongoDB .
O MongoDB requer autenticação para acesso seguro. Nesta etapa, você cria três segredos do Kubernetes:
mdb-admin-user-password: Credenciais do administrador do MongoDB .mdb-user-password: Credenciais do usuário autorizado a realizar queries de pesquisa.mdbc-rs-search-sync-source-password: Credenciais para um usuário de pesquisa dedicado utilizado internamente pelo processo domongotpara sincronizar dados e gerenciar índices.
O Kubernetes Operator monta esses segredos nos pods do MongoDB .
Para criar os segredos, copie, cole e execute o seguinte no namespace onde você distribuiu o MongoDB Server e planeja implantar a Pesquisa MongoDB e a Vector Search:
# admin user with root rolekubectl --context "${K8S_CTX}" --namespace "${MDB_NS}" \ create secret generic mdb-admin-user-password \ --from-literal=password="${MDB_ADMIN_USER_PASSWORD}"
kubectl apply --context "${K8S_CTX}" -n "${MDB_NS}" -f - <<EOFapiVersion: mongodb.com/v1kind: MongoDBUsermetadata: name: mdb-adminspec: username: mdb-admin db: admin mongodbResourceRef: name: ${MDB_RESOURCE_NAME} passwordSecretKeyRef: name: mdb-admin-user-password key: password roles: - name: root db: adminEOF
# user used by MongoDB Search to connect to MongoDB database to synchronize data from# For MongoDB <8.2, the operator will be creating the searchCoordinator custom role automatically# From MongoDB 8.2, searchCoordinator role will be a built-in role.kubectl --context "${K8S_CTX}" --namespace "${MDB_NS}" \ create secret generic mdb-rs-search-sync-source-password \ --from-literal=password="${MDB_SEARCH_SYNC_USER_PASSWORD}"kubectl apply --context "${K8S_CTX}" -n "${MDB_NS}" -f - <<EOFapiVersion: mongodb.com/v1kind: MongoDBUsermetadata: name: search-sync-source-userspec: username: search-sync-source db: admin mongodbResourceRef: name: ${MDB_RESOURCE_NAME} passwordSecretKeyRef: name: mdb-rs-search-sync-source-password key: password roles: - name: searchCoordinator db: adminEOF
# user performing search querieskubectl --context "${K8S_CTX}" --namespace "${MDB_NS}" \ create secret generic mdb-user-password \ --from-literal=password="${MDB_USER_PASSWORD}"kubectl apply --context "${K8S_CTX}" -n "${MDB_NS}" -f - <<EOFapiVersion: mongodb.com/v1kind: MongoDBUsermetadata: name: mdb-userspec: username: mdb-user db: admin mongodbResourceRef: name: ${MDB_RESOURCE_NAME} passwordSecretKeyRef: name: mdb-user-password key: password roles: - name: readWrite db: sample_mflixEOFObrigatório. Crie e implemente o recurso para MongoDB Search e Vector Search.
Você pode implementar uma instância do nó de pesquisa sem nenhum balanceamento de carga. Para implantar, conclua as seguintes etapas:
Crie um recurso personalizado do
MongoDBSearchdenominadomdbc-rs.Este recurso especifica os requisitos de recursos de CPU e memória para os nós de pesquisa. Para saber mais sobre as configurações neste recurso personalizado, consulte Configurações de pesquisa do MongoDB e Vector Search.
kubectl apply --context "${K8S_CTX}" -n "${MDB_NS}" -f - <<EOFapiVersion: mongodb.com/v1kind: MongoDBSearchmetadata: name: ${MDB_RESOURCE_NAME}spec: # no need to specify source.mongodbResourceRef if MongoDBSearch CR has the same name as MongoDB CR # the operator infer it automatically resourceRequirements: limits: cpu: "3" memory: 5Gi requests: cpu: "2" memory: 3GiEOFAguarde a conclusão do sistema de recursos
MongoDBSearch.Quando você aplica o recurso personalizado do
MongoDBSearch, o operador do Kubernetes começa a distribuir os nós de pesquisa (Pods). Essa etapa pausa a execução até que a fase de status do recursomdbc-rssejaRunning, o que indica que o conjunto de réplicas da MongoDB Community está operacional.echo "Waiting for MongoDBSearch resource to reach Running phase..."kubectl --context "${K8S_CTX}" -n "${MDB_NS}" wait --for=jsonpath='{.status.phase}'=Running mdbs/mdb-rs --timeout=300s
Opcional. Verifique o status do recurso MongoDB Enterprise .
Certifique-se de que a implantação do recurso MongoDB com MongoDBSearch tenha sido bem-sucedida.
echo "Waiting for MongoDB resource to reach Running phase..."kubectl --context "${K8S_CTX}" -n "${MDB_NS}" wait --for=jsonpath='{.status.phase}'=Running "mdb/${MDB_RESOURCE_NAME}" --timeout=400sOpcional. Visualize todos os pods em execução em seu namespace.
Visualize todos os pods em execução nos pods do seu namespace para os nós do conjunto de réplicas do MongoDB , o operador do MongoDB Controladores for Kubernetes e os nós de pesquisa.
echo; echo "MongoDB resource"kubectl --context "${K8S_CTX}" -n "${MDB_NS}" get "mdb/${MDB_RESOURCE_NAME}"echo; echo "MongoDBSearch resource"kubectl --context "${K8S_CTX}" -n "${MDB_NS}" get mdbs/mdb-rsecho; echo "Pods running in cluster ${K8S_CTX}"kubectl --context "${K8S_CTX}" -n "${MDB_NS}" get podsPróximos passos
Agora que implementou com sucesso o MongoDB Search e o Vector Search para usar com o MongoDB Enterprise Edition, você pode adicionar dados em seu cluster do MongoDB , criar índices do MongoDB Search e Vector Search e executar queries em seus dados. Para saber mais, consulte Configurações do MongoDB Search e Vector Search.