MongoDB Enterprise Kubernetes Operator 배포 범위 설정
이 페이지의 내용
Kubernetes Operator를 설치하기 전에 Kubernetes Operator 배포의 범위를 설정할 수 있습니다. 범위는 Ops Manager 및 MongoDB
리소스를 배포하기 위해 선택한 네임스페이스에 따라 달라집니다.
Kubernetes 연산자 배포 범위
다음 범위 중 하나를 설정할 수 있습니다.
연산자가 리소스와 동일한 단일 네임스페이스를 사용합니다.
Kubernetes Operator가 리소스와 동일한 네임스페이스 을(를) 사용하도록 범위를 설정하다 수 있습니다. 이 경우 Kubernetes Kubernetes Operator는 MongoDB Ops Manager MongoDB
동일한 네임스페이스 에 있는 MongoDB Ops Manager 와 리소스를 감시합니다.
Kubernetes Operator를설치 하면 기본값 네임스페이스 를 사용합니다.
연산자가 네임스페이스의 하위 집합을 사용함
Kubernetes 연산자가 하나 이상의 네임스페이스 를 사용하도록 범위를 설정할 수 있습니다. Kubernetes Operator 리소스에서 사용하는 네임스페이스와 다릅니다. 이 경우 Kubernetes Operator는 네임스페이스 의 MongoDB
하위 집합에서 MongoDB Ops Manager와 리소스를 감시합니다. 지정합니다.
이 범위로 Kubernetes 연산자 인스턴스를 설치하려면 operator.watchNamespace 와 함께 helm
를 사용합니다. 매개변수입니다.
네임스페이스의 하위 집합을 감시하는 것은 단일 Kubernetes 연산자 인스턴스가 다른 클러스터 리소스 유형을 감시하는 배포에서 유용합니다. 예를 들어, 네임스페이스의 한 하위 집합에서 MongoDB
리소스를 감시하고 네임스페이스의 다른 하위 집합에서 MongoDBMultiCluster
리소스를 감시하도록 Kubernetes 연산자를 구성할 수 있습니다. 리소스 조정 중에 경합 상태를 방지하려면 Kubernetes 연산자가 감시하려는 각 사용자 지정 리소스 유형에 대해 범위를 네임스페이스의 고유한 하위 집합으로 설정해야 합니다.
helm
관련 설치 지침 을 따르되 operator.watchNamespace 에 하나 이상의 네임스페이스를 지정합니다. Kubernetes 연산자가 관찰할 수 있는 매개변수입니다.
# 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
Kubernetes 연산자가 배포된 네임스페이스가 아닌 하나 이상의 네임스페이스에 있는 리소스를 감시하기 위해 Kubernetes 연산자를 설치하는 경우:
다음 리소스를 만듭니다.
ClusterRole 여러 리소스에 액세스할 수 있습니다. 전체 리소스 정의는 operator-roles.yaml 을 참조하세요. 예. 이는 클러스터 범위 리소스입니다.
ClusterRoleBinding 만들기 ClusterRole 연결 ServiceAccount와 함께 사용합니다. 이
clusterRoleBinding
은(는) Kubernetes Operator가 설치한 네임스페이스에서 사용 중인 ServiceAccount로 생성한clusterRole
을(를) 바인딩합니다.
ClusterRole 포함 및 ClusterRoleBinding 설치 중에 적용하는 기본 구성 파일에 있습니다.
로컬 Kubernetes 서비스 계정을 생성합니다.
각 네임스페이스 에 대해 다음 로컬 Kubernetes ServiceAccounts의 일부 또는 전부를 생성합니다.
네임스페이스에 MongoDB 인스턴스를 배포하려면
mongodb-enterprise-database-pods
을(를) 사용합니다.네임스페이스에 Ops Manager를 배포하려면
mongodb-enterprise-appdb
및mongodb-enterprise-ops-manager
을 사용합니다.
다음 예제에서는 ClusterRole 이 및 ClusterRoleBinding 클러스터에서 함께 작동합니다.
mongodb
네임스페이스에 ServiceAccount를 만든 다음 이 네임스페이스에 Kubernetes 연산자를 설치한다고 가정해 보겠습니다. Kubernetes 연산자는 이 서비스 계정을 사용합니다.
네임스페이스 ns1
및 ns2
을 감시하도록 Kubernetes 연산자 범위를 설정하려면 다음을 수행합니다.
이러한 권한을 사용하여 클러스터 전체에 걸쳐 네임스페이스가 없는 ClusterRole 을 생성합니다. .
ClusterRoleBinding 만들기
mongodb
,ns1
및ns2
의 세 네임스페이스에 있습니다. 이 ClusterRoleBinding ClusterRole 을mongodb
바인딩합니다. 네임스페이스의 ServiceAccount에 추가합니다.clusterRoleBinding
를 사용하면mongodb
네임스페이스에 배포된 Kubernetes Operator가 대상 네임스페이스의clusterRole
, 즉mongodb
,ns1
및ns2
에 설명된 리소스에 액세스할 수 있습니다.
클러스터 전체 범위를 사용하는 연산자
Kubernetes Operator의 범위를 Kubernetes 클러스터로 설정할 수 있습니다. 이 경우 Kubernetes Operator는 MongoDB
모든 네임스페이스 에서 MongoDB Ops Manager 및 리소스를 Kubernetes 감시합니다. 클러스터에서.
중요
Kubernetes cluster당 cluster 전체 범위로 Kubernetes 연산자 인스턴스를 하나만 배포할 수 있습니다.
Kubernetes Operator의 cluster 전체 범위를 설정하려면 선호하는 설치 방법에 대한 지침을 따르십시오.
mongodb-enterprise.yaml 샘플YAML 파일 을 MongoDB Enterprise Kubernetes Operator Github 리포지토리 에서 가져옵니다.
spec.template.spec.containers.name.env.name:WATCH_NAMESPACE
mongodb-enterprise.yaml 에서 을(를)"*"
설정합니다. . YAML 파일 에서 double"
별표() 주위에*
따옴표()를 포함해야 합니다.WATCH_NAMESPACE: "*" mongodb-enterprise.yaml 에서 , 변경:
kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: mongodb-enterprise-operator 다음 대상:
kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: mongodb-enterprise-operator 방금 수정한
ClusterRole
에 다음 코드를 추가합니다.- apiGroups: - "" resources: - namespaces verbs: - list - watch mongodb-enterprise.yaml 에서 , 변경:
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 다음 대상:
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 mongodb-enterprise.yaml
파일 에서<namespace>
값을 Kubernetes Operator가 리소스를 배포 하고 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 ... 로컬 Kubernetes 서비스 계정 만들기 :
각 네임스페이스에 대해 다음 로컬 Kubernetes 서비스 계정 중 일부 또는 전부를 생성합니다. :
네임스페이스에 MongoDB 인스턴스를 배포하려면
mongodb-enterprise-database-pods
을(를) 사용합니다.네임스페이스에 Ops Manager를 배포하려면
mongodb-enterprise-appdb
및mongodb-enterprise-ops-manager
을 사용합니다.
해당 예제를 복사하여 붙여넣고
<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>
Kubernetes Operator를 배포 하기 전에 다음 항목을 구성합니다.
모든 네임스페이스를 감시하도록 Kubernetes Operator를 구성합니다.
helm install enterprise-operator mongodb/enterprise-operator \ --set operator.watchNamespace="*" 로컬 Kubernetes 서비스 계정 만들기 :
각 네임스페이스에 대해 다음 로컬 Kubernetes 서비스 계정 중 일부 또는 전부를 생성합니다. :
네임스페이스에 MongoDB 인스턴스를 배포하려면
mongodb-enterprise-database-pods
을(를) 사용합니다.네임스페이스에 Ops Manager를 배포하려면
mongodb-enterprise-appdb
및mongodb-enterprise-ops-manager
을 사용합니다.
해당 예제를 복사하여 붙여넣고
<namespace>
값을 네임스페이스를 식별하는 레이블로 바꿉니다.helm template mongodb/enterprise-operator \ --set operator.namespace=<metadata.namespace> \ --show-only templates/database-roles.yaml | kubectl apply -f -
Kubernetes Operator를 배포 하기 전에 다음 항목을 구성합니다.
mongodb-enterprise-openshift.yaml MongoDB Enterprise Kubernetes Operator Github 리포지토리 에서 샘플 YAML 파일 을 가져옵니다.
spec.template.spec.containers.name.env.name:WATCH_NAMESPACE
mongodb-enterprise-openshift.yaml 에서 을(를)"*"
설정합니다. . YAML 파일 에서 double"
별표() 주위에*
따옴표()를 포함해야 합니다.WATCH_NAMESPACE: "*" 이러한 계정에 해당하는 역할을 만듭니다. mongodb-enterprise-openshift.yaml에서, 변경합니다:
kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: enterprise-operator 다음 대상:
kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: enterprise-operator 방금 수정한
ClusterRole
에 다음 코드를 추가합니다.- apiGroups: - "" resources: - namespaces verbs: - list - watch mongodb-enterprise-openshift.yaml에서, 변경합니다:
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 다음 대상:
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 Kubernetes Operator를 배포 네임스페이스 에만 시크릿을 생성합니다. 여러 네임스페이스 또는 클러스터 전체 범위 에 MongoDB 리소스를 배포 경우 Kubernetes Operator는 모든 감시 대상 네임스페이스에서 시크릿을 동기화합니다. 학습 내용은 Helm 설치 설정의
registry.imagePullSecrets
설정을 참조하세요.mongodb-enterprise.yaml
파일 에서<namespace>
을 Kubernetes Operator를 설치하려는 네임스페이스 로 바꿉니다. oc 사용 또는 OpenShift Container Platform UI 를 사용하여 결과 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 ... 로컬 Kubernetes 서비스 계정 만들기 :
각 네임스페이스에 대해 다음 로컬 Kubernetes 서비스 계정 중 일부 또는 전부를 생성합니다. :
네임스페이스에 MongoDB 인스턴스를 배포하려면
mongodb-enterprise-database-pods
을(를) 사용합니다.네임스페이스에 Ops Manager를 배포하려면
mongodb-enterprise-appdb
및mongodb-enterprise-ops-manager
을 사용합니다.
해당 예제를 복사하여 붙여넣고
<namespace>
값을 네임스페이스를 식별하는 레이블로 바꿉니다.
Kubernetes Operator를 배포 하기 전에 다음 항목을 구성합니다.
모든 네임스페이스를 감시하도록 Kubernetes Operator를 구성합니다.
helm install enterprise-operator mongodb/enterprise-operator \ --set operator.watchNamespace="*" \ Kubernetes Operator를 배포 네임스페이스 에만 시크릿을 생성합니다. 여러 네임스페이스 또는 클러스터 전체 범위 에 MongoDB 리소스를 배포 경우 Kubernetes Operator는 모든 감시 대상 네임스페이스에서 시크릿을 동기화합니다. 학습 내용은 Helm 설치 설정의
registry.imagePullSecrets
설정을 참조하세요.mongodb-enterprise.yaml
파일 에서<namespace>
을 Kubernetes Operator를 설치하려는 네임스페이스 로 바꿉니다. oc 사용 또는 OpenShift Container Platform UI 를 사용하여 결과 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 ... 로컬 Kubernetes 서비스 계정 만들기 :
각 네임스페이스에 대해 다음 로컬 Kubernetes 서비스 계정 중 일부 또는 전부를 생성합니다. :
네임스페이스에 MongoDB 인스턴스를 배포하려면
mongodb-enterprise-database-pods
을(를) 사용합니다.네임스페이스에 Ops Manager를 배포하려면
mongodb-enterprise-appdb
및mongodb-enterprise-ops-manager
을 사용합니다.
해당 예제를 복사하여 붙여넣고
<namespace>
값을 네임스페이스를 식별하는 레이블로 바꿉니다.helm template mongodb/enterprise-operator \ --set operator.namespace=<metadata.namespace> \ --show-only templates/database-roles.yaml | oc apply -f -
다음 단계
MongoDB Enterprise Kubernetes Operator의 범위를 설정한 후에는 다음을 수행할 수 있습니다.