Docs Menu
Docs Home
/
MongoDB Enterprise Kubernetes 연산자
/

다중 Kubernetes 클러스터에 복제본 세트 배포

이 페이지의 내용

  • MongoDBMultiCluster 리소스 배포

이 절차에 따라 다중 Kubernetes 클러스터 MongoDB 배포에서 멤버 Kubernetes 클러스터에 새 복제본 세트를 생성합니다.

이 절차를 통해 복제본 세트 설정하다 리소스 대한 다양한 설정(예: statefulSet 구성에 대한 재정의)을 설정할 수 있습니다. 이 절차를 사용하는 대신 기본값 설정으로 다중 Kubernetes 클러스터 MongoDB deployment 를 생성하는 Multi-Kubernetes-Cluster Quick Start 를 사용할 수 있습니다.

시작하기 전에

TLS-Encrypted Connections 탭 에서 다음 절차를 사용할 수 있습니다.

  • MongoDBMultiCluster 리소스 배포

  • MongoDBMultiCluster 리소스에 대한 TLS 인증서 갱신

이 절차는 복제본 세트 의 MongoDB 호스트 간에, 그리고 클라이언트 애플리케이션과 MongoDB 배포 간에 TLS암호화 연결을 설정합니다.

시작하기 전에 TLS 암호화 를 위한 유효한 인증서가 있어야 합니다.

1

kubectl 명령을 실행하여 MongoDBMultiCluster 리소스 인증서를 저장하는 새 시크릿을 만듭니다.

kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \
--namespace=<metadata.namespace> \
create secret tls <prefix>-<metadata.name>-cert \
--cert=<resource-tls-cert> \
--key=<resource-tls-key>

참고

시크릿 앞에 <prefix>-<metadata.name> 을(를) 붙여야 합니다.

예를 예시 my-deployment mdb 배포서버 서버를 호출하고 접두사를 로 설정하다 하는 경우 클라이언트 TLS 통신에 대한 TLS 시크릿의 이름을 로 지정해야 mdb-my-deployment-cert 합니다. 또한 내부 클러스터 인증 (활성화된 경우)을 위한 TLS 시크릿의 이름을 mdb-my-deployment-clusterfile 로 지정해야 합니다.

2

kubectl 명령을 실행하여 CAMongoDBMultiCluster 리소스에 연결합니다. MongoDBMultiCluster 리소스에 대해 항상 ca-pem 의 이름을 지정해야 하는 CA 인증서 파일을 지정합니다.

kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \
--namespace=<metadata.namespace> \
create configmap custom-ca -from-file=ca-pem=<your-custom-ca-file>
3

아직 실행하지 않은 경우 다음 명령을 실행하여 중앙 cluster에서 기본 네임스페이스의 모든 kubectl 명령을 실행합니다.

kubectl config use-context $MDB_CENTRAL_CLUSTER_FULL_NAME
kubectl config set-context $(kubectl config current-context) \
--namespace=mongodb
4
  1. 샘플 복제본 세트 YAML 파일을 복사하여 새 텍스트 파일에 붙여넣습니다.

  2. 원하는 복제본 세트 구성과 일치하도록 파일 설정을 변경합니다.

1# This example provides statefulSet overrides per cluster.
2
3apiVersion: mongodb.com/v1
4kind: MongoDBMultiCluster
5metadata:
6 name: multi-replica-set
7spec:
8 version: 6.0.0-ent
9 type: ReplicaSet
10 duplicateServiceObjects: false
11 credentials: my-credentials
12 opsManager:
13 configMapRef:
14 name: my-project
15 clusterSpecList:
16 - clusterName: cluster1.example.com
17 members: 2
18 statefulSet:
19 spec:
20 template:
21 spec:
22 containers:
23 # Example of custom sidecar containers. Remove it before using the file in production.
24 - name: sidecar1
25 image: busybox
26 command: [ "sleep" ]
27 args: [ "infinity" ]
28 # Use the following settings to override the default storage size of the "data" Persistent Volume.
29 volumeClaimTemplates:
30 - metadata:
31 name: data
32 spec:
33 resources:
34 requests:
35 storage: 1Gi
36 - clusterName: cluster2.example.com
37 members: 1
38 statefulSet:
39 spec:
40 template:
41 spec:
42 containers:
43 # Example of custom sidecar containers. Remove it before using the file in production.
44 - name: sidecar2
45 image: busybox
46 command: [ "sleep" ]
47 args: [ "infinity" ]
48 volumeClaimTemplates:
49 - metadata:
50 name: data
51 spec:
52 resources:
53 requests:
54 storage: 1Gi
55 - clusterName: cluster3.example.com
56 members: 1
57 statefulSet:
58 spec:
59 template:
60 spec:
61 containers:
62 # Example of custom sidecar containers. Remove it before using the file in production.
63 - name: sidecar3
64 image: busybox
65 command: [ "sleep" ]
66 args: [ "infinity" ]
67 volumeClaimTemplates:
68 - metadata:
69 name: data
70 spec:
71 resources:
72 requests:
73 storage: 1Gi
74
75...
5
유형
설명
예시
문자열

MongoDBMultiCluster 리소스의 레이블입니다.

리소스 이름은 44자 이내여야 합니다.

metadata.name이름 도 참조하세요. Kubernetes 문서에서 확인 가능합니다.

multi-replica-set
문자열

MongoDBMultiCluster 리소스가 실행해야 하는 MongoDB의 버전입니다.

형식은 커뮤니티 에디션의 경우 X.Y.Z, 엔터프라이즈 에디션의 경우 X.Y.Z-ent여야 합니다.

중요: 호환되는 MongoDB Server 버전 을 선택해야 합니다. 호환되는 버전은 MongoDB database 리소스 가 사용하는 기본 이미지에 따라 다릅니다.

MongoDB 버전 관리에 대해 자세히 알아보려면 MongoDB 매뉴얼의 MongoDB 버전 관리를 참조하세요.

6.0.0-ent
spec
.opsManager
.configMapRef
문자열

ConfigMap 의 이름 MongoDB Ops Manager 연결 구성을 사용합니다. spec.cloudManager.configMapRef.name 설정은 이 설정의 별칭이며 대신 사용할 수 있습니다.

이 값은 생성하려는 리소스와 동일한 네임스페이스에 존재해야 합니다.

중요: Kubernetes Operator는 ConfigMap에 대한 모든 변경 사항을 추적하고 MongoDB 리소스 상태를 조정합니다.

<my-project>
spec
.clusterSpecList
.clusterName
문자열
MongoDBMultiCluster 리소스에 있는 cluster의 이름입니다.
cluster1.example.com
spec
.clusterSpecList
.members
integer
이 클러스터의 노드 수입니다.
2
spec
.clusterSpecList
.statefulSet
.spec
컬렉션

선택 사항.

StatefulSet 에 대한 구성을 제공합니다. 다중 Kubernetes 클러스터 MongoDB deployment 에서 클러스터의 각 StatefulSet에 대해 재정의합니다. clusterSpecList 아래의 개별 클러스터 수준에서 지정된 경우, 전체 다중 Kubernetes 클러스터 MongoDB deployment 에 대한 StatefulSet의 글로벌 구성을 재정의합니다. 멀티-Kubernetes-Cluster 리소스 사양StatefulSet v1 앱 Kubernetes 문서를 참조하세요.

예제를 참조하세요.
spec
.clusterSpecList
.statefulSet
.spec
.volumeClaimTemplates
.spec
컬렉션
선택 사항. 지정된 경우, 볼륨 클레임 템플릿 의 기본 스토리지 크기에 대한 클러스터별 재정의를 제공합니다. , 데이터를 저장하는 영구 볼륨의 경우.
예제를 참조하세요.
문자열

Operator가 MongoDB Ops Manager와 통신할 수 있도록 MongoDB Ops Manager API 인증 자격 증명으로 생성 한 시크릿의 이름입니다.Kubernetes

자격 증명을 보유하고 있는 Ops Manager 쿠버네티스 시크릿 객체는 생성하려는 리소스와 동일한 네임스페이스에 존재해야 합니다.

중요: Kubernetes Operator는 시크릿에 대한 모든 변경 사항을 추적하고 MongoDB 리소스 상태를 조정합니다.

<mycredentials>
문자열
생성할 MongoDB 리소스 유형입니다. 이 필드에 지원되는 유일한 값은 ReplicaSet 입니다. 제한 사항을 참조하세요.
ReplicaSet
6

객체 에 선택적 설정을 추가할 수도 있습니다. 사양. 멀티-Kubernetes-Cluster 리소스 사양을 참조하세요.

7
8

모든 디렉토리에서 다음 Kubernetes 명령을 호출하여 복제본 세트를 만듭니다.

kubectl apply -f <replica-set-conf>.yaml
9

MongoDBMultiCluster 리소스의 상태를 확인하려면 중앙 cluster에서 다음 명령을 사용합니다.

kubectl get mdbmc <resource-name> -o yaml -w

-w(watch) 플래그 설정이 적용된 경우, 구성이 변경되면 상태 단계가 Running 상태를 달성할 때까지 출력이 즉시 새로 고침 됩니다. 리소스 배포 상태에 대해 자세히 알아보려면 Kubernetes Operator 문제 해결을 참조하세요.

다음 절차에 따라 TLS 인증서를 주기적으로 갱신합니다.

1

kubectl 명령을 실행하여 기존 MongoDBMultiCluster 시크릿 을 갱신합니다. 리소스에 대한 인증서를 저장합니다.

kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \
--namespace=<metadata.namespace> \
create secret tls <prefix>-<metadata.name>-cert \
--cert=<resource-tls-cert> \
--key=<resource-tls-key> \
--dry-run=client \
-o yaml |
kubectl apply -f -

이 절차에서는 복제본 세트 에 있는 MongoDB 호스트 간 연결과 클라이언트 애플리케이션과 MongoDB 배포 간 연결을 암호화하지 않습니다.

1

아직 실행하지 않은 경우 다음 명령을 실행하여 중앙 cluster에서 기본 네임스페이스의 모든 kubectl 명령을 실행합니다.

kubectl config use-context $MDB_CENTRAL_CLUSTER_FULL_NAME
kubectl config set-context $(kubectl config current-context) \
--namespace=mongodb
2
  1. 샘플 복제본 세트 YAML 파일을 복사하여 새 텍스트 파일에 붙여넣습니다.

  2. 원하는 복제본 세트 구성과 일치하도록 파일 설정을 변경합니다.

1# This example provides statefulSet overrides per cluster.
2
3apiVersion: mongodb.com/v1
4kind: MongoDBMultiCluster
5metadata:
6 name: multi-replica-set
7spec:
8 version: 6.0.0-ent
9 type: ReplicaSet
10 duplicateServiceObjects: false
11 credentials: my-credentials
12 opsManager:
13 configMapRef:
14 name: my-project
15 clusterSpecList:
16 - clusterName: cluster1.example.com
17 members: 2
18 statefulSet:
19 spec:
20 template:
21 spec:
22 containers:
23 # Example of custom sidecar containers. Remove it before using the file in production.
24 - name: sidecar1
25 image: busybox
26 command: [ "sleep" ]
27 args: [ "infinity" ]
28 # Use the following settings to override the default storage size of the "data" Persistent Volume.
29 volumeClaimTemplates:
30 - metadata:
31 name: data
32 spec:
33 resources:
34 requests:
35 storage: 1Gi
36 - clusterName: cluster2.example.com
37 members: 1
38 statefulSet:
39 spec:
40 template:
41 spec:
42 containers:
43 # Example of custom sidecar containers. Remove it before using the file in production.
44 - name: sidecar2
45 image: busybox
46 command: [ "sleep" ]
47 args: [ "infinity" ]
48 volumeClaimTemplates:
49 - metadata:
50 name: data
51 spec:
52 resources:
53 requests:
54 storage: 1Gi
55 - clusterName: cluster3.example.com
56 members: 1
57 statefulSet:
58 spec:
59 template:
60 spec:
61 containers:
62 # Example of custom sidecar containers. Remove it before using the file in production.
63 - name: sidecar3
64 image: busybox
65 command: [ "sleep" ]
66 args: [ "infinity" ]
67 volumeClaimTemplates:
68 - metadata:
69 name: data
70 spec:
71 resources:
72 requests:
73 storage: 1Gi
74
75...
3
유형
설명
예시
문자열

MongoDBMultiCluster 리소스의 레이블입니다.

리소스 이름은 44자 이내여야 합니다.

metadata.name 이름 도 참조하세요. Kubernetes 문서에서 확인 가능합니다.

multi-replica-set
문자열

MongoDBMultiCluster 리소스가 실행해야 하는 MongoDB의 버전입니다.

형식은 커뮤니티 에디션의 경우 X.Y.Z, 엔터프라이즈 에디션의 경우 X.Y.Z-ent여야 합니다.

중요: 호환되는 MongoDB Server 버전 을 선택해야 합니다. 호환되는 버전은 MongoDB database 리소스 가 사용하는 기본 이미지에 따라 다릅니다.

MongoDB 버전 관리에 대해 자세히 알아보려면 MongoDB 매뉴얼의 MongoDB 버전 관리를 참조하세요.

6.0.0-ent
spec
.opsManager
.configMapRef
문자열

ConfigMap 의 이름 MongoDB Ops Manager 연결 구성을 사용합니다. spec.cloudManager.configMapRef.name 설정은 이 설정의 별칭이며 대신 사용할 수 있습니다.

이 값은 생성하려는 리소스와 동일한 네임스페이스에 존재해야 합니다.

중요: Kubernetes Operator는 ConfigMap에 대한 모든 변경 사항을 추적하고 MongoDB 리소스 상태를 조정합니다.

<my-project>
spec
.clusterSpecList
.clusterName
문자열
MongoDBMultiCluster 리소스에 있는 cluster의 이름입니다.
cluster1.example.com
spec
.clusterSpecList
.members
integer
이 클러스터의 노드 수입니다.
2
spec
.clusterSpecList
.statefulSet
.spec
컬렉션

선택 사항.

StatefulSet 에 대한 구성을 제공합니다. 다중 Kubernetes 클러스터 MongoDB deployment 에서 클러스터의 각 StatefulSet에 대해 재정의합니다. clusterSpecList 아래의 개별 클러스터 수준에서 지정된 경우, 전체 다중 Kubernetes 클러스터 MongoDB deployment 에 대한 StatefulSet의 글로벌 구성을 재정의합니다. 멀티-Kubernetes-Cluster 리소스 사양StatefulSet v1 앱 Kubernetes 문서를 참조하세요.

예제를 참조하세요.
spec
.clusterSpecList
.statefulSet
.spec
.volumeClaimTemplates
.spec
컬렉션
선택 사항. 지정된 경우, 볼륨 클레임 템플릿 의 기본 스토리지 크기에 대한 클러스터별 재정의를 제공합니다. , 데이터를 저장하는 영구 볼륨의 경우.
예제를 참조하세요.
문자열

Operator가 MongoDB Ops Manager와 통신할 수 있도록 MongoDB Ops Manager API 인증 자격 증명으로 생성 한 시크릿의 이름입니다.Kubernetes

자격 증명을 보유하고 있는 Ops Manager 쿠버네티스 시크릿 객체는 생성하려는 리소스와 동일한 네임스페이스에 존재해야 합니다.

중요: Kubernetes Operator는 시크릿에 대한 모든 변경 사항을 추적하고 MongoDB 리소스 상태를 조정합니다.

<mycredentials>
문자열
생성할 MongoDB 리소스 유형입니다. 이 필드에 지원되는 유일한 값은 ReplicaSet 입니다. 제한 사항을 참조하세요.
ReplicaSet
4

객체 에 선택적 설정을 추가할 수도 있습니다. 사양. 멀티-Kubernetes-Cluster 리소스 사양을 참조하세요.

5
6

모든 디렉토리에서 다음 Kubernetes 명령을 호출하여 복제본 세트를 만듭니다.

kubectl apply -f <replica-set-conf>.yaml
7

MongoDBMultiCluster 리소스의 상태를 확인하려면 중앙 cluster에서 다음 명령을 사용합니다.

kubectl get mdbmc <resource-name> -o yaml -w

-w(watch) 플래그 설정이 적용된 경우, 구성이 변경되면 상태 단계가 Running 상태를 달성할 때까지 출력이 즉시 새로 고침 됩니다. 리소스 배포 상태에 대해 자세히 알아보려면 Kubernetes Operator 문제 해결을 참조하세요.

돌아가기

빠른 시작