Docs Menu
Docs Home
/ /
/ / / /

Establecer el alcance para la implementación del operador Kubernetes de MongoDB Enterprise

Antes de instalar el operador de Kubernetes, puede definir el alcance de su implementación. Los alcances dependen de los espacios de nombres en los que elija implementar Ops Manager y MongoDB recursos.

Puede configurar uno de estos ámbitos:

Puedes configurar el alcance del operador de Kubernetes para que use el mismo espacio de nombres que los recursos. En este caso, el operador de Kubernetes supervisa Ops Manager y los MongoDB recursos en ese mismo espacio de nombres.

Cuando instala el operador de Kubernetes, utiliza el espacio de nombres predeterminado.

Puede configurar el alcance del operador de Kubernetes para que use uno o más espacios de nombres diferentes del que usan sus recursos. En este caso, el operador de Kubernetes supervisa Ops Manager y los MongoDB recursos en un subconjunto de espacios de nombres que usted especifique.

Para instalar las instancias del operador de Kubernetes con este alcance, utilice helm con el parámetro operator.watchNamespace.

Monitorear un subconjunto de espacios de nombres es útil en implementaciones donde una sola instancia de Kubernetes Operator monitorea un tipo de recurso de clúster diferente. Por ejemplo, puede configurar Kubernetes Operator para que monitoree MongoDB recursos en un subconjunto de espacios de nombres y MongoDBMultiCluster recursos en otro. Para evitar condiciones de competencia durante la conciliación de recursos, asegúrese de asignar el alcance a un subconjunto de espacios de nombres distinto para cada tipo de recurso personalizado que desee que Kubernetes Operator monitorice.

Siga las instrucciones de instalación helmcorrespondientes para, pero especifique uno o más espacios de nombres en el parámetro operator.watchNamespace para que el operador de Kubernetes observe:

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

Al instalar el operador de Kubernetes para observar recursos en uno o más espacios de nombres distintos del espacio de nombres en el que está implementado el operador de Kubernetes:

  1. Crea los siguientes recursos:

    • Un ClusterRole con acceso a múltiples recursos. Para ver la definición completa del recurso, consulte el ejemplo operator-roles.yaml. Este recurso tiene alcance de clúster.

    • Crea un ClusterRoleBinding para vincular ClusterRole con ServiceAccount. Este clusterRoleBinding vinculará el clusterRole que creaste con la ServiceAccount que usa el operador de Kubernetes en el espacio de nombres donde lo instalaste.

  2. Incluya ClusterRole y ClusterRoleBinding en los archivos de configuración predeterminados que aplique durante la instalación.

  3. Crear cuentas de servicio de Kubernetes locales:

    Para cada espacio de nombres, cree algunas o todas las siguientes cuentas de servicio de Kubernetes locales:

    • Si desea implementar una instancia de MongoDB en el espacio de nombres, utilice mongodb-enterprise-database-pods.

    • Si desea implementar Ops Manager en el espacio de nombres, utilice mongodb-enterprise-appdb y mongodb-enterprise-ops-manager.

El siguiente ejemplo ilustra cómo ClusterRole y ClusterRoleBinding funcionan juntos en el clúster.

Supongamos que crea una cuenta de servicio en el espacio de nombres mongodb y luego instala el operador de Kubernetes en este espacio. El operador de Kubernetes utiliza esta cuenta de servicio.

Para configurar el alcance del operador de Kubernetes para observar los espacios de nombres ns1 y ns2:

  1. Obtenga privilegios de administrador del clúster.

  2. Usando estos privilegios, crea un ClusterRole a nivel de clúster, sin espacio de nombres.

  3. Cree un ClusterRoleBinding en tres espacios demongodb nombres:, ns1 ns2y. Este ClusterRoleBinding vinculará el ClusterRole a la ServiceAccount en el mongodb espacio de nombres. El clusterRoleBinding permitirá que el operador de Kubernetes implementado en el mongodb espacio de nombres acceda a los recursos descritos en el clusterRole del espacio de nombres de destino, es decir,mongodb ns1 en,ns2 y.

Véase también operator.watchNamespace.

Puedes establecer el alcance del operador de Kubernetes en el clúster de Kubernetes. En este caso, el operador de Kubernetes supervisa los recursos de Ops Manager y MongoDB en todos los espacios de nombres del clúster de Kubernetes.

Importante

Puede implementar solo una instancia del operador de Kubernetes con un alcance de todo el clúster por cada clúster de Kubernetes.

Para establecer un alcance a nivel de clúster para el operador de Kubernetes, siga las instrucciones para su método de instalación preferido.

  1. Utilice el ejemplo mongodb-enterprise.yaml ArchivoYAML del repositorio de GitHub de MongoDB Enterprise Kubernetes Operator.

  2. Establezca spec.template.spec.containers.name.env.name:WATCH_NAMESPACE en mongodb-enterprise.yaml "*"como. Debe incluir las comillas dobles" () alrededor del asterisco* () en el archivo YAML.

    WATCH_NAMESPACE: "*"
  3. En mongodb-enterprise.yaml, cambie:

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

    a:

    kind: ClusterRole
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
    name: mongodb-enterprise-operator
  4. Añade el siguiente código al ClusterRole que acabas de modificar:

    - apiGroups:
    - ""
    resources:
    - namespaces
    verbs:
    - list
    - watch
  5. En mongodb-enterprise.yaml, cambie:

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

    a:

    kind: ClusterRoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
    name: mongodb-enterprise-operator
    namespace: mongodb
    roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: ClusterRole
    name: mongodb-enterprise-operator
    subjects:
    - kind: ServiceAccount
    name: mongodb-enterprise-operator
    namespace: mongodb
  6. En el mongodb-enterprise.yaml archivo, cambie el <namespace> valor al espacio de nombres donde desea que el operador de Kubernetes implemente recursos y aplique el archivo YAML.

    1---
    2kind: ServiceAccount
    3apiVersion: v1
    4metadata:
    5 name: mongodb-enterprise-appdb
    6 namespace: <namespace>
    7---
    8kind: ServiceAccount
    9apiVersion: v1
    10metadata:
    11 name: mongodb-enterprise-database-pods
    12 namespace: <namespace>
    13---
    14kind: ServiceAccount
    15apiVersion: v1
    16metadata:
    17 name: mongodb-enterprise-ops-manager
    18 namespace: <namespace>
    19---
    20kind: Role
    21apiVersion: rbac.authorization.k8s.io/v1
    22metadata:
    23 name: mongodb-enterprise-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-enterprise-appdb
    43 namespace: <namespace>
    44roleRef:
    45 apiGroup: rbac.authorization.k8s.io
    46 kind: Role
    47 name: mongodb-enterprise-appdb
    48subjects:
    49 - kind: ServiceAccount
    50 name: mongodb-enterprise-appdb
    51 namespace: <namespace>
    52...
  7. Crear cuentas de servicio locales de Kubernetes:

    Para cada espacio de nombres, cree algunas o todas las siguientes cuentas de servicio locales de Kubernetes:

    • Si desea implementar una instancia de MongoDB en el espacio de nombres, utilice mongodb-enterprise-database-pods.

    • Si desea implementar Ops Manager en el espacio de nombres, utilice mongodb-enterprise-appdb y mongodb-enterprise-ops-manager.

    Copia y pega los ejemplos aplicables y reemplaza el valor <namespace> con la etiqueta que identifica el espacio de nombres.

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

Antes de implementar el operador de Kubernetes, configure los siguientes elementos:

  1. Configure el operador de Kubernetes para vigilar todos los espacios de nombres:

    helm install enterprise-operator mongodb/enterprise-operator \
    --set operator.watchNamespace="*"
  2. Crear cuentas de servicio locales de Kubernetes:

    Para cada espacio de nombres, cree algunas o todas las siguientes cuentas de servicio locales de Kubernetes:

    • Si desea implementar una instancia de MongoDB en el espacio de nombres, utilice mongodb-enterprise-database-pods.

    • Si desea implementar Ops Manager en el espacio de nombres, utilice mongodb-enterprise-appdb y mongodb-enterprise-ops-manager.

    Copia y pega los ejemplos aplicables y reemplaza el valor <namespace> con la etiqueta que identifica el espacio de nombres.

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

Antes de implementar el operador de Kubernetes, configure los siguientes elementos:

  1. Utilice el archivo YAMLde muestra mongodb-enterprise-openshift.yaml del repositorio de GitHub de MongoDB Enterprise Kubernetes Operator.

  2. Establezca spec.template.spec.containers.name.env.name:WATCH_NAMESPACE en mongodb-enterprise-openshift.yaml "*"como. Debe incluir las comillas dobles" () alrededor del asterisco* () en el archivo YAML.

    WATCH_NAMESPACE: "*"
  3. Cree los roles correspondientes para estas cuentas. En mongodb-enterprise-openshift.yaml, modifique:

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

    a:

    kind: ClusterRole
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
    name: enterprise-operator
  4. Añade el siguiente código al ClusterRole que acabas de modificar:

    - apiGroups:
    - ""
    resources:
    - namespaces
    verbs:
    - list
    - watch
  5. En mongodb-enterprise-openshift.yaml, cambie:

    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

    a:

    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
  6. Cree el secreto únicamente en el espacio de nombres donde implementará el operador de Kubernetes. Si implementa recursos de MongoDB en varios espacios de nombres o con un alcance que abarca todo el clúster, el operador de Kubernetes sincroniza el secreto en todos los espacios de nombres supervisados. Para obtener más información, consulte la registry.imagePullSecrets configuración en la configuración de instalación de Helm.

    En el mongodb-enterprise.yaml archivo, reemplace <namespace> por el espacio de nombres donde desea instalar el operador de Kubernetes. Use oc o la interfaz de usuario de OpenShift Container Platform para aplicar el archivo YAML resultante.

    1---
    2kind: ServiceAccount
    3apiVersion: v1
    4metadata:
    5 name: mongodb-enterprise-appdb
    6 namespace: <namespace>
    7---
    8kind: ServiceAccount
    9apiVersion: v1
    10metadata:
    11 name: mongodb-enterprise-database-pods
    12 namespace: <namespace>
    13---
    14kind: ServiceAccount
    15apiVersion: v1
    16metadata:
    17 name: mongodb-enterprise-ops-manager
    18 namespace: <namespace>
    19---
    20kind: Role
    21apiVersion: rbac.authorization.k8s.io/v1
    22metadata:
    23 name: mongodb-enterprise-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-enterprise-appdb
    43 namespace: <namespace>
    44roleRef:
    45 apiGroup: rbac.authorization.k8s.io
    46 kind: Role
    47 name: mongodb-enterprise-appdb
    48subjects:
    49 - kind: ServiceAccount
    50 name: mongodb-enterprise-appdb
    51 namespace: <namespace>
    52...
  7. Crear cuentas de servicio locales de Kubernetes:

    Para cada espacio de nombres, cree algunas o todas las siguientes cuentas de servicio locales de Kubernetes:

    • Si desea implementar una instancia de MongoDB en el espacio de nombres, utilice mongodb-enterprise-database-pods.

    • Si desea implementar Ops Manager en el espacio de nombres, utilice mongodb-enterprise-appdb y mongodb-enterprise-ops-manager.

    Copia y pega los ejemplos aplicables y reemplaza el valor <namespace> con la etiqueta que identifica el espacio de nombres.

Antes de implementar el operador de Kubernetes, configure los siguientes elementos:

  1. Configure el operador de Kubernetes para vigilar todos los espacios de nombres:

    helm install enterprise-operator mongodb/enterprise-operator \
    --set operator.watchNamespace="*" \
  2. Cree el secreto únicamente en el espacio de nombres donde implementará el operador de Kubernetes. Si implementa recursos de MongoDB en varios espacios de nombres o con un alcance que abarca todo el clúster, el operador de Kubernetes sincroniza el secreto en todos los espacios de nombres supervisados. Para obtener más información, consulte la registry.imagePullSecrets configuración en la configuración de instalación de Helm.

    En el mongodb-enterprise.yaml archivo, reemplace <namespace> por el espacio de nombres donde desea instalar el operador de Kubernetes. Use oc o la interfaz de usuario de OpenShift Container Platform para aplicar el archivo YAML resultante.

    1---
    2kind: ServiceAccount
    3apiVersion: v1
    4metadata:
    5 name: mongodb-enterprise-appdb
    6 namespace: <namespace>
    7---
    8kind: ServiceAccount
    9apiVersion: v1
    10metadata:
    11 name: mongodb-enterprise-database-pods
    12 namespace: <namespace>
    13---
    14kind: ServiceAccount
    15apiVersion: v1
    16metadata:
    17 name: mongodb-enterprise-ops-manager
    18 namespace: <namespace>
    19---
    20kind: Role
    21apiVersion: rbac.authorization.k8s.io/v1
    22metadata:
    23 name: mongodb-enterprise-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-enterprise-appdb
    43 namespace: <namespace>
    44roleRef:
    45 apiGroup: rbac.authorization.k8s.io
    46 kind: Role
    47 name: mongodb-enterprise-appdb
    48subjects:
    49 - kind: ServiceAccount
    50 name: mongodb-enterprise-appdb
    51 namespace: <namespace>
    52...
  3. Crear cuentas de servicio locales de Kubernetes:

    Para cada espacio de nombres, cree algunas o todas las siguientes cuentas de servicio locales de Kubernetes:

    • Si desea implementar una instancia de MongoDB en el espacio de nombres, utilice mongodb-enterprise-database-pods.

    • Si desea implementar Ops Manager en el espacio de nombres, utilice mongodb-enterprise-appdb y mongodb-enterprise-ops-manager.

    Copia y pega los ejemplos aplicables y reemplaza el valor <namespace> con la etiqueta que identifica el espacio de nombres.

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

Después de configurar el alcance para el operador Kubernetes de MongoDB Enterprise, puede:

En esta página