MongoDB database 리소스 사양
참고
이 페이지의 어느 곳에서나 Ops Manager라고 표시된 곳에서는 Cloud Manager로 대체할 수 있습니다.
MongoDB 엔터프라이즈 Kubernetes OperatorMongoDB Enterprise Kubernetes Operator 는 사용자가 Kubernetes 쓰기 (write) 사양 파일에서 Kubernetes StatefulSets를 생성합니다.
Kubernetes Operator는 Kubernetes에서 MongoDB 관련 리소스를 사용자 지정 리소스로 생성합니다.
이러한 사용자 지정 리소스를 관리하려면 다음 프로세스를 사용하세요:
MongoDB
리소스 사양을 만들거나 업데이트합니다.MongoDB Enterprise Kubernetes Operator에 직접 지시하여 Kubernetes 환경에 적용하세요. 결과적으로 Kubernetes Operator는 다음 작업을 수행합니다.
정의된 StatefulSets, 서비스 및 기타 Kubernetes 리소스를 생성합니다.
변경 사항을 반영하도록 Ops Manager 배포 구성을 업데이트합니다.
각 MongoDB
리소스는 YAML 의 객체 사양을 사용하여 독립형, 복제본 세트, 샤드 클러스터 등 MongoDB 객체의 특성과 설정을 정의합니다.
공통 리소스 설정
모든 리소스 유형은 다음 설정을 사용해야 합니다:
필수 사항
spec.credentials
유형: 문자열
필수입니다. 시크릿 Kubernetes MongoDB Ops Manager API 의 이름 Kubernetes Cloud Manager MongoDB Ops Manager는 Operator가 또는 와 통신할 수 있도록 인증 자격 증명 으로 생성 했습니다.
자격 증명을 보유하고 있는 Ops Manager 쿠버네티스 시크릿 객체는 생성하려는 리소스와 동일한 네임스페이스에 존재해야 합니다.
중요
연산자는 시크릿에 대한 변경 사항을 관리합니다
Kubernetes Operator는 시크릿에 대한 모든 변경 사항을 추적하고
MongoDB
리소스 상태를 조정합니다.
spec.persistent
유형: 부울
기본값: True
경고: 컨테이너에 영구 볼륨 에 쓰기 (write) 수 있는 권한을 부여합니다. . Kubernetes Operator는
securityContext
에fsGroup = 2000
,runAsUser = 2000
및runAsNonRoot = true
설정합니다. Kubernetes Operator는fsgroup
을(를runAsUser
으)로 설정하여 컨테이너 에서 메인 프로세스 를 실행하는 사용자가 볼륨을 쓸 수 있도록 합니다. 학습 보려면 Pod 또는 컨테이너에 대한 보안 컨텍스트 구성을 참조하세요. 및 관련 토론 Kubernetes 문서에서 확인 가능합니다. 리소스 를 다시 배포해도 영구 볼륨 문제가 해결되지 않으면 MongoDB 지원팀 에 문의 하세요.Disk Usage Disk IOPS 영구 볼륨 Processes 을 Deployment 사용하지 Metrics 않는 경우 및 Atlas 차트는 이 배포에 대한 데이터를 검토 할 때 페이지의 탭이나 페이지에 표시할 수 없습니다.
spec.version
유형: 문자열
MongoDB
리소스에 설치한 MongoDB의 버전.중요
호환되는 MongoDB Server 버전을 선택하도록 합니다.
호환되는 버전은 MongoDB database 리소스가 사용하는 기본 이미지에 따라 다릅니다.
참고
데이터베이스 리소스에 대해 이 값을 이후 버전의 MongoDB로 업데이트하면
spec.featureCompatibilityVersion
을(를) 원래 버전으로 설정하지 않는 한 기능 호환성 버전(FCV)이 이 버전으로 자동 변경됩니다.spec.featureCompatibilityVersion
를 원래 버전으로 설정하여 필요한 경우 다운그레이드할 수 있는 옵션을 제공하는 것이 좋습니다.
조건부
모든 리소스는 다음 설정 중 하나를 사용해야 합니다.
spec.opsManager.configMapRef.name
유형: 문자열
ConfigMap 의 이름 Cloud Manager 또는 MongoDB Ops Manager 연결 구성을 사용합니다.
spec.cloudManager.configMapRef.name
설정은 이 설정의 별칭이며 대신 사용할 수 있습니다.이 값은 생성하려는 리소스와 동일한 네임스페이스에 존재해야 합니다.
중요
Operator가 ConfigMap의 변경 사항을 관리합니다.
Kubernetes Operator는 ConfigMap에 대한 모든 변경 사항을 추적하고
MongoDB
리소스 상태를 조정합니다.
옵션
모든 리소스 유형은 다음 설정을 사용할 수 있습니다:
metadata.annotations.mongodb.com/v1.architecture
유형: 문자열
특정 배포에서 사용하는 컨테이너 아키텍처를 결정합니다.
런타임에 MongoDB 바이너리를 다운로드하는 기본 비정적 컨테이너 또는
런타임에 변경되지 않는 정적 컨테이너(공개 미리 보기) 입니다.
허용되는 값은 다음과 같습니다.
static
non-static
apiVersion: mongodb.com/v1 kind: MongoDB metadata: name: my-project annotations: mongodb.com/v1.architecture: "static"
spec.featureCompatibilityVersion
유형: 문자열
새로운 주요 버전으로 업그레이드할 때 발생하는 데이터 변경 사항을 제한합니다. 이를 통해 이전 주요 버전으로 다운그레이드할 수 있습니다. 기능 호환성에 대해 자세히 알아보려면 MongoDB 매뉴얼의
setFeatureCompatibilityVersion
을 참조하세요.
spec.clusterDomain
유형: 문자열
기본값: cluster.local
Kubernetes Operator를 배포하는 Kubernetes 클러스터의 도메인 이름입니다. Kubernetes가 StatefulSet 를 생성하는 경우 , Kubernetes는 각 Pod 를 할당합니다.FQDN . Cloud Manager 또는 MongoDB Ops Manager를 업데이트하기 위해 Kubernetes Operator는 각 Pod 의 FQDN을 계산합니다. 제공된 클러스터 이름을 사용합니다. Kubernetes는 이러한 호스트 이름을 쿼리하는 API 를 제공하지 않습니다.
경고
spec.clusterDomain
Kubernetes 클러스터에 기본 도메인 이 있는 경우cluster.local
을(를) 설정해야 합니다. 기본값 이외. 기본값을 사용하지 않거나spec.clusterDomain
옵션을 설정하지 않으면 Kubernetes Operator가 예상대로 작동하지 않을 수 있습니다.
spec.clusterName
유형: 문자열
기본값: cluster.local
Kubernetes Operator를 배포하는 Kubernetes 클러스터의 도메인 이름입니다. Kubernetes가 StatefulSet 를 생성하는 경우 , Kubernetes는 각 Pod 를 할당합니다.FQDN . Cloud Manager 또는 MongoDB Ops Manager를 업데이트하기 위해 Kubernetes Operator는 각 Pod 의 FQDN을 계산합니다. 제공된 클러스터 이름을 사용합니다. Kubernetes는 이러한 호스트 이름을 쿼리하는 API 를 제공하지 않습니다.
경고
spec.clusterDomain
Kubernetes 클러스터에 기본 도메인 이 있는 경우cluster.local
을(를) 설정해야 합니다. 기본값 이외. 기본값을 사용하지 않거나spec.clusterDomain
옵션을 설정하지 않으면 Kubernetes Operator가 예상대로 작동하지 않을 수 있습니다.
metadata.namespace
유형: 문자열
Kubernetes 네임스페이스 이
MongoDB
리소스 및 기타 객체 를 생성하는 위치 .
spec.service
유형: 문자열
기본값: <resource_name>+'-svc' 및 <resource_name>+'-svc-external'
StatefulSet 에 생성하거나 사용할 Kubernetes 서비스의 이름 . 이 이름의 서비스가 이미 존재하는 경우, MongoDB Enterprise Kubernetes Operator는 해당 서비스를 삭제하거나 다시 생성하지 않습니다. 이 설정을 사용하면 사용자 지정 서비스를 직접 생성하고 Kubernetes Operator가 이를 재사용할 수 있습니다.
배포별 리소스 설정
MongoDB
리소스 사양에서 사용할 수 있고 사용해야 하는 기타 설정은 생성하려는 MongoDB 배포 항목에 따라 다릅니다.
독립형 설정
참고
모든 독립형 설정은 복제본 세트 리소스에도 적용됩니다.
spec.additionalMongodConfig
유형: 컬렉션
MongoDB 프로세스를 시작할 때 사용하는 추가 구성 옵션입니다.
Kubernetes Operator는 MongoDB Agent를 통해 배포하는 MongoDB 버전의 모든 구성 옵션을 지원합니다. 단, 사용자가 다음 옵션에 제공한 값은 Kubernetes Operator에 의해 재정의됩니다.
Kubernetes Operator가 소유하는 구성 옵션에 대해 자세히 알아보려면 MongoDB Kubernetes Operator전용 설정을 참조하세요.
사용할 수 있는 구성 옵션에 대해 알아보려면 Ops 관리자 설명서에서 MongoDB 배포를 위한 고급 옵션을 참조하세요.
spec.agent.startupOptions
유형: 컬렉션
MongoDB 데이터베이스 리소스를 시작하는 데 적합한 MongoDB Agent 설정.
MongoDB Agent 설정을 키-값 쌍으로 제공해야 합니다. 값은 문자열이어야 합니다.
지원되는 MongoDB Agent 설정 목록은 다음을 참조하세요.
Cloud Manager 프로젝트에 대한 MongoDB Agent 설정 .
Operator와 함께 배포한 MongoDB Ops Manager 버전에 대한MongoDB Agent 설정 입니다. Kubernetes
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: my-standalone 6 spec: 7 version: "6.0.0-ent" 8 service: my-service 9 10 opsManager: 11 configMapRef: 12 name: my-project 13 credentials: my-credentials 14 type: Standalone 15 16 persistent: true 17 agent: 18 startupOptions: 19 maxLogFiles: "30" 20 dialTimeoutSeconds: "40" 21 ...
spec.podSpec
유형: 객체
MongoDB CustomResourceDefinition 의 사양이 포함된 객체 Pods.
spec.externalAccess
유형: 컬렉션
외부 연결을 위해 클러스터를 노출하는 사양입니다. Kubernetes 클러스터 외부에서 MongoDB 리소스에 연결하는 방법을 알아보려면 Kubernetes 외부에서 MongoDB 데이터베이스 리소스에 연결하기를 참조하세요.
spec.externalAccess
추가하면 Kubernetes Operator가 복제본 세트의 각 파드에 대한 외부 서비스를 생성합니다. 외부 서비스는 클러스터의 각 MongoDB database 파드에 대한 외부 진입점을 제공합니다. 각 외부 서비스에는 선택기 가 있습니다. 외부 서비스를 특정 Pod와 일치시킵니다.이 설정을 값없이 추가하면 Kubernetes Operator는 다음과 같은 기본값을 사용하여 외부 서비스를 생성합니다.
필드값설명Name
<pod-name>-svc-external
외부 서비스의 이름입니다. 이 값은 변경할 수 없습니다.Type
LoadBalancer
외부 LoadBalancer 서비스를 생성합니다.Port
<Port Number>
mongod
에 대한 포트입니다.publishNotReadyAddress
true
DNS 레코드 가 파드가 준비되지 않은 경우에도 생성됩니다. 데이터베이스 Pod에 대해false
로 설정하지 마세요.참고
spec.externalAccess.externalDomain
설정하면 외부 서비스가 백업을 위해 다른 포트(Port Number + 1
)를 추가합니다.
spec.externalAccess.externalService
유형: 컬렉션
spec.externalAccess
의 기본값을 재정의하기 위한 사양입니다.spec.externalAccess
설정을 설정하면 Kubernetes Operator가 기본값 인 외부 로드 밸런서 서비스를 자동으로 생성합니다. 필요에 따라 특정 값을 재정의하거나 새 값을 추가할 수 있습니다. 예를 들어 NodePort 서비스 를 생성하려는 경우 로드 밸런서가 필요하지 않은 경우 Kubernetes 사양에서 재정의를 구성해야 합니다.externalAccess: externalService: annotations: # cloud-specific annotations for the service spec: type: NodePort # default is LoadBalancer # you can specify other spec overrides if necessary Kubernetes 사양에 대한 자세한 내용은 Kubernetes 설명서의 ServiceSpec을 참조하세요.
spec.externalAccess.externalService.annotations
유형: 컬렉션
배포의 모든 클러스터에 클라우드 제공자별 구성 설정을 추가할 수 있는 키-값 쌍입니다. 자세히 알아보려면 주석 을 참조하세요. 및 Kubernetes 클라우드 제공자에 대한 설명서를 참조하세요.
주석 을 사용할 수 있습니다. Kubernetes Operator 배포에서 사용하는 외부 서비스에 대한 자리 표시자 값을 지정합니다. Kubernetes Operator는 다음 표에 설명된 대로 이러한 값을 올바른 값으로 자동으로 바꿉니다. 자리 표시자를 사용하면 특정 파드의 각 서비스에 특정 어노테이션을 제공할 수 있습니다.
값설명{resourceName}
{namespace}
{podIndex}
StatefulSet 에 의해 할당된 파드의 인덱스 현재 외부 서비스의 대상이 됩니다.{podName}
{resourceName}-{podIndex}
과 같습니다.{statefulSetName}
StatefulSet.{resourceName}
와 같습니다.{externalServiceName}
지정한 자리 표시자 값을 기반으로 외부 서비스의 생성된 이름입니다.{resourceName}-{podIndex}-svc-external
과 같습니다.{mongodProcessDomain}
mongod 프로세스를 호스팅하는 서버의 도메인 이름입니다. 지정된 경우
spec.externalAccess.externalDomain
와 같습니다. 그렇지 않으면mongod
프로세스 FQDN 에 사용된 도메인과 동일합니다.예를 들어 프로세스 호스트 이름
mdb-rs-1.example.com
의 경우example.com
은 도메인 이름입니다.{mongodProcessFQDN}
자동화
mongod
구성 에 설정된 프로세스 호스트 이름입니다.프로세스 호스트 이름은 배포 구성에 따라 달라집니다.
external domains
을(를) 사용하도록 배포를 구성한 경우 프로세스 호스트 이름은 다음 형식을 사용합니다.{resourceName}-{podIndex}.{mongodProcessDomain}
예를 들면 다음과 같습니다.
mdb-rs-1.example.com
배포에서 외부 도메인을 사용하지 않는 경우 프로세스 호스트 이름은 다음 형식을 사용합니다.
{resourceName}-{podIndex}.{resourceName}-{podIndex}-svc.{namespace}.svc.cluster.local
예를 들면 다음과 같습니다.
mdb-rs-1.mdb-rs-1-svc.ns.svc.cluster.local
참고
표에 지정된 대로 알려진 자리 표시자 값만 사용해야 하며 자리 표시자가 비어 있거나 null 값을 사용하지 않도록 해야 합니다. 또한 단일 MongoDB 리소스 배포서버 에 다중 Kubernetes 클러스터 배포와 관련된 자리 표시자를 사용할 수 없습니다.
그렇지 않으면 Kubernetes Operator가 오류를 반환합니다. 예를 들어 다음과 같은 오류 메시지가 표시될 수 있습니다.
error replacing placeholders in map with key=external-dns.alpha.kubernetes.io/hostname, value={resourceName}-{podIndex}-{unknownPlaceholder}.{clusterName}-{clusterIndex}.example.com: missing values for the following placeholders: {clusterName}, {clusterIndex}, {unknownPlaceholder}`` 예시
다음 예제에서는
{resourceName}
,{podIndex}
및{namespace}
자리 표시자를 지정합니다.apiVersion: mongodb.com/v1 kind: MongoDB metadata: name: mdb-rs namespace: ns spec: replicas: 3 externalAccess: externalService: annotations: external-dns.alpha.kubernetes.io/hostname: {resourceName}-{podIndex}-{namespace}.example.com Kubernetes Operator는 각 자리 표시자의 적절한 값을 기반으로 외부 서비스에 대한 주석을 자동으로 채웁니다. 예를 들면 다음과 같습니다.
mdb-rs-0-svc-external: annotations: external-dns.alpha.kubernetes.io/hostname: mdb-rs-0-ns.example.com mdb-rs-1-svc-external: annotations: external-dns.alpha.kubernetes.io/hostname: mdb-rs-1-ns.example.com mdb-rs-2-svc-external: annotations: external-dns.alpha.kubernetes.io/hostname: mdb-rs-2-ns.example.com
spec.externalAccess.externalService.spec
유형: 컬렉션
ServiceSpec 구성 . 자세한 내용은
spec.externalAccess.externalService
을(를) 참조하세요.
spec.podSpec.persistence.single
유형: 컬렉션
Kubernetes Operator가 하나의 퍼시스턴트 볼륨 클레임(Persistent Volume Claim, PVC)을 생성하고 데이터와 저널 및 로그에 대한 세 개의 디렉토리를 모두 동일한 퍼시스턴트 볼륨 마운트하도록 합니다.
참고
spec.persistent
: true
인 경우 이 컬렉션의 값을 설정해야 합니다.이 컬렉션 또는
persistence.multiple
컬렉션을 설정할 수 있지만 둘 다 설정할 수는 없습니다.
스칼라데이터 유형설명labelSelector
문자열storage
문자열storageClass
문자열영구 볼륨 클레임 에 지정된 스토리지 유형 . 이 스토리지 유형을 StorageClass 로 생성할 수 있습니다. 이 객체 에서 사용하기 전에 사양.
StorageClass 를 설정해야
reclaimPolicy
합니다. 유지할 . 이렇게 하면 영구 볼륨 클레임 이 발생할 때 데이터가 유지됩니다. 제거됩니다.
spec.podSpec.persistence.multiple.data
유형: 컬렉션
Kubernetes Operator가 영구 볼륨 클레임 을 생성하도록 설정 자체 영구 볼륨 에 데이터의 디렉토리를 마운트합니다. .
참고
spec.persistent
: true
인 경우 이 컬렉션의 값을 설정해야 합니다.이 컬렉션 또는
persistence.single
컬렉션을 설정할 수 있지만 둘 다 설정할 수는 없습니다.
스칼라데이터 유형설명labelSelector
문자열storage
문자열Kubernetes 노드 에서 사용할 수 있어야 하는 최소 저장 용량 Kubernetes에서 독립형 배포 를 호스팅합니다. 이 값은 정수 뒤에 JEDEC 표기법으로 저장 단위를 붙여 표현합니다.
기본값은 16Gi입니다.
예를 예시 이
MongoDB
리소스 에 60 기가바이트의 저장 공간이 필요한 경우 이 값을60Gi
로 설정하다 합니다.storageClass
문자열독립형 배포 에 필요한 스토리지 유형입니다. 이 스토리지 유형을 StorageClass 로 생성할 수 있습니다. 이 객체 에서 사용하기 전에 사양.
StorageClass 를 설정해야
reclaimPolicy
합니다. 유지할 . 이렇게 하면 영구 볼륨 클레임 이 발생할 때 데이터가 유지됩니다. 제거됩니다.
spec.podSpec.persistence.multiple.journal
유형: 컬렉션
Kubernetes Operator가 영구 볼륨 클레임 을 생성하도록 설정 자체 영구 볼륨 에 저널용 디렉토리를 마운트합니다. .
참고
spec.persistent
: true
인 경우 이 컬렉션의 값을 설정해야 합니다.이 컬렉션 또는
persistence.single
컬렉션을 설정할 수 있지만 둘 다 설정할 수는 없습니다.
스칼라데이터 유형설명labelSelector
문자열storage
문자열Kubernetes 노드 에서 사용할 수 있어야 하는 최소 저장 용량 Kubernetes에서 독립형 배포 를 호스팅합니다. 이 값은 정수 뒤에 JEDEC 표기법으로 저장 단위를 붙여 표현합니다.
기본값은 1Gi입니다.
예를 예시 이
MongoDB
리소스 에 60 기가바이트의 저장 공간이 필요한 경우 이 값을60Gi
로 설정하다 합니다.storageClass
문자열독립형 배포 에 필요한 스토리지 유형입니다. 이 스토리지 유형을 StorageClass 로 생성할 수 있습니다. 이 객체 에서 사용하기 전에 사양.
StorageClass 를 설정해야
reclaimPolicy
합니다. 유지할 . 이렇게 하면 영구 볼륨 클레임 이 발생할 때 데이터가 유지됩니다. 제거됩니다.
spec.podSpec.persistence.multiple.logs
유형: 컬렉션
Kubernetes Operator가 영구 볼륨 클레임 을 생성하도록 설정 자체 영구 볼륨 에 로그용 디렉토리를 마운트합니다. .
참고
spec.persistent
: true
인 경우 이 컬렉션의 값을 설정해야 합니다.이 컬렉션 또는
persistence.single
컬렉션을 설정할 수 있지만 둘 다 설정할 수는 없습니다.
스칼라데이터 유형설명labelSelector
문자열storage
문자열Kubernetes 노드 에서 사용할 수 있어야 하는 최소 저장 용량 Kubernetes에서 독립형 배포 를 호스팅합니다. 이 값은 정수 뒤에 JEDEC 표기법으로 저장 단위를 붙여 표현합니다.
기본값은 3Gi입니다.
예를 예시 이
MongoDB
리소스 에 60 기가바이트의 저장 공간이 필요한 경우 이 값을60Gi
로 설정하다 합니다.storageClass
문자열독립형 배포 에 필요한 스토리지 유형입니다. 이 스토리지 유형을 StorageClass 로 생성할 수 있습니다. 이 객체 에서 사용하기 전에 사양.
StorageClass 를 설정해야
reclaimPolicy
합니다. 유지할 . 이렇게 하면 영구 볼륨 클레임 이 발생할 때 데이터가 유지됩니다. 제거됩니다.
spec.podSpec.podTemplate.affinity.nodeAffinity
유형: 구조체
Kubernetes 규칙 Pods 배치 특정 범위의 노드 에 있는 복제본 세트 의 경우 .
읽기-쓰기 성능을 최적화하려면 Pods 를 제한하는 노드 어피니티 규칙을 사용하세요. 특정 노드 에서 실행 또는 특정 노드 에서 실행하는 것을 선호합니다. .
spec.podSpec.podTemplate.affinity.podAffinity
유형: 구조체
Kubernetes 규칙 여러
MongoDB
리소스 파드 가 다른 Pod 와 함께 위치해야 합니다. . 사용 사례에 대해 자세히 알아보려면 선호도 및 반 선호도 를 참조하세요. Kubernetes 문서에서 확인 가능합니다.
spec.podSpec.podTemplate.affinity.podAntiAffinity
유형: 구조체
Default: kubernetes.io/hostname
규칙 설정 Pods 확산
MongoDB
리소스를 다른 위치에 호스팅합니다. 위치는 단일 노드, 랙 또는 리전일 수 있습니다. 기본적으로 Kubernetes Operator는 여러 노드에 파드를 분산하려고 시도합니다.
spec.podSpec.podTemplate.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey
유형: 구조체
Default: kubernetes.io/hostname
이 키는 다음 레이블 을 정의합니다. 토폴로지 도메인 을 결정하는 데 사용됩니다. 노드가 속합니다.
spec.podSpec.podTemplate
유형: 컬렉션
템플릿 Kubernetes MongoDB Enterprise Kubernetes Operator MongoDB database 가 리소스에 대해 생성하는 Pods의 경우.
템플릿 값은
spec.podSpec
에 지정된 값보다 우선합니다.참고
Kubernetes Operator가
spec.podSpec.podTemplate
에 제공한 필드의 유효성을 검사하지 않습니다.
spec.podSpec.podTemplate.metadata
유형: 컬렉션
MongoDB Enterprise Kubernetes Operator가 MongoDB 데이터베이스 리소스용으로 생성하는 Kubernetes Pods의 메타데이터입니다.
에추가할 수 있는 필드를 검토하려면
spec.podSpec.podTemplate.metadata
Kubernetes 설명서를 참조하세요.
spec.podSpec.podTemplate.spec
유형: 컬렉션
MongoDB Enterprise Kubernetes Operator가 MongoDB 데이터베이스 리소스용으로 생성하는 Kubernetes 포드의 사양입니다.
에 추가할 수
spec.podSpec.podTemplate.spec
Kubernetes 있는 필드를1 Core API 검토하려면 PodSpec v 를 참조하세요.참고
spec.podSpec.podTemplate.spec.containers
에 컨테이너를 추가하면 Kubernetes Operator가 컨테이너를 Kubernetes 포드에 추가합니다. 이러한 컨테이너는 포드의 MongoDB 데이터베이스 리소스 컨테이너에 추가됩니다.이 설정을 사용하여 각 포드에 대한 CPU 및 RAM 할당을 지정합니다. 예제 는 의 샘플을 Github 참조하세요.
복제본 세트 설정
참고
모든 독립형 설정은 복제본 세트 리소스에도 적용됩니다.
다음 설정은 복제본 세트 리소스 유형에 적용됩니다:
spec.backup
유형: 컬렉션
spec.backup.mode
의 collection 컨테이너로, Kubernetes Operator에서 MongoDB 리소스에 대한 지속적인 백업을 가능하게 합니다.
spec.backup.assignmentLabels
유형: 배열
쉼표로 구분된 레이블 목록으로, 특정 프로젝트 또는 그룹에 백업 데몬, oplog 저장소, 블록스토어, S3 스냅샷 저장소, 파일 시스템 저장소를 할당할 수 있습니다. 할당 레이블을 사용하여 특정 백업 저장소가 특정 프로젝트와 연결되어 있는지 식별합니다.
Kubernetes Operator를 사용하여 할당 레이블을 설정하는 경우 Kubernetes 구성 파일에서 설정한 할당 레이블 값이 Ops Manager UI에 정의된 값을 재정의합니다. Kubernetes Operator를 사용하여 설정하지 않은 할당 레이블은 Ops Manager UI에 설정된 값을 계속 사용합니다.
참고
이 매개변수를 설정하는 경우
spec.credentials
값으로 연결된 API 키에Global Owner
역할이 있어야 합니다.
spec.backup.mode
유형: 문자열
MongoDB 리소스에 대한 지속적인 백업을 활성화합니다. 가능한 값은
enabled
,disabled
,terminated
입니다.참고
설정은 MongoDB Ops
spec.backup.mode
Manager에서 활성화된 백업 에 의존하며, MongoDB Ops Manager 리소스spec.backup.enabled
사양 의 값이 으)로 설정되어야true
합니다.spec.backup.mode
를 사용하여 MongoDB 리소스에 대한 연속 백업을 활성화한 후 백업 상태를 확인할 수 있습니다.
spec.backup.encryption.kmip
유형: 객체
KMIP 백업 암호화 구성 설정을 포함하는 객체입니다. 자세히 알아보려면 운영 관리자를 위한 KMIP 백업 암호화 구성을 참조하세요.
spec.backup.snapshotSchedule
유형: 컬렉션
Kubernetes Operator에서 MongoDB 리소스에 대한 연속 백업을 위한 스냅샷 일정 설정을 위한 collection 컨테이너입니다.
spec.backup.snapshotSchedule.snapshotIntervalHours
유형: 숫자
스냅샷 사이의 시간 간격입니다.
6
,8
,12
또는24
값을 설정할 수 있습니다.
spec.backup.snapshotSchedule.dailySnapshotRetentionDays
유형: 숫자
일일 스냅샷을 보관할 수 있는 일수입니다.
1
에서365
사이의 값을 설정할 수 있습니다. 값을0
으로 설정하면 이 규칙이 비활성화됩니다.
spec.backup.snapshotSchedule.weeklySnapshotRetentionWeeks
유형: 숫자
주간 스냅샷을 보관할 주 수입니다.
1
에서52
사이의 값을 설정할 수 있습니다. 값을0
으로 설정하면 이 규칙이 비활성화됩니다.
spec.backup.snapshotSchedule.monthlySnapshotRetentionMonths
유형: 숫자
월별 스냅샷을 보관하는 개월 수입니다.
1
에서36
사이의 값을 설정할 수 있습니다. 값을0
으로 설정하면 이 규칙이 비활성화됩니다.
spec.backup.snapshotSchedule.referenceHourOfDay
유형: 숫자
24시간 형식을 사용하여 스냅샷을 예약할 날의 UTC 시간입니다.
0
에서23
사이의 값을 설정할 수 있습니다.
spec.backup.snapshotSchedule.referenceMinuteOfHour
유형: 숫자
스냅샷을 예약한 시간의 UTC 분입니다.
0
에서59
사이의 값을 설정할 수 있습니다.
spec.backup.snapshotSchedule.fullIncrementalDayOfWeek
유형: 문자열
Ops Manager가 전체 스냅샷을 찍는 요일입니다. 이 설정은 최근의 작업에 대한 완전한 백업을 보장합니다. Ops Manager의 기본값은
SUNDAY
로 설정됩니다.
spec.clusterName
유형: 문자열
기본값: cluster.local
Kubernetes Operator를 배포하는 Kubernetes 클러스터의 도메인 이름입니다. Kubernetes가 StatefulSet 를 생성하는 경우 , Kubernetes는 각 Pod 를 할당합니다.FQDN . Cloud Manager 또는 MongoDB Ops Manager를 업데이트하기 위해 Kubernetes Operator는 각 Pod 의 FQDN을 계산합니다. 제공된 클러스터 이름을 사용합니다. Kubernetes는 이러한 호스트 이름을 쿼리하는 API 를 제공하지 않습니다.
경고
spec.clusterDomain
Kubernetes 클러스터에 기본 도메인 이 있는 경우cluster.local
을(를) 설정해야 합니다. 기본값 이외. 기본값을 사용하지 않거나spec.clusterDomain
옵션을 설정하지 않으면 Kubernetes Operator가 예상대로 작동하지 않을 수 있습니다.
spec.connectivity.replicaSetHorizons
유형: 컬렉션
클라이언트 애플리케이션 및 MongoDB Agent에 대해 다양한 DNS 설정을 제공할 수 있습니다. Kubernetes Operator는 복제본 세트 멤버에 대해 분할 수평 DNS를 사용합니다. 이 기능을 사용하면 Kubernetes cluster 내부와 Kubernetes 외부 모두에서 통신할 수 있습니다.
호스트당 여러 개의 외부 매핑을 추가할 수 있습니다.
스플릿 호라이즌 요구 사항:
이 배열의 각 값이 고유한지 확인합니다.
이 배열의 항목 수가
spec.members
에 지정된 값과 일치하는지 확인합니다.spec.security.certsSecretPrefix
설정 값을 입력하여 TLS 를 활성화합니다. 분할 경계를 사용하는 이 방법에는 TLS 프로토콜의 MongoDB 서버 이름 표시 확장이 필요합니다.
예시
이 예에서 복제본 세트 멤버는
example-localhost
경계에서 서로 통신합니다. 클라이언트는example-website
경계를 사용하여 복제본 세트와 통신합니다.1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: <my-replica-set> 6 spec: 7 members: 3 8 version: "4.2.2-ent" 9 type: ReplicaSet 10 opsManager: 11 configMapRef: 12 name: <configMap.metadata.name> 13 credentials: <mycredentials> 14 persistent: true 15 security: 16 tls: 17 enabled: true 18 connectivity: 19 replicaSetHorizons: 20 - "example-website": "web1.example.com:30907" 21 - "example-website": "web2.example.com:32350" 22 - "example-website": "web3.example.com:31185" 23 ...
spec.externalAccess.externalDomain
유형: 문자열
복제본 세트 배포를 외부에 노출하는 데 사용되는 외부 도메인입니다.
기본적으로 각 복제본 세트 멤버는 Kubernetes Pod의 FQDN(
*.svc.cluster.local
)을 기본 호스트 이름으로 사용합니다. 하지만 이 설정에 외부 도메인을 추가하면 복제본 세트는 지정된 도메인의 하위 도메인을 호스트 이름으로 대신 사용합니다. 이 호스트 이름은 다음 형식을 사용합니다:<replica-set-name>-<pod-idx>.<externalDomain>
예를 들면 다음과 같습니다.
replica-set-1.example.com
이 설정을 사용하여 복제본 세트를 배포한 후 Kubernetes Operator는 외부 도메인이 있는 호스트 이름을 사용하여 MongoDB Ops Manager 자동화 구성 의
processes[n].hostname
필드를 재정의합니다. 그런 다음 MongoDB Agent는 이 호스트 이름을 사용하여mongod
에 연결합니다.복제본 세트에 연결하기 위한 다른 호스트 이름을 지정하려면
spec.connectivity.replicaSetHorizons
설정을 사용할 수 있습니다. 그러나 다음 연결은 여전히 외부 도메인의 호스트 이름을 사용합니다.경고: 이 필드 지정하면 MongoDB Ops Manager 가
mongod
프로세스를 등록하는 방식이 변경됩니다. Kubernetes Operator 버전 1.19 부터 시작하는 새 복제본 세트 배포에 대해서만 이 필드 를 지정할 수 있습니다. 실행 복제본 세트 배포서버 서버에 대한 MongoDB Ops Manager 자동화 구성 의 이 필드 또는processes[n].hostname
필드 값은 변경할 수 없습니다.
spec.memberConfig
유형: 컬렉션
MongoDB
리소스에서 배포된 각 MongoDB 복제본 집합 구성원에 대한 사양입니다.배열의 요소 순서는 복제 세트의 멤버 순서를 반영해야 합니다. 예를 들어 배열의 첫 번째 요소는 인덱스
0
에 있는 Pod에 영향을 주고, 두 번째 요소는 인덱스1
에 영향을 미칩니다.예시
3개의 멤버로 구성된 복제본 세트에 대한 다음 예시 사양을 살펴보겠습니다.
spec: memberConfig: - votes: 1 priority: "0.5" tags: tag1: "value1" environment: "prod" - votes: 1 priority: "1.5" tags: tag2: "value2" environment: "prod" - votes: 0 priority: "0.5" tags: tag2: "value2" environment: "prod"
spec.memberConfig.priority
유형: 문자열
MongoDB 복제본 세트 멤버가 프라이머리가 될 상대적인 가능성을 나타내는 숫자입니다.
복제 세트 멤버가 프라이머리가 될 가능성을 상대적으로 높이려면 더 높은
priority
값을 지정합니다.복제 세트 멤버가 기본 멤버가 될 가능성을 상대적으로 줄이려면 더 낮은
priority
값을 지정하세요.
예를 들어
memberConfig.priority
가1.5
인 노드는memberConfig.priority
가0.5
인 노드보다 프라이머리 노드가 될 가능성이 큽니다.memberConfig.priority
가0
인 멤버는 프라이머리가 될 수 없습니다. 자세히 알아보려면 멤버 우선순위를 참조하세요.
spec.memberConfig.tags
유형: 매핑
읽기 및 쓰기 작업을 MongoDB 복제본 세트의 특정 멤버로 전달하기 위한 복제본 세트 태그의 맵입니다.
spec.memberConfig.votes
유형: 숫자
MongoDB 복제본 세트 멤버가 투표 할 수 있는지 여부를 결정합니다. 멤버가 투표할 수 있도록 하려면
1
로 설정합니다. 멤버를 투표에서 제외하려면0
로 설정합니다.
다음 설정은 복제본 세트 리소스 유형에만 적용됩니다.
spec.backup.autoTerminateOnDeletion
유형: 부울
MongoDB 리소스를 삭제할 때 Kubernetes Operator가 백업을 중지하고 종료할지 여부를 제어하는 플래그입니다. 생략하면 기본값은
false
입니다. 이 플래그를true
로 설정하면spec.backup.mode
설정이enabled
로 설정된 상태에서 MongoDB 사용자 지정 리소스를 삭제하려는 경우에 유용합니다.
샤딩된 클러스터 설정
참고
별도로 지정하지 않는 한 모든 복제본 세트 설정은 샤딩된 클러스터 리소스에도 적용됩니다.
다음 설정은 샤딩된 클러스터 리소스 유형에만 적용됩니다.
spec.backup.snapshotSchedule.clusterCheckpointIntervalMin
유형: 숫자
연속 클러스터 체크포인트 사이의 시간(분)입니다. 이 설정은 FCV 4.0 이하로 MongoDB를 실행하는 샤딩된 클러스터에만 적용됩니다. 이 숫자는 샤딩된 클러스터에 대한 특정 시점 복원의 세분성을 결정합니다.
15
30
또는60
의 값을 결정할 수 있습니다.
spec.configSrv.additionalMongodConfig
유형: 컬렉션
각 config 서버 멤버를 시작하는 데 사용할 추가 구성 옵션 입니다.
Kubernetes Operator는 MongoDB Agent를 통해 배포하는 MongoDB 버전의 모든 구성 옵션을 지원합니다. 단, 사용자가 다음 옵션에 제공한 값은 Kubernetes Operator에 의해 재정의됩니다.
Kubernetes Operator가 소유하는 구성 옵션에 대해 자세히 알아보려면 MongoDB Kubernetes Operator전용 설정을 참조하세요.
사용할 수 있는 구성 옵션에 대해 알아보려면 Ops 관리자 설명서에서 MongoDB 배포를 위한 고급 옵션을 참조하세요.
spec.configSrv.agent
유형: 컬렉션
각 config 서버 멤버에 대한 MongoDB Agent 구성 설정입니다.
spec.configSrv.agent.startupOptions
유형: 컬렉션
각 config 서버 멤버를 시작할 MongoDB Agent 설정입니다.
MongoDB Agent 설정을 키-값 쌍으로 제공해야 합니다. 값은 문자열이어야 합니다.
지원되는 MongoDB Agent 설정 목록은 다음을 참조하세요.
Cloud Manager 프로젝트에 대한 MongoDB Agent 설정 .
Operator와 함께 배포한 MongoDB Ops Manager 버전에 대한MongoDB Agent 설정 입니다. Kubernetes
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: my-sharded-cluster-options 6 spec: 7 version: "6.0.0-ent" 8 type: ShardedCluster 9 opsManager: 10 configMapRef: 11 name: my-project 12 credentials: my-credentials 13 persistent: true 14 shardCount: 2 15 mongodsPerShardCount: 3 16 mongosCount: 2 17 configServerCount: 1 18 19 mongos: 20 agent: 21 startupOptions: 22 maxLogFiles: "30" 23 24 configSrv: 25 agent: 26 startupOptions: 27 dialTimeoutSeconds: "40" 28 shard: 29 agent: 30 startupOptions: 31 serverSelectionTimeoutSeconds: "20" 32 ...
spec.configSrvPodSpec
유형: 객체
MongoDB CustomResourceDefinition 의 사양이 포함된 객체 config 서버 Pods.
spec.configSrvPodSpec.persistence.single
유형: 컬렉션
Kubernetes Operator가 하나의 퍼시스턴트 볼륨 클레임(Persistent Volume Claim, PVC)을 생성하고 데이터와 저널 및 로그에 대한 세 개의 디렉토리를 모두 동일한 퍼시스턴트 볼륨 마운트하도록 합니다.
참고
spec.persistent
: true
인 경우 이 컬렉션의 값을 설정해야 합니다.이 컬렉션 또는
persistence.multiple
컬렉션을 설정할 수 있지만 둘 다 설정할 수는 없습니다.
스칼라데이터 유형설명labelSelector
문자열storage
문자열storageClass
문자열영구 볼륨 클레임 에 지정된 스토리지 유형 . 이 스토리지 유형을 StorageClass 로 생성할 수 있습니다. 이 객체 에서 사용하기 전에 사양.
StorageClass 를 설정해야
reclaimPolicy
합니다. 유지할 . 이렇게 하면 영구 볼륨 클레임 이 발생할 때 데이터가 유지됩니다. 제거됩니다.
spec.configSrvPodSpec.persistence.multiple.data
유형: 컬렉션
Kubernetes Operator가 영구 볼륨 클레임 을 생성하도록 설정 자체 영구 볼륨 에 데이터의 디렉토리를 마운트합니다. .
참고
spec.persistent
: true
인 경우 이 컬렉션의 값을 설정해야 합니다.이 컬렉션 또는
persistence.single
컬렉션을 설정할 수 있지만 둘 다 설정할 수는 없습니다.
스칼라데이터 유형설명labelSelector
문자열storage
문자열Kubernetes 노드 에서 사용할 수 있어야 하는 최소 저장 용량 Kubernetes에서 각 config 서버 멤버를 호스팅합니다. 이 값은 정수 뒤에 JEDEC 표기법으로 저장 단위를 붙여 표현합니다.
기본값은 16Gi입니다.
예를 예시 이
MongoDB
리소스 에 60 기가바이트의 저장 공간이 필요한 경우 이 값을60Gi
로 설정하다 합니다.storageClass
문자열각 config 서버 멤버에 필요한 스토리지 유형입니다. 이 스토리지 유형을 StorageClass 로 생성할 수 있습니다. 이 객체 에서 사용하기 전에 사양.
StorageClass 를 설정해야
reclaimPolicy
합니다. 유지할 . 이렇게 하면 영구 볼륨 클레임 이 발생할 때 데이터가 유지됩니다. 제거됩니다.
spec.configSrvPodSpec.persistence.multiple.journal
유형: 컬렉션
Kubernetes Operator가 영구 볼륨 클레임 을 생성하도록 설정 자체 영구 볼륨 에 저널용 디렉토리를 마운트합니다. .
참고
spec.persistent
: true
인 경우 이 컬렉션의 값을 설정해야 합니다.이 컬렉션 또는
persistence.single
컬렉션을 설정할 수 있지만 둘 다 설정할 수는 없습니다.
스칼라데이터 유형설명labelSelector
문자열storage
문자열Kubernetes 노드 에서 사용할 수 있어야 하는 최소 저장 용량 Kubernetes에서 각 config 서버 멤버를 호스팅합니다. 이 값은 정수 뒤에 JEDEC 표기법으로 저장 단위를 붙여 표현합니다.
기본값은 1Gi입니다.
예를 예시 이
MongoDB
리소스 에 60 기가바이트의 저장 공간이 필요한 경우 이 값을60Gi
로 설정하다 합니다.storageClass
문자열각 config 서버 멤버에 필요한 스토리지 유형입니다. 이 스토리지 유형을 StorageClass 로 생성할 수 있습니다. 이 객체 에서 사용하기 전에 사양.
StorageClass 를 설정해야
reclaimPolicy
합니다. 유지할 . 이렇게 하면 영구 볼륨 클레임 이 발생할 때 데이터가 유지됩니다. 제거됩니다.
spec.configSrvPodSpec.persistence.multiple.logs
유형: 컬렉션
Kubernetes Operator가 영구 볼륨 클레임 을 생성하도록 설정 자체 영구 볼륨 에 로그용 디렉토리를 마운트합니다. .
참고
spec.persistent
: true
인 경우 이 컬렉션의 값을 설정해야 합니다.이 컬렉션 또는
persistence.single
컬렉션을 설정할 수 있지만 둘 다 설정할 수는 없습니다.
스칼라데이터 유형설명labelSelector
문자열storage
문자열Kubernetes 노드 에서 사용할 수 있어야 하는 최소 저장 용량 Kubernetes에서 각 config 서버 멤버를 호스팅합니다. 이 값은 정수 뒤에 JEDEC 표기법으로 저장 단위를 붙여 표현합니다.
기본값은 3Gi입니다.
예를 예시 이
MongoDB
리소스 에 60 기가바이트의 저장 공간이 필요한 경우 이 값을60Gi
로 설정하다 합니다.storageClass
문자열각 config 서버 멤버에 필요한 스토리지 유형입니다. 이 스토리지 유형을 StorageClass 로 생성할 수 있습니다. 이 객체 에서 사용하기 전에 사양.
StorageClass 를 설정해야
reclaimPolicy
합니다. 유지할 . 이렇게 하면 영구 볼륨 클레임 이 발생할 때 데이터가 유지됩니다. 제거됩니다.
spec.configSrvPodSpec.podTemplate
유형: 컬렉션
템플릿 MongoDB Enterprise Kubernetes Operator가 각 config 서버 멤버에 대해 생성하는 Kubernetes Pods에 대한
템플릿 값은
spec.configSrvPodSpec
에 지정된 값보다 우선합니다.참고
Kubernetes Operator가
spec.configSrvPodSpec.podTemplate
에 제공한 필드의 유효성을 검사하지 않습니다.
spec.configSrvPodSpec.podTemplate.affinity.podAffinity
유형: 컬렉션
Kubernetes 규칙 여러
MongoDB
리소스 파드 가 다른 Pod 와 함께 위치해야 합니다. . 사용 사례에 대해 자세히 알아보려면 선호도 및 반 선호도 를 참조하세요. Kubernetes 문서에서 확인 가능합니다.
spec.configSrvPodSpec.podTemplate.affinity.nodeAffinity
유형: 컬렉션
Kubernetes 규칙 Pods 배치 특정 범위의 노드 에 있는 복제본 세트 의 경우 .
읽기-쓰기 성능을 최적화하려면 Pods 를 제한하는 노드 어피니티 규칙을 사용하세요. 특정 노드 에서 실행 또는 특정 노드 에서 실행하는 것을 선호합니다. .
spec.configSrvPodSpec.podTemplate.affinity.podAntiAffinity
유형: 문자열
Default: kubernetes.io/hostname
규칙 설정 Pods 확산
MongoDB
리소스를 다른 위치에 호스팅합니다. 위치는 단일 노드, 랙 또는 리전일 수 있습니다. 기본적으로 Kubernetes Operator는 여러 노드에 파드를 분산하려고 시도합니다.
spec.configSrvPodSpec.podTemplate.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey
유형: 문자열
Default: kubernetes.io/hostname
이 키는 다음 레이블 을 정의합니다. 토폴로지 도메인 을 결정하는 데 사용됩니다. 노드가 속합니다.
spec.configSrvPodSpec.podTemplate.metadata
유형: 컬렉션
MongoDB Enterprise Kubernetes Operator가 각 config 서버 멤버에 대해 생성하는 Kubernetes Pods의 메타데이터입니다.
에추가할 수 있는 필드를 검토하려면
spec.configSrvPodSpec.podTemplate.metadata
Kubernetes 설명서를 참조하세요.
spec.configSrvPodSpec.podTemplate.spec
유형: 컬렉션
각 config 서버 멤버에 대해 MongoDB Enterprise Kubernetes Operator 운영자가 생성하는 Kubernetes Pods의 사양입니다.
에 추가할 수
spec.configSrvPodSpec.podTemplate.spec
Kubernetes 있는 필드를1 Core API 검토하려면 PodSpec v 를 참조하세요.참고
spec.configSrvPodSpec.podTemplate.spec.containers
에 컨테이너를 추가하면 Kubernetes Operator가 컨테이너를 Kubernetes pod에 추가합니다. 이러한 컨테이너는 pod의 각 config 서버 멤버 컨테이너에 추가됩니다.이 설정을 사용하여 각 포드에 대한 CPU 및 RAM 할당을 지정합니다. 예제 는 의 샘플을 Github 참조하세요.
spec.mongodsPerShardCount
유형: integer
필수. 샤드당 멤버 수입니다.
spec.mongos.additionalMongodConfig
유형: 컬렉션
각 mongos 인스턴스를 시작하는 데 사용할 추가 구성 옵션 입니다.
Kubernetes Operator는 MongoDB Agent를 통해 배포하는 MongoDB 버전의 모든 구성 옵션을 지원합니다. 단, 사용자가 다음 옵션에 제공한 값은 Kubernetes Operator에 의해 재정의됩니다.
Kubernetes Operator가 소유하는 구성 옵션에 대해 자세히 알아보려면 MongoDB Kubernetes Operator전용 설정을 참조하세요.
사용할 수 있는 구성 옵션에 대해 알아보려면 Ops 관리자 설명서에서 MongoDB 배포를 위한 고급 옵션을 참조하세요.
spec.mongos.agent
유형: 컬렉션
각
mongos
인스턴스에 대한 MongoDB Agent 구성 설정입니다.
spec.mongos.agent.startupOptions
유형: 컬렉션
각
mongos
인스턴스를 시작하는 데 사용할 MongoDB Agent 설정입니다.MongoDB Agent 설정을 키-값 쌍으로 제공해야 합니다. 값은 문자열이어야 합니다.
지원되는 MongoDB Agent 설정 목록은 다음을 참조하세요.
Cloud Manager 프로젝트에 대한 MongoDB Agent 설정 .
Operator와 함께 배포한 MongoDB Ops Manager 버전에 대한MongoDB Agent 설정 입니다. Kubernetes
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: my-sharded-cluster-options 6 spec: 7 version: "6.0.0-ent" 8 type: ShardedCluster 9 opsManager: 10 configMapRef: 11 name: my-project 12 credentials: my-credentials 13 persistent: true 14 shardCount: 2 15 mongodsPerShardCount: 3 16 mongosCount: 2 17 configServerCount: 1 18 19 mongos: 20 agent: 21 startupOptions: 22 maxLogFiles: "30" 23 24 configSrv: 25 agent: 26 startupOptions: 27 dialTimeoutSeconds: "40" 28 shard: 29 agent: 30 startupOptions: 31 serverSelectionTimeoutSeconds: "20" 32 ...
spec.mongosPodSpec
유형: 객체
MongoDB CustomResourceDefinition 의 사양이 포함된 객체 mongos Pods.
spec.mongosPodSpec.podTemplate
유형: 컬렉션
템플릿 MongoDB Enterprise Kubernetes Operator가 각 인스턴스에 대해 생성하는
mongos
Kubernetes Pods에 대한템플릿 값은
spec.mongosPodSpec
에 지정된 값보다 우선합니다.참고
Kubernetes Operator가
spec.mongosPodSpec.podTemplate
에 제공한 필드의 유효성을 검사하지 않습니다.
spec.mongosPodSpec.podTemplate.affinity.podAffinity
유형: 컬렉션
선택 사항. Kubernetes 규칙 여러
MongoDB
리소스 파드 가 다른 Pod 와 함께 위치해야 합니다. .
spec.mongosPodSpec.podTemplate.affinity.nodeAffinity
유형: 컬렉션
Kubernetes 규칙 Pods 배치 특정 범위의 노드 에 있는 복제본 세트 의 경우 .
읽기-쓰기 성능을 최적화하려면 Pods 를 제한하는 노드 어피니티 규칙을 사용하세요. 특정 노드 에서 실행 또는 특정 노드 에서 실행하는 것을 선호합니다. .
spec.mongosPodSpec.podTemplate.affinity.podAntiAffinity
유형: 문자열
Default: kubernetes.io/hostname
규칙 설정 Pods 확산
MongoDB
리소스를 다른 위치에 호스팅합니다. 위치는 단일 노드, 랙 또는 리전일 수 있습니다. 기본적으로 Kubernetes Operator는 여러 노드에 파드를 분산하려고 시도합니다.
spec.mongosPodSpec.podTemplate.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey
유형: 문자열
Default: kubernetes.io/hostname
이 키는 다음 레이블 을 정의합니다. 토폴로지 도메인 을 결정하는 데 사용됩니다. 노드가 속합니다.
spec.mongosPodSpec.podTemplate.metadata
유형: 컬렉션
MongoDB Enterprise Kubernetes Operator가 각
mongos
인스턴스에 대해 생성하는 Kubernetes 파드의 메타데이터입니다.에추가할 수 있는 필드를 검토하려면
spec.mongosPodSpec.podTemplate.metadata
Kubernetes 설명서를 참조하세요.
spec.mongosPodSpec.podTemplate.spec
유형: 컬렉션
MongoDB Enterprise Kubernetes Operator가 각
mongos
인스턴스에 대해 생성하는 Kubernetes 파드의 사양입니다.에 추가할 수
spec.mongosPodSpec.podTemplate.spec
Kubernetes 있는 필드를1 Core API 검토하려면 PodSpec v 를 참조하세요.참고
spec.mongosPodSpec.podTemplate.spec.containers
에 컨테이너를 추가하면 Kubernetes Operator가 컨테이너를 Kubernetes pod에 추가합니다. 이러한 컨테이너는 파드의 각mongos
인스턴스 컨테이너에 추가됩니다.이 설정을 사용하여 각 포드에 대한 CPU 및 RAM 할당을 지정합니다. 예제 는 의 샘플을 Github 참조하세요.
spec.shardCount
유형: integer
필수. 샤드 클러스터의 샤드 수입니다.
spec.shard.additionalMongodConfig
유형: 컬렉션
각 샤드 클러스터 샤드 멤버를 시작하는 데 사용할 추가 구성 옵션 입니다.
Kubernetes Operator는 MongoDB Agent를 통해 배포하는 MongoDB 버전의 모든 구성 옵션을 지원합니다. 단, 사용자가 다음 옵션에 제공한 값은 Kubernetes Operator에 의해 재정의됩니다.
Kubernetes Operator가 소유하는 구성 옵션에 대해 자세히 알아보려면 MongoDB Kubernetes Operator전용 설정을 참조하세요.
사용할 수 있는 구성 옵션에 대해 알아보려면 Ops 관리자 설명서에서 MongoDB 배포를 위한 고급 옵션을 참조하세요.
spec.shard.agent
유형: 컬렉션
각 샤딩된 클러스터 샤드 구성원에 대한 MongoDB Agent 구성 설정입니다.
spec.shard.agent.startupOptions
유형: 컬렉션
각 샤딩된 클러스터 샤드 구성원을 시작할 MongoDB Agent 설정입니다.
MongoDB Agent 설정을 키-값 쌍으로 제공해야 합니다. 값은 문자열이어야 합니다.
지원되는 MongoDB Agent 설정 목록은 다음을 참조하세요.
Cloud Manager 프로젝트에 대한 MongoDB Agent 설정 .
Operator와 함께 배포한 MongoDB Ops Manager 버전에 대한MongoDB Agent 설정 입니다. Kubernetes
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: my-sharded-cluster-options 6 spec: 7 version: "6.0.0-ent" 8 type: ShardedCluster 9 opsManager: 10 configMapRef: 11 name: my-project 12 credentials: my-credentials 13 persistent: true 14 shardCount: 2 15 mongodsPerShardCount: 3 16 mongosCount: 2 17 configServerCount: 1 18 19 mongos: 20 agent: 21 startupOptions: 22 maxLogFiles: "30" 23 24 configSrv: 25 agent: 26 startupOptions: 27 dialTimeoutSeconds: "40" 28 shard: 29 agent: 30 startupOptions: 31 serverSelectionTimeoutSeconds: "20" 32 ...
spec.shardPodSpec
유형: 객체
MongoDB CustomResourceDefinition 의 사양이 포함된 객체 샤드 Pods.
spec.shardPodSpec.persistence.multiple.data
유형: 컬렉션
Kubernetes Operator가 영구 볼륨 클레임 을 생성하도록 설정 자체 영구 볼륨 에 데이터의 디렉토리를 마운트합니다. .
참고
spec.persistent
: true
인 경우 이 컬렉션의 값을 설정해야 합니다.이 컬렉션 또는
persistence.single
컬렉션을 설정할 수 있지만 둘 다 설정할 수는 없습니다.
스칼라데이터 유형설명labelSelector
문자열storage
문자열Kubernetes 노드 에서 사용할 수 있어야 하는 최소 저장 용량 Kubernetes에서 각 샤드 클러스터 샤드 멤버를 호스팅합니다. 이 값은 정수 뒤에 JEDEC 표기법으로 저장 단위를 붙여 표현합니다.
기본값은 16Gi입니다.
예를 예시 이
MongoDB
리소스 에 60 기가바이트의 저장 공간이 필요한 경우 이 값을60Gi
로 설정하다 합니다.storageClass
문자열각 샤딩된 클러스터 샤드 멤버에 필요한 스토리지 유형입니다. 이 저장소 유형을 StorageClass 객체로 생성한 후 이 객체 사양에서 사용할 수 있습니다.
StorageClass 를 설정해야
reclaimPolicy
합니다. 유지할 . 이렇게 하면 영구 볼륨 클레임 이 발생할 때 데이터가 유지됩니다. 제거됩니다.
spec.shardPodSpec.persistence.single
유형: 컬렉션
Kubernetes Operator가 하나의 퍼시스턴트 볼륨 클레임(Persistent Volume Claim, PVC)을 생성하고 데이터와 저널 및 로그에 대한 세 개의 디렉토리를 모두 동일한 퍼시스턴트 볼륨 마운트하도록 합니다.
참고
spec.persistent
: true
인 경우 이 컬렉션의 값을 설정해야 합니다.이 컬렉션 또는
persistence.multiple
컬렉션을 설정할 수 있지만 둘 다 설정할 수는 없습니다.
스칼라데이터 유형설명labelSelector
문자열storage
문자열storageClass
문자열영구 볼륨 클레임 에 지정된 스토리지 유형 . 이 스토리지 유형을 StorageClass 로 생성할 수 있습니다. 이 객체 에서 사용하기 전에 사양.
StorageClass 를 설정해야
reclaimPolicy
합니다. 유지할 . 이렇게 하면 영구 볼륨 클레임 이 발생할 때 데이터가 유지됩니다. 제거됩니다.
spec.shardPodSpec.persistence.multiple.journal
유형: 컬렉션
Kubernetes Operator가 영구 볼륨 클레임 을 생성하도록 설정 자체 영구 볼륨 에 저널용 디렉토리를 마운트합니다. .
참고
spec.persistent
: true
인 경우 이 컬렉션의 값을 설정해야 합니다.이 컬렉션 또는
persistence.single
컬렉션을 설정할 수 있지만 둘 다 설정할 수는 없습니다.
스칼라데이터 유형설명labelSelector
문자열storage
문자열Kubernetes 노드 에서 사용할 수 있어야 하는 최소 저장 용량 Kubernetes에서 각 샤드 클러스터 샤드 멤버를 호스팅합니다. 이 값은 정수 뒤에 JEDEC 표기법으로 저장 단위를 붙여 표현합니다.
기본값은 1Gi입니다.
예를 예시 이
MongoDB
리소스 에 60 기가바이트의 저장 공간이 필요한 경우 이 값을60Gi
로 설정하다 합니다.storageClass
문자열각 샤딩된 클러스터 샤드 멤버에 필요한 스토리지 유형입니다. 이 저장소 유형을 StorageClass 객체로 생성한 후 이 객체 사양에서 사용할 수 있습니다.
StorageClass 를 설정해야
reclaimPolicy
합니다. 유지할 . 이렇게 하면 영구 볼륨 클레임 이 발생할 때 데이터가 유지됩니다. 제거됩니다.
spec.shardPodSpec.persistence.multiple.logs
유형: 컬렉션
Kubernetes Operator가 영구 볼륨 클레임 을 생성하도록 설정 자체 영구 볼륨 에 로그용 디렉토리를 마운트합니다. .
참고
spec.persistent
: true
인 경우 이 컬렉션의 값을 설정해야 합니다.이 컬렉션 또는
persistence.single
컬렉션을 설정할 수 있지만 둘 다 설정할 수는 없습니다.
스칼라데이터 유형설명labelSelector
문자열storage
문자열Kubernetes 노드 에서 사용할 수 있어야 하는 최소 저장 용량 Kubernetes에서 각 샤드 클러스터 샤드 멤버를 호스팅합니다. 이 값은 정수 뒤에 JEDEC 표기법으로 저장 단위를 붙여 표현합니다.
기본값은 3Gi입니다.
예를 예시 이
MongoDB
리소스 에 60 기가바이트의 저장 공간이 필요한 경우 이 값을60Gi
로 설정하다 합니다.storageClass
문자열각 샤딩된 클러스터 샤드 멤버에 필요한 스토리지 유형입니다. 이 저장소 유형을 StorageClass 객체로 생성한 후 이 객체 사양에서 사용할 수 있습니다.
StorageClass 를 설정해야
reclaimPolicy
합니다. 유지할 . 이렇게 하면 영구 볼륨 클레임 이 발생할 때 데이터가 유지됩니다. 제거됩니다.
spec.shardPodSpec.podTemplate
유형: 컬렉션
템플릿 MongoDB Enterprise Kubernetes Operator가 각 샤드 클러스터 샤드 멤버에 대해 생성하는 Kubernetes Pods에 대한
템플릿 값은
spec.shardPodSpec
에 지정된 값보다 우선합니다.참고
Kubernetes Operator가
spec.shardPodSpec.podTemplate
에 제공한 필드의 유효성을 검사하지 않습니다.
spec.shardPodSpec.podTemplate.affinity.podAffinity
유형: 문자열
Kubernetes 규칙 여러
MongoDB
리소스 파드 가 다른 Pod 와 함께 위치해야 합니다. . 사용 사례에 대해 자세히 알아보려면 선호도 및 반 선호도 를 참조하세요. Kubernetes 문서에서 확인 가능합니다.
spec.shardPodSpec.podTemplate.affinity.nodeAffinity
유형: 문자열
Kubernetes 규칙 Pods 배치 특정 범위의 노드 에 있는 복제본 세트 의 경우 .
읽기-쓰기 성능을 최적화하려면 Pods 를 제한하는 노드 어피니티 규칙을 사용하세요. 특정 노드 에서 실행 또는 특정 노드 에서 실행하는 것을 선호합니다. .
spec.shardPodSpec.podTemplate.affinity.podAntiAffinity
유형: 문자열
Default: kubernetes.io/hostname
규칙 설정 Pods 확산
MongoDB
리소스를 다른 위치에 호스팅합니다. 위치는 단일 노드, 랙 또는 리전일 수 있습니다. 기본적으로 Kubernetes Operator는 여러 노드에 파드를 분산하려고 시도합니다.
spec.shardPodSpec.podTemplate.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey
유형: 문자열
Default: kubernetes.io/hostname
이 키는 다음 레이블 을 정의합니다. 토폴로지 도메인 을 결정하는 데 사용됩니다. 노드가 속합니다.
spec.shardPodSpec.podTemplate.metadata
유형: 컬렉션
MongoDB Enterprise Kubernetes Operator가 각 샤딩된 클러스터 샤드 멤버에 대해 생성하는 Kubernetes Pod의 메타데이터입니다.
에추가할 수 있는 필드를 검토하려면
spec.shardPodSpec.podTemplate.metadata
Kubernetes 설명서를 참조하세요.
spec.shardPodSpec.podTemplate.spec
유형: 컬렉션
MongoDB Enterprise Kubernetes Operator가 각 샤딩된 클러스터 노드에 대해 생성하는 Kubernetes 파드의 설명서입니다.
에 추가할 수
spec.shardPodSpec.podTemplate.spec
Kubernetes 있는 필드를1 Core API 검토하려면 PodSpec v 를 참조하세요.참고
spec.shardPodSpec.podTemplate.spec.containers
에 컨테이너를 추가하면 Kubernetes Operator가 컨테이너를 Kubernetes pod에 추가합니다. 이러한 컨테이너는 파드의 각 샤딩된 클러스터 샤드 멤버 컨테이너에 추가됩니다.이 설정을 사용하여 각 포드에 대한 CPU 및 RAM 할당을 지정합니다. 예제 는 의 샘플을 Github 참조하세요.
spec.shardSpecificPodSpec
유형: 배열
샤드별로 StatefulSet에 대한 재정의 항목을 포함하는 목록입니다.
spec.shardSpecificPodSpec.podTemplate
유형: 컬렉션
템플릿 MongoDB Enterprise Kubernetes Operator가 특정 샤드에 대해 생성하는 Kubernetes Pods에 대한
템플릿 값은
spec.shardSpecificPodSpec
에 지정된 값보다 우선합니다.참고
Kubernetes Operator가
spec.shardSpecificPodSpec.podTemplate
에 제공한 필드의 유효성을 검사하지 않습니다.
spec.shardSpecificPodSpec.podTemplate.affinity.podAffinity
유형: 문자열
Kubernetes 규칙 여러
MongoDB
리소스 파드 가 다른 Pod 와 함께 위치해야 합니다. . 사용 사례에 대해 자세히 알아보려면 선호도 및 반 선호도 를 참조하세요. Kubernetes 문서에서 확인 가능합니다.
spec.shardSpecificPodSpec.podTemplate.affinity.podAntiAffinity
유형: 문자열
Default: kubernetes.io/hostname
규칙 설정 Pods 확산
MongoDB
리소스를 다른 위치에 호스팅합니다. 위치는 단일 노드, 랙 또는 리전일 수 있습니다. 기본적으로 Kubernetes Operator는 여러 노드에 파드를 분산하려고 시도합니다.
spec.shardSpecificPodSpec.podTemplate.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey
유형: 문자열
Default: kubernetes.io/hostname
이 키는 다음 레이블 을 정의합니다. 토폴로지 도메인 을 결정하는 데 사용됩니다. 노드가 속합니다.
spec.shardSpecificPodSpec.podTemplate.metadata
유형: 컬렉션
MongoDB Enterprise Kubernetes Operator가 특정 샤드에 대해 생성하는 Kubernetes Pods의 메타데이터입니다.
에추가할 수 있는 필드를 검토하려면
spec.shardSpecificPodSpec.podTemplate.metadata
Kubernetes 설명서를 참조하세요.
spec.shardSpecificPodSpec.podTemplate.spec
유형: 컬렉션
MongoDB Enterprise Kubernetes Operator가 특정 샤드에 대해 생성하는 Kubernetes 파드의 사양입니다.
에 추가할 수
spec.shardSpecificPodSpec.podTemplate.spec
Kubernetes 있는 필드를1 Core API 검토하려면 PodSpec v 를 참조하세요.참고
spec.shardSpecificPodSpec.podTemplate.spec.containers
에 컨테이너를 추가하면 Kubernetes Operator가 컨테이너를 Kubernetes pod에 추가합니다. 이러한 컨테이너는 pod의 특정 샤드 컨테이너에 추가됩니다.이 설정을 사용하여 각 포드에 대한 CPU 및 RAM 할당을 지정합니다. 예제 는 의 샘플을 Github 참조하세요.
Prometheus 설정
독립형 리소스, 복제본 세트 또는 샤딩된 클러스터와 함께 Prometheus를 사용할 수 있습니다. 자세히 알아보려면 Prometheus와 함께 사용할 리소스 배포를 참조하세요. 예시를 보려면 Prometheus와 함께 사용하는 MongoDB 리소스를 참조하세요.
Prometheus를 MongoDB 리소스와 함께 사용할 때 적용되는 설정은 다음과 같습니다:
spec.prometheus.metricsPath
유형: 문자열
옵션
기본값:
"/metrics"
지표 엔드포인트의 경로를 나타내는 사람이 읽을 수 있는 문자열입니다. 이 설정을 지정하지 않으면 기본값이 적용됩니다.
spec.prometheus.passwordSecretRef
유형: 객체
조건부
시크릿 의 세부 정보가 포함된 객체 기본 HTTP 인증의 경우. MongoDB 리소스와 함께 Prometheus를 사용하려면 이 설정을 지정해야 합니다.
spec.prometheus.passwordSecretRef.key
유형: 문자열
옵션
기본값:
"password"
시크릿 의 키를 식별하는 사람이 string 읽을 수 있는 기본 인증을 위한 비밀번호를 HTTP 저장합니다. 이 설정을 지정하지 않으면 기본값이 적용됩니다.
spec.prometheus.passwordSecretRef.name
유형: 문자열
조건부
기본 HTTP 인증을 위한 비밀번호를 저장하는 시크릿(secret)을 식별하는 레이블로, 사람이 읽을 수 있습니다. MongoDB 리소스와 함께 Prometheus를 사용하려면 이 설정을 지정해야 합니다.
spec.prometheus.tlseSecretKeyRef
유형: 객체
옵션
시크릿 의 세부 정보가 포함된 객체 TLS 인증의 경우.
spec.prometheus.tlseSecretKeyRef.key
유형: 문자열
옵션
기본값:
"password"
시크릿 의 키를 식별하는 사람이 string 읽을수 있는 TLS 인증을 위한 비밀번호를 저장합니다. 이 설정을 지정하지 않으면 기본값이 적용됩니다.
spec.prometheus.tlseSecretKeyRef.name
유형: 문자열
조건부
시크릿 을 식별하는 인간 판독 가능 레이블 TLS 인증을 위한 비밀번호가 포함되어 있습니다. MongoDB 리소스와 함께 Prometheus를 사용하고 TLS 인증을 사용하려면 이 설정을 지정해야 합니다.
보안 설정
다음 보안 설정은 복제본 세트 및 샤딩된 클러스터 리소스 유형에만 적용됩니다.
spec.security.tls.enabled
유형: 부울
기본값:
false
중요
spec.security.tls.enabled
은 Kubernetes 연산자 버전 1.19 부터 더 이상 사용되지 않습니다. TLS 를 활성화하려면spec.security.certsSecretPrefix
설정에 대한 값을 제공합니다.TLS 인증서를 사용하여 통신을 암호화합니다:
복제본 세트 또는 샤딩된 클러스터 구성의 MongoDB 호스트
클라이언트(
mongo
shell, 드라이버, MongoDB Compass 등) 및 MongoDB deployment
기본적으로
net.ssl.mode
은requireSSL
로 설정됩니다. 클라이언트 및 데이터베이스 연결에 사용되는 TLS 모드를 변경하려면spec.additionalMongodConfig.net.ssl.mode
를 참조하세요.
spec.security.tls.ca
유형: 문자열
ConfigMap 의 이름을
MongoDB
입력합니다. 리소스에 대한 CA 를 저장합니다.중요
사용자 지정 CA를 사용하여
MongoDB
리소스에 대한 TLS 인증서를 서명하는 경우 이 매개 변수를 지정해야 합니다.Kubernetes Operator에서는 ConfigMap에서
MongoDB
리소스 인증서ca-pem
의 이름을 지정해야 합니다.
spec.security.certsSecretPrefix
유형: 문자열
생성한 쿠버네티스 시크릿의 앞에 붙는 텍스트. 복제본 세트 또는 샤딩된 클러스터의 TLS 키와 인증서를 포함합니다.
시크릿 앞에
<prefix>-<metadata.name>
을(를) 붙여야 합니다.예를 예시
my-deployment
mdb
배포서버 서버를 호출하고 접두사를 로 설정하다 하는 경우 클라이언트 TLS 통신에 대한 TLS 시크릿의 이름을 로 지정해야mdb-my-deployment-cert
합니다. 또한 내부 클러스터 인증 (활성화된 경우)을 위한 TLS 시크릿의 이름을mdb-my-deployment-clusterfile
로 지정해야 합니다.TLS 인증서가 포함된 시크릿을 명명하는 방법은 배포에 적용되는 복제본 세트 배포하기 주제를 참조하세요.
spec.security.tls.additionalCertificateDomains
유형: 부울
이 배포의 각 포드에 대한 TLS 인증서에 추가해야 하는 모든 도메인의 목록입니다. 이 매개 변수를 설정하면 Kubernetes Operator가 TLS 인증서로 변환하는 모든 CSR에
<pod name>.<additional cert domain>
형식의 SAN이 포함됩니다.복제본 세트 리소스에는 이 매개 변수가 필요하지 않습니다. 대신
spec.connectivity.replicaSetHorizons
을(를) 사용하세요.참고
이 매개변수를 TLS지원 리소스에 추가하면 리소스가
Pending
상태에 도달 시 Kubernetes에서 오류를 표시합니다. 이 오류는 다음과 같이 표시됩니다:Please manually remove the |csr| in order to proceed.
이 문제를 해결하려면:Kubernetes가 새 CSR을 생성할 수 있도록 기존 CSR을 모두 제거합니다. 리소스를 삭제하는 방법에 대한 자세한 내용은 Kubernetes 설명서의 리소스 삭제를 참조하세요.
Kubernetes가 CSR을 생성한 후 승인합니다.
spec.additionalMongodConfig.net.ssl.mode
유형: 문자열
기본값:
requireSSL
네트워크 연결에 사용되는
sslMode
를 지정합니다. 다음은 유효한 옵션입니다:값설명allowSSL
서버 간 연결이 TLS를 사용하지 않습니다. 수신 연결의 경우 서버는 TLS와 비TLS를 모두 허용합니다.preferSSL
서버 간 연결은 TLS를 사용합니다. 수신 연결의 경우 서버는 TLS와 비TLS를 모두 허용합니다.requireSSL
서버가 TLS로 암호화된 연결만 사용하고 허용합니다.
spec.additionalMongodConfig.net.tls.disabledProtocols
유형: 문자열
MongoDB 버전 4.2의 새로운 기능.
TLS로 실행 중인 MongoDB 서버가 1개 또는 그 이상의 특정 프로토콜을 사용하는 수신 연결을 허용하지 않도록 방지합니다. 여러 프로토콜을 지정하려면 쉼표로 구분된 프로토콜 목록을 입력합니다. 예시:
TLS1_0,TLS1_1
.이 설정은 다음 프로토콜을 인식합니다:
TLS1_0
,TLS1_1
,TLS1_2
. MongoDB 4.0.4 버전부터는 (및 3.6.9)TLS1_3
도 인식합니다. 인식할 수 없는 프로토콜을 지정하면 서버가 시작되지 않습니다.macOS에서는
TLS1_1
을 비활성화하고TLS1_0
및TLS1_2
를 모두 활성화할 수 없습니다. 최소TLS1_0
또는TLS1_2
도 비활성화해야 합니다. 예를 들어TLS1_0,TLS1_1
은 macOS에서TLS1_2
를 비활성화합니다.비활성화한 프로토콜 목록은 비활성화된 프로토콜의 기본 목록을 대체합니다.
MongoDB 버전 4.0 부터 MongoDB는 1.0 1.1시스템에서 TLS +를 사용할 수 있는 경우 TLS 사용을 비활성화합니다. 비활성화된 TLS 1 를 활성화합니다.0,
spec.additionalMongodConfig.net.tls.disabledProtocols
의 값으로none
를 지정합니다. 이 설정에 대해 자세히 알아보려면 TLS 비활성화 1 를 참조하세요.0.복제본 세트와 샤딩된 클러스터의 구성원은 적어 하나의 공통된 프로토콜을 사용해야 합니다.
spec.security.authentication.enabled
유형: 부울
기본값:
false
Cloud Manager 또는 MongoDB Ops Manager 프로젝트에서 인증을 활성화할지 여부를 지정합니다.
true
로 설정된 경우spec.security.authentication.modes
에서 인증 메커니즘을 설정해야 합니다.중요
이 설정을 포함하면 값이
false
으로 설정되어 있더라도 Kubernetes Operator가 이 MongoDB 리소스에 대한 인증을 관리합니다. 이 설정이 리소스 사양에 있는 동안에는 Cloud Manager나 Ops Manager의 UI 또는 API를 사용하여 이 리소스에 대한 인증을 구성할 수 없습니다.Cloud Manager, Ops Manager UI 또는 API를 사용하여 인증을 관리하려면 이 설정을 생략합니다.
spec.security.authentication.modes
유형: 배열
MongoDB 배포에서 사용하는 인증 메커니즘을 지정합니다. 유효한 값은
SCRAM
,SCRAM-SHA-1
,MONGODB-CR
,X509
및LDAP
입니다.SCRAM-SHA-1
보다SCRAM-SHA-256
(SCRAM
)을 권장합니다.SCRAM-SHA-1
을 지정하는 경우MONGODB-CR
도 지정해야 합니다.참고
X.509 내부 클러스터 인증
또는 MongoDB Ops Manager 프로젝트에 대해 X. 내부509 클러스터 인증 을 사용하려면 이 값을 로 Cloud Manager
["X509"]
설정하고 다음 설정을 지정합니다.spec.security.certsSecretPrefix
설정에 대한 값을 입력합니다.`
spec.security.authentication.modes
에 둘 이상의 값을 제공하는 경우spec.security.authentication.agents.mode
에도 값을 지정해야 합니다.
spec.security.authentication.internalCluster
유형: 문자열
X.509 내부 클러스터 인증 을 사용할지 여부를 지정합니다.
X.509 내부 클러스터 인증을 활성화하려면
"X509"
으로 설정합니다. 다음 설정을 지정해야 합니다:Kubernetes Operator는 다음 값을 허용합니다:
["X509"]
: X.509 내부 클러스터 인증이 활성화됩니다.""
또는 생략: 내부 클러스터 인증이 활성화되어 있지 않습니다.
중요
내부 클러스터 인증을 활성화한 후에는 비활성화할 수 없습니다.
spec.security.authentication.requireClientTLSAuthentication
유형: 부울
기본값:
false
클라이언트가 TLS 인증서를 사용하여 연결해야 하는지 여부를 지정합니다. TLS 인증서를 활성화한 경우 기본값은
true
입니다.TLS 인증을 활성화하려면
spec.security.certsSecretPrefix
설정에 대한 값을 제공합니다.
spec.security.authentication.ldap
유형: 컬렉션
LDAP 인증에 필요합니다.
또는 MongoDB Ops Manager 프로젝트에 대한 인증을 LDAP 구성합니다.Cloud Manager LDAP 인증을 활성화하려면
spec.security.authentication.modes
을(를)["LDAP"]
(으)로 설정합니다.
spec.security.authentication.ldap.servers
유형: 문자열 배열
LDAP 인증에 필요합니다.
LDAP 서버의 호스트 이름 및 포트 목록입니다. 다음 형식으로 해당 포트와 함께 호스트 이름을 지정합니다.
spec: security: authentication: ldap: servers: - "<hostname1>:<port1>" - "<hostname2>:<port2>"
spec.security.authentication.ldap.transportSecurity
유형: 문자열
LDAP 인증에 필요합니다.
LDAP 서버가 TLS를 허용하는지 여부를 지정합니다.
LDAP 서버가 TLS를 허용하는 경우 값을
tls
로 설정합니다. LDAP 서버가 TLS를 허용하지 않는 경우 이 값을 비워 두거나none
으로 설정합니다.참고
none
또는tls
이외의 문자열을 지정하는 경우, Kubernetes Operator는 여전히 설정을tls
로 설정합니다.
spec.security.authentication.ldap.caConfigMapRef
유형: 컬렉션
TLS를 사용한 LDAP 인증에 필요합니다.
ConfigMap 여기에는 LDAP 서버의 TLS 인증서의 유효성을 검사하는 CA 가 포함되어 있습니다.
spec.security.authentication.ldap.caConfigMapRef.name
유형: 문자열
TLS를 사용한 LDAP 인증에 필요합니다.
ConfigMap 의 이름 여기에는 LDAP 서버의 TLS 인증서의 유효성을 검사하는 CA 가 포함되어 있습니다.
spec.security.authentication.ldap.caConfigMapRef.key
유형: 문자열
TLS를 사용한 LDAP 인증에 필요합니다.
LDAP 서버의 TLS 인증서 유효성을 검사하는 인증 기관(CA)을 저장하는 필드의 이름입니다.
spec.security.authentication.ldap.bindQueryUser
유형: 문자열
LDAP 인증에 필요합니다.
LDAP 서버에 연결할 때 MongoDB가 바인딩하는 LDAP 고유 이름입니다.
spec.security.authentication.ldap.bindQueryPasswordSecretRef.name
유형: 문자열
LDAP 인증에 필요합니다.
시크릿이름 LDAP 서버에 연결할 때 MongoDB가 바인딩하는 비밀번호가 포함되어 있습니다.
spec.security.authentication.ldap.authzQueryTemplate
유형: 문자열
LDAP 인증에 필요합니다.
RFC4515 및 RFC4516 사용자가 속한 LDAP 그룹을 가져오기 위해 MongoDB에서 실행하는 LDAP 형식의 쿼리 URL 템플릿입니다. 쿼리는
spec.security.authentication.ldap.servers
에 지정된 하나 이상의 호스트를 기준으로 합니다. 템플릿에서 다음 토큰을 사용할 수 있습니다.{USER}
- 인증된 사용자 이름 또는
transformed
사용자 이름을 LDAP 쿼리로 대체합니다.
{PROVIDED_USER}
- 인증 또는 LDAP 변환 전에 제공된 사용자 이름을 LDAP 쿼리로 대체합니다. (MongoDB 버전 4.2부터 사용 가능)
spec.security.authentication.agents.automationLdapGroupDN
유형: 문자열
MongoDB Agent 사용자가 속한 LDAP 그룹의 고유 이름(DN)입니다.
이 설정은 다음과 같은 경우에 필요합니다:
spec.security.authentication.ldap.authzQueryTemplate
가 포함되어 있고 동시에spec.security.authentication.agents.mode
은LDAP
또는X509
입니다.
spec.security.authentication.ldap.userToDNMapping
유형: 문자열
인증을 위해
mongod
또는mongos
에 제공된 사용자 이름을 LDAP DN(고유 이름)에 매핑합니다.
spec.security.authentication.ldap.userCacheInvalidationInterval
유형: integer
MongoDB가 LDAP 사용자 캐시를 플러시할 때까지 기다리는 시간(초)을 지정합니다. 기본값은 30초입니다.
spec.security.authentication.agents
유형: 컬렉션
Cloud Manager 또는 Ops Manager 프로젝트에 대한 MongoDB 에이전트 인증 구성입니다.
spec.security.authentication.agents.mode
유형: 문자열
MongoDB deployment용 MongoDB Agent가 사용하는 인증 메커니즘입니다. 유효한 값은
SCRAM
,SCARM-SHA-1
,MONGODB-CR
,X509
및LDAP
입니다. 지정한 값은spec.security.authentication.modes
에도 있어야 합니다.SCRAM-SHA-1
보다SCRAM-SHA-256
(SCRAM
)를 권장합니다.SCRAM-SHA-1
를 지정하는 경우MONGODB-CR
도 지정해야 합니다.spec.security.authentication.modes
에 둘 이상의 값을 지정한 경우 이 설정이 필요합니다.
spec.security.authentication.agents.automationUserName
유형: 문자열
MongoDB Agent가 MongoDB deployment와 상호 작용하는 데 사용하는 사용자의 이름입니다. 사용자 이름은
spec.security.authentication.ldap.userToDNMapping
에 따라 LDAP DN(고유 이름)에 매핑됩니다. 결과 DN은 LDAP 배포에 이미 존재해야 합니다.spec.security.authentication.agents.mode
이LDAP
경우 이 설정이 필요합니다.
spec.security.authentication.agents.automationPasswordSecretRef
유형: 컬렉션
시크릿 의 세부 정보 사용자의
spec.security.authentication.agents.automationUserName
비밀번호가 포함되어 있습니다.spec.security.authentication.agents.mode
이LDAP
경우 이 설정이 필요합니다.
spec.security.authentication.agents.automationPasswordSecretRef.name
유형: 문자열
시크릿 이름
spec.security.authentication.agents.automationUserName
사용자의 비밀번호가 포함되어 있습니다. Kubernetes Operator를 배포하는 동일한 네임스페이스에 이 시크릿을 생성해야 합니다.kubectl create secret generic ldap-agent-user \ --from-literal="password=<password>" -n <metadata.namespace> 이 시크릿에는 LDAP 배포에 있는
spec.security.authentication.agents.automationUserName
사용자의 비밀번호와 일치하는 값을 가진 하나의 키가 포함되어야 합니다.spec.security.authentication.agents.mode
이LDAP
경우 이 설정이 필요합니다.
spec.security.authentication.agents.automationPasswordSecretRef.key
유형: 문자열
시크릿 키
spec.security.authentication.agents.automationPasswordSecretRef.name
입력 에 사용자의 비밀번호가 포함되어spec.security.authentication.agents.automationUserName
있습니다.spec.security.authentication.agents.mode
이LDAP
경우 이 설정이 필요합니다.
spec.security.authentication.agents.clientCertificateSecretRef.name
유형: 문자열
시크릿 을 지정합니다. 여기에는 MongoDB Agent의 TLS 인증서가 포함되어 있습니다. 생략하면 기본값은
agent-certs
입니다.이 시크릿에는 다음 키가 포함되어야 하며 그 값은 서버에서 유효성을 검사할 수 있는 TLS 인증서입니다.
mms-automation-agent-pem
mms-backup-agent-pem
mms-monitoring-agent-pem
Kubernetes Operator를 배포하는 네임스페이스에 시크릿을 생성해야 합니다.
kubectl create secret generic agent-certs \ --from-file=mms-automation-agent-pem=<automation-cert.pem> \ --from-file=mms-backup-agent-pem=<backup-cert.pem> \ --from-file=mms-monitoring-agent-pem=<monitoring-cert.pem> \ --namespace=<metadata.namespace>
spec.security.roles
유형: 배열
MongoDB 배포에 대한 세분화된 액세스 제어를 제공하는 맞춤 설정 역할을 정의하는 배열입니다.
사용자 정의 역할을 활성화하려면 이
spec.security.authentication.enabled
이어야true
합니다.예시
이 예에서
customRole
(이)라는 사용자 정의 역할은 이 역할이 할당된 사용자에게 허용됩니다.pets
데이터베이스의cats
컬렉션에 문서를 삽입합니다.pets
데이터베이스의dogs
컬렉션에 문서를 찾아 삽입합니다.
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: <my-replica-set> 6 spec: 7 members: 3 8 version: "4.2.2-ent" 9 type: ReplicaSet 10 opsManager: 11 configMapRef: 12 name: <configMap.metadata.name> 13 credentials: <mycredentials> 14 persistent: true 15 security: 16 authentication: 17 enabled: true 18 modes: 19 - "SCRAM" 20 roles: 21 - role: "customRole" 22 db: admin 23 privileges: 24 - actions: 25 - insert 26 resource: 27 collection: cats 28 db: pets 29 - actions: 30 - insert 31 - find 32 resource: 33 collection: dogs 34 db: pets 35 ...
spec.security.roles.authenticationRestrictions
유형: 배열
이
spec.security.roles.role
이 할당된 사용자가 연결할 수 있는 IP 주소를 정의하는 배열입니다.
spec.security.roles.authenticationRestrictions.clientSource
유형: 배열
이
spec.security.roles.role
이 할당된 사용자가 연결할 수 있는 IP 주소 또는 CIDR 블록의 배열입니다.MongoDB 서버는 이 배열에 없는 클라이언트에서 요청이 오는 경우 이 역할이 부여된 사용자의 연결 요청을 거부합니다.
spec.security.roles.authenticationRestrictions.serverAddress
유형: 배열
이
spec.security.roles.role
이 할당된 사용자가 연결할 수 있는 IP 주소 또는 CIDR 블록의 배열입니다.MongoDB 서버는 클라이언트가 이 배열에 없는 서버에 연결을 요청하는 경우 이 역할이 부여된 사용자의 연결 요청을 거부합니다.
spec.security.roles.privileges.actions
유형: 배열
이 역할을 부여받은 사용자가 수행할 수 있는 작업 목록입니다. 허용되는 값 목록은 Kubernetes Operator로 배포하는 MongoDB 버전에 대한 MongoDB 매뉴얼의 권한 작업 을 참조하세요.
spec.security.roles.privileges.resource
유형: 컬렉션
actions
권한이 적용되는 리소스입니다.이 컬렉션에는 둘 중 하나가 포함되어야 합니다:
spec.security.roles.privileges.resource.database
유형: 문자열
actions
권한이 적용되는 데이터베이스입니다.이 설정에 대한 값을 제공하는 경우
spec.security.roles.privileges.resource.collection
에 대한 값도 제공해야 합니다.
spec.security.roles.privileges.resource.collection
유형: 문자열
database
권한이 적용되는actions
의 컬렉션입니다.이 설정에 대한 값을 제공하는 경우
spec.security.roles.privileges.resource.database
에 대한 값도 제공해야 합니다.
spec.security.roles.privileges.resource.cluster
유형: 부울
Default(기본값): False
actions
권한이 MongoDB deployment의 모든 데이터베이스 및 컬렉션에 적용됨을 나타내는 플래그입니다. 생략하면 기본값은false
입니다.true로 설정된 경우
spec.security.roles.privileges.resource.database
및spec.security.roles.privileges.resource.collection
에 대한 값을 제공하지 않습니다.
예시
다음 예에서는 모든 설정이 제공된 독립형 배포에 대한 리소스 사양을 보여줍니다.
apiVersion: mongodb.com/v1 kind: MongoDB metadata: name: my-standalone spec: version: "4.2.2-ent" service: my-service opsManager: # Alias of cloudManager configMapRef: name: my-project credentials: my-credentials persistent: true type: Standalone additionalMongodConfig: systemLog: logAppend: true verbosity: 4 operationProfiling: mode: slowOp podSpec: persistence: single: storage: "12Gi" storageClass: standard labelSelector: matchExpressions: - {key: environment, operator: In, values: [dev]} podTemplate: metadata: labels: label1: mycustomlabel affinity: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: security operator: In values: - S1 topologyKey: failure-domain.beta.kubernetes.io/zone nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/e2e-az-name operator: In values: - e2e-az1 - e2e-az2 podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: topologyKey: "mykey" weight: 50 ...
다음 예시 는 모든 설정이 제공된 복제본 세트 에 대한 리소스 사양을 보여줍니다.
apiVersion: mongodb.com/v1 kind: MongoDB metadata: name: my-replica-set spec: members: 3 version: "6.0.0-ent" service: my-service opsManager: # Alias of cloudManager configMapRef: name: my-project credentials: my-credentials persistent: true type: ReplicaSet podSpec: persistence: multiple: data: storage: "10Gi" journal: storage: "1Gi" labelSelector: matchLabels: app: "my-app" logs: storage: "500M" storageClass: standard podTemplate: metadata: labels: label1: mycustomlabel affinity: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: security operator: In values: - S1 topologyKey: failure-domain.beta.kubernetes.io/zone nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/e2e-az-name operator: In values: - e2e-az1 - e2e-az2 podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: topologyKey: "mykey" weight: 50 spec: affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: topologyKey: "mykey" weight: 50 security: certsSecretPrefix: "prefix" tls: ca: custom-ca authentication: enabled: true modes: ["X509"] internalCluster: "X509" statefulSet: spec: serviceName: my-service additionalMongodConfig: net: ssl: mode: preferSSL ...
다음 예시 는 모든 설정이 제공된 샤딩된 클러스터 의 리소스 사양을 보여줍니다.
apiVersion: mongodb.com/v1 kind: MongoDB metadata: name: my-sharded-cluster spec: shardCount: 2 mongodsPerShardCount: 3 mongosCount: 2 configServerCount: 3 version: "6.0.0-ent" service: my-service type: ShardedCluster ## Please Note: The default Kubernetes cluster name is ## `cluster.local`. ## If your cluster has been configured with another name, you can ## specify it with the `clusterDomain` attribute. opsManager: # Alias of cloudManager configMapRef: name: my-project credentials: my-credentials persistent: true configSrvPodSpec: # if "persistence" element is omitted then Operator uses the # default size (5Gi) for mounting single Persistent Volume podTemplate: spec: affinity: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: security operator: In values: - S1 topologyKey: failure-domain.beta.kubernetes.io/zone nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/e2e-az-name operator: In values: - e2e-az1 - e2e-az2 podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: topologyKey: nodeId mongosPodSpec: podTemplate: spec: affinity: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: security operator: In values: - S1 topologyKey: failure-domain.beta.kubernetes.io/zone nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/e2e-az-name operator: In values: - e2e-az1 - e2e-az2 podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: topologyKey: nodeId shardPodSpec: persistence: multiple: # if the child of "multiple" is omitted then the default size will be used. # 16GB for "data", 1GB for "journal", 3GB for "logs" data: storage: "20Gi" logs: storage: "4Gi" storageClass: standard podTemplate: spec: affinity: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: security operator: In values: - S1 topologyKey: failure-domain.beta.kubernetes.io/zone nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/e2e-az-name operator: In values: - e2e-az1 - e2e-az2 podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: topologyKey: nodeId mongos: additionalMongodConfig: systemLog: logAppend: true verbosity: 4 configSrv: additionalMongodConfig: operationProfiling: mode: slowOp shard: additionalMongodConfig: storage: journal: commitIntervalMs: 50 security: certsSecretPrefix: "prefix" tls: ca: custom-ca authentication: enabled: true modes: ["X509"] internalCluster: "X509" statefulSet: spec: serviceName: my-service ...
StatefulSet 설정
다음 StatefulSets 설정은 복제본 세트 및 샤딩된 클러스터 리소스 유형에만 적용됩니다.
spec.statefulSet.spec
유형: 컬렉션
StatefulSet 사양
MongoDB
리소스에 대해 생성하는 MongoDB Enterprise Kubernetes Operator입니다.
spec.statefulSet.spec.serviceName
유형: 문자열
기본값:
<resource_name>-svc
및<resource_name>-svc-external
StatefulSet 에 생성하거나 사용할 Kubernetes 서비스의 이름 . 이 이름의 서비스가 이미 존재하는 경우, MongoDB Enterprise Kubernetes Operator는 해당 서비스를 삭제하거나 다시 생성하지 않습니다. 이 설정을 사용하면 사용자 지정 서비스를 직접 생성하고 Kubernetes Operator가 이를 재사용할 수 있습니다.