Definir o escopo para a implantação do MongoDB Enterprise Kubernetes Operator
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
.
Escopos de implantação do operador Kubernetes
Você pode definir um destes escopos:
O operador usa o mesmo namespace único que os recursos
Você pode definir o escopo para o operador Kubernetes usar o mesmo namespace como recursos. Nesse caso, o Operador do Kubernetes observa o Ops Manager e os MongoDB
recursos do nesse mesmo namespace.
Quando você instala o Operador Kubernetes, ele usa o namespace padrão.
O operador usa um subconjunto de namespaces
Você pode definir o escopo do Operador Kubernetes para usar um ou mais namespaces que diferem do namespace usado pelos recursos do Kubernetes Operator. Neste caso, o Kubernetes Operador do observa MongoDB Ops Manager o e os MongoDB
recursos em um subconjunto de namespaces que você especifica.
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 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
Ao instalar o Operador Kubernetes para observar recursos em um ou mais namespaces diferentes do namespace no qual o Operador Kubernetes está distribuído:
Crie os seguintes recursos:
Um clusterRole com acesso a vários recursos. Para a definição completa do recurso, consulte o operator-roles.yaml exemplo. Este é um recurso com escopo de cluster.
Criar um ClusterRoleBinding para vincular ClusterRole com ServiceAccount. Esse
clusterRoleBinding
vinculará oclusterRole
que você criou à ServiceAccount que o Kubernetes Operator está usando no namespace onde você o instalou.
Incluir a ClusterRole e ClusterRoleBinding nos arquivos de configuração padrão que você aplica durante a instalação.
Criar contas de serviço locais 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-enterprise-database-pods
.Se você deseja implantar o Ops Manager no namespace, use
mongodb-enterprise-appdb
emongodb-enterprise-ops-manager
.
O exemplo a seguir ilustra como o ClusterRole e ClusterRoleBinding trabalhar 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
:
Usando esses privilégios, crie um ClusterRole em todo o cluster e sem namespace .
Criar um ClusterRoleBinding em três namespaces:
mongodb
,ns1
ens2
. Este ClusterRoleBinding vinculará o ClusterRole para a ServiceAccount nomongodb
namespace . OclusterRoleBinding
permitirá ao Operador Kubernetes implantado nomongodb
namespace acessar os recursos descritos noclusterRole
do namespace de destino, ou seja, emmongodb
,ns1
ens2
.
Consulte também operator.watchNamespace.
O operador usa o escopo em todo o cluster
Você pode definir o escopo do Operador Kubernetes para o cluster Kubernetes. Neste caso, o Kubernetes Operador do observa MongoDB Ops Manager o e MongoDB
os recursos do em todos os namespaces no Kubernetes cluster .
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.
Use o mongodb-enterprise.yaml amostra arquivoYAML do MongoDB Enterprise Kubernetes Operator Github repositório do .
Defina o
spec.template.spec.containers.name.env.name:WATCH_NAMESPACE
em mongodb-enterprise.yaml a"*"
. Você deve incluir aspas double ("
) em torno do asterisco (*
) no arquivo YAML .WATCH_NAMESPACE: "*" Em mongodb-enterprise.yaml, mudança:
kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: mongodb-enterprise-operator para:
kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: mongodb-enterprise-operator Adicione o seguinte código ao
ClusterRole
que você acabou de modificar:- apiGroups: - "" resources: - namespaces verbs: - list - watch Em mongodb-enterprise.yaml, mudança:
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 para:
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 No arquivo
mongodb-enterprise.yaml
, altere o valor<namespace>
para o namespace em que você deseja que o operador Kubernetes implemente recursos e aplique o arquivo YAML .1 2 kind: ServiceAccount 3 apiVersion: v1 4 metadata: 5 name: mongodb-enterprise-appdb 6 namespace: <namespace> 7 8 kind: ServiceAccount 9 apiVersion: v1 10 metadata: 11 name: mongodb-enterprise-database-pods 12 namespace: <namespace> 13 14 kind: ServiceAccount 15 apiVersion: v1 16 metadata: 17 name: mongodb-enterprise-ops-manager 18 namespace: <namespace> 19 20 kind: Role 21 apiVersion: rbac.authorization.k8s.io/v1 22 metadata: 23 name: mongodb-enterprise-appdb 24 namespace: <namespace> 25 rules: 26 - apiGroups: 27 - "" 28 resources: 29 - secrets 30 verbs: 31 - get 32 - apiGroups: 33 - "" 34 resources: 35 - pods 36 verbs: 37 - patch 38 39 kind: RoleBinding 40 apiVersion: rbac.authorization.k8s.io/v1 41 metadata: 42 name: mongodb-enterprise-appdb 43 namespace: <namespace> 44 roleRef: 45 apiGroup: rbac.authorization.k8s.io 46 kind: Role 47 name: mongodb-enterprise-appdb 48 subjects: 49 - kind: ServiceAccount 50 name: mongodb-enterprise-appdb 51 namespace: <namespace> 52 ... Criar 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-enterprise-database-pods
.Se você deseja implantar o Ops Manager no namespace, use
mongodb-enterprise-appdb
emongodb-enterprise-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-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 o Operador Kubernetes, configure os seguintes itens:
Configure o operador Kubernetes para observar todos os namespaces:
helm install enterprise-operator mongodb/enterprise-operator \ --set operator.watchNamespace="*" Criar 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-enterprise-database-pods
.Se você deseja implantar o Ops Manager no namespace, use
mongodb-enterprise-appdb
emongodb-enterprise-ops-manager
.
Copie e cole os exemplos aplicáveis e substitua o valor
<namespace>
pelo rótulo que identifica o namespace.helm template mongodb/enterprise-operator \ --set operator.namespace=<metadata.namespace> \ --show-only templates/database-roles.yaml | kubectl apply -f -
Antes de implementar o Operador Kubernetes, configure os seguintes itens:
Use o mongodb-enterprise-openshift.yaml amostra de arquivo YAML do MongoDB Enterprise Kubernetes Operator Github repositório do .
Defina o
spec.template.spec.containers.name.env.name:WATCH_NAMESPACE
em mongodb-enterprise-openshift.yaml a"*"
. Você deve incluir aspas double ("
) em torno do asterisco (*
) no arquivo YAML .WATCH_NAMESPACE: "*" Crie os roles correspondentes para estas contas. Em mongodb-enterprise-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 Adicione o seguinte código ao
ClusterRole
que você acabou de modificar:- apiGroups: - "" resources: - namespaces verbs: - list - watch Em mongodb-enterprise-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 Crie o segredo somente no namespace onde você implantará o Operador Kubernetes. Se você implantar recursos do MongoDB em vários namespaces ou com um escopo que abranja todo o cluster, o Kubernetes Operator sincroniza o segredo em todos os namespaces assistidos. Para saber mais, consulte a configuração
registry.imagePullSecrets
nas configurações de instalação do Helm.No arquivo
mongodb-enterprise.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 2 kind: ServiceAccount 3 apiVersion: v1 4 metadata: 5 name: mongodb-enterprise-appdb 6 namespace: <namespace> 7 8 kind: ServiceAccount 9 apiVersion: v1 10 metadata: 11 name: mongodb-enterprise-database-pods 12 namespace: <namespace> 13 14 kind: ServiceAccount 15 apiVersion: v1 16 metadata: 17 name: mongodb-enterprise-ops-manager 18 namespace: <namespace> 19 20 kind: Role 21 apiVersion: rbac.authorization.k8s.io/v1 22 metadata: 23 name: mongodb-enterprise-appdb 24 namespace: <namespace> 25 rules: 26 - apiGroups: 27 - "" 28 resources: 29 - secrets 30 verbs: 31 - get 32 - apiGroups: 33 - "" 34 resources: 35 - pods 36 verbs: 37 - patch 38 39 kind: RoleBinding 40 apiVersion: rbac.authorization.k8s.io/v1 41 metadata: 42 name: mongodb-enterprise-appdb 43 namespace: <namespace> 44 roleRef: 45 apiGroup: rbac.authorization.k8s.io 46 kind: Role 47 name: mongodb-enterprise-appdb 48 subjects: 49 - kind: ServiceAccount 50 name: mongodb-enterprise-appdb 51 namespace: <namespace> 52 ... Criar 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-enterprise-database-pods
.Se você deseja implantar o Ops Manager no namespace, use
mongodb-enterprise-appdb
emongodb-enterprise-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:
Configure o operador Kubernetes para observar todos os namespaces:
helm install enterprise-operator mongodb/enterprise-operator \ --set operator.watchNamespace="*" \ Crie o segredo somente no namespace onde você implantará o Operador Kubernetes. Se você implantar recursos do MongoDB em vários namespaces ou com um escopo que abranja todo o cluster, o Kubernetes Operator sincroniza o segredo em todos os namespaces assistidos. Para saber mais, consulte a configuração
registry.imagePullSecrets
nas configurações de instalação do Helm.No arquivo
mongodb-enterprise.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 2 kind: ServiceAccount 3 apiVersion: v1 4 metadata: 5 name: mongodb-enterprise-appdb 6 namespace: <namespace> 7 8 kind: ServiceAccount 9 apiVersion: v1 10 metadata: 11 name: mongodb-enterprise-database-pods 12 namespace: <namespace> 13 14 kind: ServiceAccount 15 apiVersion: v1 16 metadata: 17 name: mongodb-enterprise-ops-manager 18 namespace: <namespace> 19 20 kind: Role 21 apiVersion: rbac.authorization.k8s.io/v1 22 metadata: 23 name: mongodb-enterprise-appdb 24 namespace: <namespace> 25 rules: 26 - apiGroups: 27 - "" 28 resources: 29 - secrets 30 verbs: 31 - get 32 - apiGroups: 33 - "" 34 resources: 35 - pods 36 verbs: 37 - patch 38 39 kind: RoleBinding 40 apiVersion: rbac.authorization.k8s.io/v1 41 metadata: 42 name: mongodb-enterprise-appdb 43 namespace: <namespace> 44 roleRef: 45 apiGroup: rbac.authorization.k8s.io 46 kind: Role 47 name: mongodb-enterprise-appdb 48 subjects: 49 - kind: ServiceAccount 50 name: mongodb-enterprise-appdb 51 namespace: <namespace> 52 ... Criar 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-enterprise-database-pods
.Se você deseja implantar o Ops Manager no namespace, use
mongodb-enterprise-appdb
emongodb-enterprise-ops-manager
.
Copie e cole os exemplos aplicáveis e substitua o valor
<namespace>
pelo rótulo que identifica o namespace.helm template mongodb/enterprise-operator \ --set operator.namespace=<metadata.namespace> \ --show-only templates/database-roles.yaml | oc apply -f -
Próximos passos
Após configurar o escopo do MongoDB Enterprise Kubernetes Operator, você pode:
Leia as considerações.
Conclua os pré- requisitos.