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 do Operador Kubernetes para usar o mesmo namespace que os recursos. Nesse caso, o Operador do Kubernetes observa o Ops Manager e os MongoDB recursos no mesmo namespace.
Quando você instala o Operador Kubernetes, ele utiliza o namespace padrão.
O operador usa um subconjunto de namespaces
Você pode definir o escopo do Kubernetes Operator para usar um ou mais namespaces que diferem do namespace usado pelos recursos do Kubernetes Operator. Nesse caso, o Operador do Kubernetes observa o Ops Manager 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 namespacehelm install mongodb-kubernetes-operator mongodb/mongodb-kubernetes \ --set operator.watchNamespace='namespace-to-watch' <...># Watch both namespace-a and namespace-bhelm 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-prodhelm 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:
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.
Crie um ClusterRoleBinding para vincular ClusterRole a ServiceAccount. Esse
clusterRoleBindingvinculará oclusterRoleque você criou à ServiceAccount que o Kubernetes Operator está usando no namespace onde você o instalou.
Inclua o ClusterRole e o ClusterRoleBinding nos arquivos de configuração padrão que você aplica durante a instalação.
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-appdbemongodb-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:
Usando esses privilégios, crie um ClusterRole sem namespace e em todo o cluster.
Crie um ClusterRoleBinding em três namespaces:
mongodb,ns1ens2. Este ClusterRoleBinding vinculará o ClusterRole ao ServiceAccount no namespacemongodb. OclusterRoleBindingpermitirá ao Operador Kubernetes implantado nomongodbnamespace acessar os recursos descritos noclusterRoledo namespace de destino, ou seja, emmongodb,ns1ens2.
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 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.
Use o mongodb-kubernetes.yaml arquivo YAML de amostra do repositório do Github do MongoDB Controllers para o Kubernetes operador.
Set the
spec.template.spec.containers.name.env.name:WATCH_NAMESPACEin mongodb-kubernetes.yaml to"*". You must include the double quotation marks (") around the asterisk (*) in the YAML file.WATCH_NAMESPACE: "*"In mongodb-kubernetes.yaml, change:
kind: RoleapiVersion: rbac.authorization.k8s.io/v1metadata: name: mongodb-kubernetes-operatorpara:
kind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1metadata: name: mongodb-kubernetes-operatorAdicione o seguinte código ao
ClusterRoleque você acabou de modificar:- apiGroups: - "" resources: - namespaces verbs: - list - watchIn mongodb-kubernetes.yaml, change:
kind: RoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata: name: mongodb-kubernetes-operator namespace: mongodbroleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: mongodb-kubernetes-operatorsubjects: - kind: ServiceAccount name: mongodb-kubernetes-operator namespace: mongodbpara:
kind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata: name: mongodb-kubernetes-operator namespace: mongodbroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: mongodb-kubernetes-operatorsubjects: - kind: ServiceAccount name: mongodb-kubernetes-operator namespace: mongodbNo 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 .kind: ServiceAccountapiVersion: v1metadata: name: mongodb-kubernetes-appdb namespace: <namespace>kind: ServiceAccountapiVersion: v1metadata: name: mongodb-kubernetes-database-pods namespace: <namespace>kind: ServiceAccountapiVersion: v1metadata: name: mongodb-kubernetes-ops-manager namespace: <namespace>kind: RoleapiVersion: rbac.authorization.k8s.io/v1metadata: name: mongodb-kubernetes-appdb namespace: <namespace>rules: - apiGroups: - "" resources: - secrets verbs: - get - apiGroups: - "" resources: - pods verbs: - patchkind: RoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata: name: mongodb-kubernetes-appdb namespace: <namespace>roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: mongodb-kubernetes-appdbsubjects: - kind: ServiceAccount name: mongodb-kubernetes-appdb namespace: <namespace>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-appdbemongodb-kubernetes-ops-manager.
Copie e cole os exemplos aplicáveis e substitua o valor
<namespace>pelo rótulo que identifica o namespace.---kind: ServiceAccountapiVersion: v1metadata: name: mongodb-kubernetes-database-pods namespace: <namespace>---kind: ServiceAccountapiVersion: v1metadata: name: mongodb-kubernetes-appdb namespace: <namespace>---kind: ServiceAccountapiVersion: v1metadata: name: mongodb-kubernetes-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 mongodb-kubernetes-operator mongodb/mongodb-kubernetes \ --set operator.watchNamespace="*"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-appdbemongodb-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:
Use o mongodb-kubernetes-openshift.yaml arquivo YAML de amostra do repositório do Github dos MongoDB Controllers for Kubernetes operador.
Set the
spec.template.spec.containers.name.env.name:WATCH_NAMESPACEin mongodb-kubernetes-openshift.yaml to"*". You must include the double quotation marks (") around the asterisk (*) in the YAML file.WATCH_NAMESPACE: "*"Crie os roles correspondentes para estas contas. Em mongodb-kubernetes-openshift.yaml, altere:
kind: RoleapiVersion: rbac.authorization.k8s.io/v1metadata: name: enterprise-operatorpara:
kind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1metadata: name: enterprise-operatorAdicione o seguinte código ao
ClusterRoleque você acabou de modificar:- apiGroups: - "" resources: - namespaces verbs: - list - watchEm mongodb-kubernetes-openshift.yaml, altere:
kind: RoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata: name: enterprise-operator namespace: mongodbroleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: enterprise-operatorsubjects: - kind: ServiceAccount name: enterprise-operator namespace: mongodbpara:
kind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata: name: enterprise-operator namespace: mongodbroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: enterprise-operatorsubjects: - kind: ServiceAccount name: enterprise-operator namespace: mongodbCrie 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.imagePullSecretsnas configurações de instalação do Helm.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.kind: ServiceAccountapiVersion: v1metadata: name: mongodb-kubernetes-appdb namespace: <namespace>kind: ServiceAccountapiVersion: v1metadata: name: mongodb-kubernetes-database-pods namespace: <namespace>kind: ServiceAccountapiVersion: v1metadata: name: mongodb-kubernetes-ops-manager namespace: <namespace>kind: RoleapiVersion: rbac.authorization.k8s.io/v1metadata: name: mongodb-kubernetes-appdb namespace: <namespace>rules: - apiGroups: - "" resources: - secrets verbs: - get - apiGroups: - "" resources: - pods verbs: - patchkind: RoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata: name: mongodb-kubernetes-appdb namespace: <namespace>roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: mongodb-kubernetes-appdbsubjects: - kind: ServiceAccount name: mongodb-kubernetes-appdb namespace: <namespace>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-appdbemongodb-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:
Configure o operador Kubernetes para observar todos os namespaces:
helm install mongodb-kubernetes-operator mongodb/mongodb-kubernetes \ --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.imagePullSecretsnas configurações de instalação do Helm.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.kind: ServiceAccountapiVersion: v1metadata: name: mongodb-kubernetes-appdb namespace: <namespace>kind: ServiceAccountapiVersion: v1metadata: name: mongodb-kubernetes-database-pods namespace: <namespace>kind: ServiceAccountapiVersion: v1metadata: name: mongodb-kubernetes-ops-manager namespace: <namespace>kind: RoleapiVersion: rbac.authorization.k8s.io/v1metadata: name: mongodb-kubernetes-appdb namespace: <namespace>rules: - apiGroups: - "" resources: - secrets verbs: - get - apiGroups: - "" resources: - pods verbs: - patchkind: RoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata: name: mongodb-kubernetes-appdb namespace: <namespace>roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: mongodb-kubernetes-appdbsubjects: - kind: ServiceAccount name: mongodb-kubernetes-appdb namespace: <namespace>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-appdbemongodb-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 -
Próximos passos
Depois de configurar o escopo dos Controladores MongoDB para o Operador Kubernetes, você pode:
Leia as considerações.
Conclua os pré- requisitos.