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

Definir escopo para controladoras do MongoDB para sistema do operador Kubernetes

Antes de instalar o Kubernetes Operator, você pode definir o escopo do sistema do Kubernetes Operator. Os escopos dependem dos namespaces nos quais você escolhe para implantar os recursos do Ops Manager e do MongoDB .

Você pode definir um destes escopos:

You can set the scope for the Kubernetes Operator to use the same namespace as resources. In this case, the Kubernetes Operator watches Ops Manager and MongoDB resources in that same namespace.

Quando você instala o Operador Kubernetes, ele utiliza o namespace padrão.

You can set the scope for the Kubernetes Operator to use one or more namespaces that differ from the namespace used by the Kubernetes Operator resources. In this case, the Kubernetes Operator watches Ops Manager and MongoDB resources in a subset of namespaces that you specify.

Para instalar as instâncias do Operador Kubernetes com esse escopo, use helm com o operador.watchNamespace Parâmetro.

Observar um subconjunto de namespaces é útil em sistemas em que uma única instância do Kubernetes Operator observa um tipo de recurso de cluster diferente. Por exemplo, você pode configurar o Operador Kubernetes para observar recursos do MongoDB em um subconjunto de namespaces e para monitorar recursos do MongoDBMultiCluster em outro subconjunto de namespaces. Para evitar condições de corrida durante a reconciliação de recursos, para cada tipo de recurso personalizado que você deseja que o Operador Kubernetes assista, certifique-se de definir o escopo para um subconjunto distinto de namespaces.

Siga as instruções de instalação relevantes para helm, mas especifique um ou mais namespaces no operador.watchNamespace parâmetro para o operador Kubernetes observar:

# Watch one namespace
helm install mongodb-kubernetes-operator mongodb/mongodb-kubernetes \
--set operator.watchNamespace='namespace-to-watch' <...>
# Watch both namespace-a and namespace-b
helm install mongodb-kubernetes-operator mongodb/mongodb-kubernetes \
--set operator.watchNamespace="namespace-a\,namespace-b"
# Operator with name `mongodb-kubernetes-operator-qa-envs` will
# watch ns-dev, ns-qa and ns-uat namespaces
helm install mongodb-kubernetes-operator-qa-envs mongodb/mongodb-kubernetes \
--set operator.watchNamespace="ns-dev\,ns-qa\,ns-uat"
# Operator with name `mongodb-kubernetes-operator-staging` will
# watch ns-staging and ns-pre-prod
helm install mongodb-kubernetes-operator-staging mongodb/mongodb-kubernetes --set operator.watchNamespace="ns-staging\,ns-pre-prod"

Ao instalar o Operador Kubernetes para observar recursos em um ou mais namespaces diferentes do namespace no qual o Operador Kubernetes está distribuído:

  1. Crie os seguintes recursos:

    • Um ClusterRole com acesso a vários recursos. Para a definição completa do recurso, consulte o exemplo operator-roles.yaml. Este é um recurso com escopo de cluster.

    • Create a ClusterRoleBinding to link ClusterRole with ServiceAccount. This clusterRoleBinding will bind the clusterRole that you created with the ServiceAccount that the Kubernetes Operator is using on the namespace where you install it.

  2. Inclua o ClusterRole e o ClusterRoleBinding nos arquivos de configuração padrão que você aplica durante a instalação.

  3. Criar contas de serviçolocais do Kubernetes:

    Para cada namespace, crie algumas ou todas as seguintes ServiceAccounts locais do Kubernetes:

    • Se você deseja implantar uma instância MongoDB no namespace, utilize mongodb-kubernetes-database-pods.

    • Se você deseja implantar o Ops Manager no namespace, use mongodb-kubernetes-appdb e mongodb-kubernetes-ops-manager.

O exemplo a seguir ilustra como ClusterRole e ClusterRoleBinding trabalham juntos no cluster.

Suponha que você crie um ServiceAccount no namespace mongodb e depois instale o Kubernetes Operator nesse namespace. O Operador Kubernetes usa esta ServiceAccount.

Para definir o escopo do Operador Kubernetes para monitorar os namespaces ns1 e ns2:

  1. Usando esses privilégios, crie um ClusterRole sem namespace e em todo o cluster.

  2. Create a ClusterRoleBinding in three namespaces: mongodb, ns1 and ns2. This ClusterRoleBinding will bind the ClusterRole to the ServiceAccount in the mongodb namespace. The clusterRoleBinding will allow the Kubernetes Operator deployed in the mongodb namespace to access the resources described in the clusterRole of the target namespace, that is, in mongodb, ns1 and ns2.

Consulte também operator.watchNamespace.

Você pode definir o escopo do Operador Kubernetes para o cluster Kubernetes. Neste caso, o Operador do Kubernetes observa os recursos do Ops Manager e do MongoDB em todos os namespaces no cluster do Kubernetes.

Importante

Você pode implantar apenas uma instância do Operador Kubernetes com um escopo de todo o cluster por cluster Kubernetes.

Para definir um escopo de todo o cluster para o Operador Kubernetes, siga as instruções para seu método de instalação preferido.

  1. 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: "*"
  2. In mongodb-kubernetes.yaml, change:

    kind: Role
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
    name: mongodb-kubernetes-operator

    para:

    kind: ClusterRole
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
    name: mongodb-kubernetes-operator
  3. Adicione o seguinte código ao ClusterRole que você acabou de modificar:

    - apiGroups:
    - ""
    resources:
    - namespaces
    verbs:
    - list
    - watch
  4. In mongodb-kubernetes.yaml, change:

    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
    name: mongodb-kubernetes-operator
    namespace: mongodb
    roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: Role
    name: mongodb-kubernetes-operator
    subjects:
    - kind: ServiceAccount
    name: mongodb-kubernetes-operator
    namespace: mongodb

    para:

    kind: ClusterRoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
    name: mongodb-kubernetes-operator
    namespace: mongodb
    roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: ClusterRole
    name: mongodb-kubernetes-operator
    subjects:
    - kind: ServiceAccount
    name: mongodb-kubernetes-operator
    namespace: mongodb
  5. No arquivo mongodb-kubernetes.yaml , altere o valor <namespace> para o namespace em que você deseja que o operador Kubernetes implemente recursos e aplique o arquivo YAML .

    1---
    2kind: ServiceAccount
    3apiVersion: v1
    4metadata:
    5 name: mongodb-kubernetes-appdb
    6 namespace: <namespace>
    7---
    8kind: ServiceAccount
    9apiVersion: v1
    10metadata:
    11 name: mongodb-kubernetes-database-pods
    12 namespace: <namespace>
    13---
    14kind: ServiceAccount
    15apiVersion: v1
    16metadata:
    17 name: mongodb-kubernetes-ops-manager
    18 namespace: <namespace>
    19---
    20kind: Role
    21apiVersion: rbac.authorization.k8s.io/v1
    22metadata:
    23 name: mongodb-kubernetes-appdb
    24 namespace: <namespace>
    25rules:
    26 - apiGroups:
    27 - ""
    28 resources:
    29 - secrets
    30 verbs:
    31 - get
    32 - apiGroups:
    33 - ""
    34 resources:
    35 - pods
    36 verbs:
    37 - patch
    38---
    39kind: RoleBinding
    40apiVersion: rbac.authorization.k8s.io/v1
    41metadata:
    42 name: mongodb-kubernetes-appdb
    43 namespace: <namespace>
    44roleRef:
    45 apiGroup: rbac.authorization.k8s.io
    46 kind: Role
    47 name: mongodb-kubernetes-appdb
    48subjects:
    49 - kind: ServiceAccount
    50 name: mongodb-kubernetes-appdb
    51 namespace: <namespace>
    52...
  6. Crie contas de serviço locais do Kubernetes:

    Para cada namespace, crie algumas ou todas as seguintes contas de serviço local do Kubernetes:

    • Se você deseja implantar uma instância MongoDB no namespace, utilize mongodb-kubernetes-database-pods.

    • Se você deseja implantar o Ops Manager no namespace, use mongodb-kubernetes-appdb e mongodb-kubernetes-ops-manager.

    Copie e cole os exemplos aplicáveis e substitua o valor <namespace> pelo rótulo que identifica o namespace.

    ---
    kind: ServiceAccount
    apiVersion: v1
    metadata:
    name: mongodb-kubernetes-database-pods
    namespace: <namespace>
    ---
    kind: ServiceAccount
    apiVersion: v1
    metadata:
    name: mongodb-kubernetes-appdb
    namespace: <namespace>
    ---
    kind: ServiceAccount
    apiVersion: v1
    metadata:
    name: mongodb-kubernetes-ops-manager
    namespace: <namespace>

Antes de implementar o Operador Kubernetes, configure os seguintes itens:

  1. Configure o operador Kubernetes para observar todos os namespaces:

    helm install mongodb-kubernetes-operator mongodb/mongodb-kubernetes \
    --set operator.watchNamespace="*"
  2. Crie contas de serviço locais do Kubernetes:

    Para cada namespace, crie algumas ou todas as seguintes contas de serviço local do Kubernetes:

    • Se você deseja implantar uma instância MongoDB no namespace, utilize mongodb-kubernetes-database-pods.

    • Se você deseja implantar o Ops Manager no namespace, use mongodb-kubernetes-appdb e mongodb-kubernetes-ops-manager.

    Copie e cole os exemplos aplicáveis e substitua o valor <namespace> pelo rótulo que identifica o namespace.

    helm template mongodb/mongodb-kubernetes \
    --set operator.namespace=<metadata.namespace> \
    --show-only templates/database-roles.yaml | kubectl apply -f -

Antes de implementar o Operador Kubernetes, configure os seguintes itens:

  1. Set the spec.template.spec.containers.name.env.name:WATCH_NAMESPACE in mongodb-kubernetes-openshift.yaml to "*". You must include the double quotation marks (") around the asterisk (*) in the YAML file.

    WATCH_NAMESPACE: "*"
  2. Crie os roles correspondentes para estas contas. Em mongodb-kubernetes-openshift.yaml, altere:

    kind: Role
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
    name: enterprise-operator

    para:

    kind: ClusterRole
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
    name: enterprise-operator
  3. Adicione o seguinte código ao ClusterRole que você acabou de modificar:

    - apiGroups:
    - ""
    resources:
    - namespaces
    verbs:
    - list
    - watch
  4. Em mongodb-kubernetes-openshift.yaml, altere:

    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
    name: enterprise-operator
    namespace: mongodb
    roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: Role
    name: enterprise-operator
    subjects:
    - kind: ServiceAccount
    name: enterprise-operator
    namespace: mongodb

    para:

    kind: ClusterRoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
    name: enterprise-operator
    namespace: mongodb
    roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: ClusterRole
    name: enterprise-operator
    subjects:
    - kind: ServiceAccount
    name: enterprise-operator
    namespace: mongodb
  5. Create the secret only in the namespace where you will deploy the Kubernetes Operator. If you deploy MongoDB resources in multiple namespaces or with a cluster-wide scope, the Kubernetes Operator synchronizes the secret across all watched namespaces. To learn more, see the registry.imagePullSecrets setting in the Helm installation settings.

    No arquivo mongodb-kubernetes.yaml, substitua <namespace> pelo namespace no qual você deseja instalar o Kubernetes Operator. Use oc ou a interface do usuário do OpenShift Container Platform para aplicar o arquivo YAML resultante.

    1---
    2kind: ServiceAccount
    3apiVersion: v1
    4metadata:
    5 name: mongodb-kubernetes-appdb
    6 namespace: <namespace>
    7---
    8kind: ServiceAccount
    9apiVersion: v1
    10metadata:
    11 name: mongodb-kubernetes-database-pods
    12 namespace: <namespace>
    13---
    14kind: ServiceAccount
    15apiVersion: v1
    16metadata:
    17 name: mongodb-kubernetes-ops-manager
    18 namespace: <namespace>
    19---
    20kind: Role
    21apiVersion: rbac.authorization.k8s.io/v1
    22metadata:
    23 name: mongodb-kubernetes-appdb
    24 namespace: <namespace>
    25rules:
    26 - apiGroups:
    27 - ""
    28 resources:
    29 - secrets
    30 verbs:
    31 - get
    32 - apiGroups:
    33 - ""
    34 resources:
    35 - pods
    36 verbs:
    37 - patch
    38---
    39kind: RoleBinding
    40apiVersion: rbac.authorization.k8s.io/v1
    41metadata:
    42 name: mongodb-kubernetes-appdb
    43 namespace: <namespace>
    44roleRef:
    45 apiGroup: rbac.authorization.k8s.io
    46 kind: Role
    47 name: mongodb-kubernetes-appdb
    48subjects:
    49 - kind: ServiceAccount
    50 name: mongodb-kubernetes-appdb
    51 namespace: <namespace>
    52...
  6. Crie contas de serviço locais do Kubernetes:

    Para cada namespace, crie algumas ou todas as seguintes contas de serviço local do Kubernetes:

    • Se você deseja implantar uma instância MongoDB no namespace, utilize mongodb-kubernetes-database-pods.

    • Se você deseja implantar o Ops Manager no namespace, use mongodb-kubernetes-appdb e mongodb-kubernetes-ops-manager.

    Copie e cole os exemplos aplicáveis e substitua o valor <namespace> pelo rótulo que identifica o namespace.

Antes de implementar o Operador Kubernetes, configure os seguintes itens:

  1. Configure o operador Kubernetes para observar todos os namespaces:

    helm install mongodb-kubernetes-operator mongodb/mongodb-kubernetes \
    --set operator.watchNamespace="*" \
  2. Create the secret only in the namespace where you will deploy the Kubernetes Operator. If you deploy MongoDB resources in multiple namespaces or with a cluster-wide scope, the Kubernetes Operator synchronizes the secret across all watched namespaces. To learn more, see the registry.imagePullSecrets setting in the Helm installation settings.

    No arquivo mongodb-kubernetes.yaml, substitua <namespace> pelo namespace no qual você deseja instalar o Kubernetes Operator. Use oc ou a interface do usuário do OpenShift Container Platform para aplicar o arquivo YAML resultante.

    1---
    2kind: ServiceAccount
    3apiVersion: v1
    4metadata:
    5 name: mongodb-kubernetes-appdb
    6 namespace: <namespace>
    7---
    8kind: ServiceAccount
    9apiVersion: v1
    10metadata:
    11 name: mongodb-kubernetes-database-pods
    12 namespace: <namespace>
    13---
    14kind: ServiceAccount
    15apiVersion: v1
    16metadata:
    17 name: mongodb-kubernetes-ops-manager
    18 namespace: <namespace>
    19---
    20kind: Role
    21apiVersion: rbac.authorization.k8s.io/v1
    22metadata:
    23 name: mongodb-kubernetes-appdb
    24 namespace: <namespace>
    25rules:
    26 - apiGroups:
    27 - ""
    28 resources:
    29 - secrets
    30 verbs:
    31 - get
    32 - apiGroups:
    33 - ""
    34 resources:
    35 - pods
    36 verbs:
    37 - patch
    38---
    39kind: RoleBinding
    40apiVersion: rbac.authorization.k8s.io/v1
    41metadata:
    42 name: mongodb-kubernetes-appdb
    43 namespace: <namespace>
    44roleRef:
    45 apiGroup: rbac.authorization.k8s.io
    46 kind: Role
    47 name: mongodb-kubernetes-appdb
    48subjects:
    49 - kind: ServiceAccount
    50 name: mongodb-kubernetes-appdb
    51 namespace: <namespace>
    52...
  3. Crie contas de serviço locais do Kubernetes:

    Para cada namespace, crie algumas ou todas as seguintes contas de serviço local do Kubernetes:

    • Se você deseja implantar uma instância MongoDB no namespace, utilize mongodb-kubernetes-database-pods.

    • Se você deseja implantar o Ops Manager no namespace, use mongodb-kubernetes-appdb e mongodb-kubernetes-ops-manager.

    Copie e cole os exemplos aplicáveis e substitua o valor <namespace> pelo rótulo que identifica o namespace.

    helm template mongodb/mongodb-kubernetes \
    --set operator.namespace=<metadata.namespace> \
    --show-only templates/database-roles.yaml | oc apply -f -

Depois de configurar o escopo dos Controladores MongoDB para o Operador Kubernetes, você pode: