다중 Kubernetes 클러스터에 복제본 세트 배포
이 페이지의 내용
이 절차에 따라 다중 Kubernetes 클러스터 MongoDB 배포에서 멤버 Kubernetes 클러스터에 새 복제본 세트를 생성합니다.
이 절차를 통해 복제본 세트 설정하다 리소스 대한 다양한 설정(예: statefulSet 구성에 대한 재정의)을 설정할 수 있습니다. 이 절차를 사용하는 대신 기본값 설정으로 다중 Kubernetes 클러스터 MongoDB deployment 를 생성하는 Multi-Kubernetes-Cluster Quick Start 를 사용할 수 있습니다.
시작하기 전에
다중 Kubernetes 클러스터 MongoDB deployment 에 Kubernetes Operator를 설치합니다. Multi-Kubernetes-Cluster Quick Start를 참조하세요.
리소스 배포 MongoDBMultiCluster
이 TLS-Encrypted Connections 탭 에서 다음 절차를 사용할 수 있습니다.
MongoDBMultiCluster
리소스 배포MongoDBMultiCluster
리소스에 대한 TLS 인증서 갱신
이 절차는 복제본 세트 의 MongoDB 호스트 간에, 그리고 클라이언트 애플리케이션과 MongoDB 배포 간에 TLS암호화 연결을 설정합니다.
시작하기 전에 TLS 암호화 를 위한 유효한 인증서가 있어야 합니다.
리소스 배포 MongoDBMultiCluster
리소스 의 TLS 인증서에 대한 시크릿을 MongoDBMultiCluster
생성합니다.
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
로 지정해야 합니다.
ConfigMap을 생성하여 CA를 리소스 와 MongoDBMultiCluster
연결합니다.
kubectl
명령을 실행하여 CA 를 MongoDBMultiCluster
리소스에 연결합니다. 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>
샘플 리소스를 복사하여 붙여넣습니다.
샘플 복제본 세트 YAML 파일을 복사하여 새 텍스트 파일에 붙여넣습니다.
원하는 복제본 세트 구성과 일치하도록 파일 설정을 변경합니다.
1 # This example provides statefulSet overrides per cluster. 2 3 apiVersion: mongodb.com/v1 4 kind: MongoDBMultiCluster 5 metadata: 6 name: multi-replica-set 7 spec: 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 ...
원하는 값으로 설정을 변경합니다.
키 | 유형 | 설명 | 예시 |
---|---|---|---|
문자열 | multi-replica-set | ||
문자열 | 이 형식은 커뮤니티 에디션의 경우 중요: 호환되는 MongoDB Server 버전 을 선택해야 합니다. 호환되는 버전은 MongoDB database 리소스 가 사용하는 기본 이미지에 따라 다릅니다. MongoDB 버전 관리에 대해 자세히 알아보려면 MongoDB 매뉴얼의 MongoDB 버전 관리를 참조하세요. | 6.0.0-ent | |
문자열 | ConfigMap 의 이름 MongoDB Ops Manager 연결 구성을 사용합니다. 이 값은 생성하려는 리소스와 동일한 네임스페이스에 존재해야 합니다. 중요: Kubernetes Operator는 ConfigMap에 대한 모든 변경 사항을 추적하고 | <my-project> | |
spec .clusterSpecList .clusterName | 문자열 | MongoDBMultiCluster 리소스에 있는 cluster의 이름입니다. | cluster1.example.com |
spec .clusterSpecList .members | integer | 이 클러스터의 노드 수입니다. | 2 |
spec .clusterSpecList .statefulSet .spec | 컬렉션 | 선택 사항. StatefulSet 에 대한 구성을 제공합니다. 다중 Kubernetes 클러스터 MongoDB deployment 에서 클러스터의 각 StatefulSet에 대해 재정의합니다. | 예제를 참조하세요. |
spec .clusterSpecList .statefulSet .spec .volumeClaimTemplates .spec | 컬렉션 | 선택 사항. 지정된 경우, 볼륨 클레임 템플릿 의 기본 스토리지 크기에 대한 클러스터별 재정의를 제공합니다. , 데이터를 저장하는 영구 볼륨의 경우. | 예제를 참조하세요. |
문자열 | Operator가 MongoDB Ops Manager와 통신할 수 있도록 MongoDB Ops Manager API 인증 자격 증명으로 생성 한 시크릿의 이름입니다.Kubernetes 자격 증명을 보유하고 있는 Ops Manager 쿠버네티스 시크릿 객체는 생성하려는 리소스와 동일한 네임스페이스에 존재해야 합니다. 중요: Kubernetes Operator는 시크릿에 대한 모든 변경 사항을 추적하고 | <mycredentials> | |
문자열 | ReplicaSet |
리소스 배포서버 에 대해 허용된 MongoDBMultiCluster
추가 설정을 추가합니다.
객체 에 선택적 설정을 추가할 수도 있습니다. 사양. 멀티-Kubernetes-Cluster 리소스 사양을 참조하세요.
이 복제본 세트 구성 파일 을 .yaml
확장자로 저장합니다.
복제본 세트 배포서버 를 시작합니다.
모든 디렉토리에서 다음 Kubernetes 명령을 호출하여 복제본 세트를 만듭니다.
kubectl apply -f <replica-set-conf>.yaml
다중 Kubernetes 클러스터 MongoDB 배포의 상태를 추적합니다.
MongoDBMultiCluster
리소스의 상태를 확인하려면 중앙 cluster에서 다음 명령을 사용합니다.
kubectl get mdbmc <resource-name> -o yaml -w
-w
(watch) 플래그 설정이 적용된 경우, 구성이 변경되면 상태 단계가 Running
상태를 달성할 때까지 출력이 즉시 새로 고침 됩니다. 리소스 배포 상태에 대해 자세히 알아보려면 Kubernetes Operator 문제 해결을 참조하세요.
리소스에 대한 TLS 인증서 갱신 MongoDBMultiCluster
다음 절차에 따라 TLS 인증서를 주기적으로 갱신합니다.
리소스 에 대한 MongoDBMultiCluster
시크릿을 갱신합니다.
이 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 배포 간 연결을 암호화하지 않습니다.
리소스 배포 MongoDBMultiCluster
샘플 리소스를 복사하여 붙여넣습니다.
샘플 복제본 세트 YAML 파일을 복사하여 새 텍스트 파일에 붙여넣습니다.
원하는 복제본 세트 구성과 일치하도록 파일 설정을 변경합니다.
1 # This example provides statefulSet overrides per cluster. 2 3 apiVersion: mongodb.com/v1 4 kind: MongoDBMultiCluster 5 metadata: 6 name: multi-replica-set 7 spec: 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 ...
원하는 값으로 설정을 변경합니다.
키 | 유형 | 설명 | 예시 |
---|---|---|---|
문자열 |
리소스 이름은 44자 이내여야 합니다. 및 | multi-replica-set | |
문자열 | 이 형식은 커뮤니티 에디션의 경우 중요: 호환되는 MongoDB Server 버전 을 선택해야 합니다. 호환되는 버전은 MongoDB database 리소스 가 사용하는 기본 이미지에 따라 다릅니다. MongoDB 버전 관리에 대해 자세히 알아보려면 MongoDB 매뉴얼의 MongoDB 버전 관리를 참조하세요. | 6.0.0-ent | |
문자열 | ConfigMap 의 이름 MongoDB Ops Manager 연결 구성을 사용합니다. 이 값은 생성하려는 리소스와 동일한 네임스페이스에 존재해야 합니다. 중요: Kubernetes Operator는 ConfigMap에 대한 모든 변경 사항을 추적하고 | <my-project> | |
spec .clusterSpecList .clusterName | 문자열 | MongoDBMultiCluster 리소스에 있는 cluster의 이름입니다. | cluster1.example.com |
spec .clusterSpecList .members | integer | 이 클러스터의 노드 수입니다. | 2 |
spec .clusterSpecList .statefulSet .spec | 컬렉션 | 선택 사항. StatefulSet 에 대한 구성을 제공합니다. 다중 Kubernetes 클러스터 MongoDB deployment 에서 클러스터의 각 StatefulSet에 대해 재정의합니다. | 예제를 참조하세요. |
spec .clusterSpecList .statefulSet .spec .volumeClaimTemplates .spec | 컬렉션 | 선택 사항. 지정된 경우, 볼륨 클레임 템플릿 의 기본 스토리지 크기에 대한 클러스터별 재정의를 제공합니다. , 데이터를 저장하는 영구 볼륨의 경우. | 예제를 참조하세요. |
문자열 | Operator가 MongoDB Ops Manager와 통신할 수 있도록 MongoDB Ops Manager API 인증 자격 증명으로 생성 한 시크릿의 이름입니다.Kubernetes 자격 증명을 보유하고 있는 Ops Manager 쿠버네티스 시크릿 객체는 생성하려는 리소스와 동일한 네임스페이스에 존재해야 합니다. 중요: Kubernetes Operator는 시크릿에 대한 모든 변경 사항을 추적하고 | <mycredentials> | |
문자열 | ReplicaSet |
리소스 배포서버 에 대해 허용된 MongoDBMultiCluster
추가 설정을 추가합니다.
객체 에 선택적 설정을 추가할 수도 있습니다. 사양. 멀티-Kubernetes-Cluster 리소스 사양을 참조하세요.
이 복제본 세트 구성 파일 을 .yaml
확장자로 저장합니다.
복제본 세트 배포서버 를 시작합니다.
모든 디렉토리에서 다음 Kubernetes 명령을 호출하여 복제본 세트를 만듭니다.
kubectl apply -f <replica-set-conf>.yaml
다중 Kubernetes 클러스터 MongoDB 배포의 상태를 추적합니다.
MongoDBMultiCluster
리소스의 상태를 확인하려면 중앙 cluster에서 다음 명령을 사용합니다.
kubectl get mdbmc <resource-name> -o yaml -w
-w
(watch) 플래그 설정이 적용된 경우, 구성이 변경되면 상태 단계가 Running
상태를 달성할 때까지 출력이 즉시 새로 고침 됩니다. 리소스 배포 상태에 대해 자세히 알아보려면 Kubernetes Operator 문제 해결을 참조하세요.