MongoDBSearch 사용자 지정 리소스를 사용하면 Kubernetes에서 MongoDB 데이터베이스 배포와 함께 MongoDB Search 및 벡터 검색 노드를 배포하고 구성할 수 있습니다. MongoDBSearch 리소스는 MongoDB 배포에서 데이터를 동기화하여 전문 검색 및 시맨틱 검색 기능을 제공하는 mongot 프로세스를 배포합니다.
MongoDB Search 및 벡터 검색 배포에 대해 자세히 알아보려면 MongoDB Search 및 벡터 검색 배포를 참조하세요.
예시
다음 예는 MongoDBSearch 사용자 지정 리소스에 대한 리소스 사양을 보여줍니다.
참고
이 예시는 작동하는 구성이 아닙니다. 참조를 위해 샘플 값으로 채워진 모든 사용 가능한 필드가 포함되어 있습니다. 일부 필드는 상호 배타적이며, 일부는 다른 필드보다 우선순위가 높습니다(예시: source.external 은 source.mongodbResourceRef보다 우선순위가 높습니다). 유효한 조합은 아래 필드 설명을 참조하십시오.
1 spec: 2 source: 3 # external takes precedence over mongodbResourceRef 4 mongodbResourceRef: 5 name: mdb 6 external: 7 # hostAndPorts and shardedCluster are mutually exclusive 8 hostAndPorts: 9 - mdb-rs-external-0.example.com:27017 10 - mdb-rs-external-1.example.com:27017 11 - mdb-rs-external-2.example.com:27017 12 shardedCluster: 13 router: 14 hosts: 15 - mongos1.example.com:27017 16 - mongos2.example.com:27017 17 shards: 18 - shardName: shard-0 19 hosts: 20 - shard0-node1.example.com:27018 21 - shard0-node2.example.com:27018 22 - shardName: shard-1 23 hosts: 24 - shard1-node1.example.com:27018 25 - shard1-node2.example.com:27018 26 keyfileSecretRef: 27 name: mdb-keyfile 28 key: keyfile 29 tls: 30 # ca references a ConfigMap that contains ca.crt 31 ca: 32 name: mdbc-rs-ca 33 username: search-sync-source 34 passwordSecretRef: 35 name: mdbc-rs-search-sync-source-password 36 key: password 37 # x509 authentication (mutually exclusive with 38 # username/passwordSecretRef and source.tls) 39 x509: 40 clientCertificateSecretRef: 41 name: mongot-x509-client-cert 42 # Set only if the private key is encrypted 43 keyFilePasswordSecretRef: 44 name: mongot-x509-key-password 45 # TLS client certificate for SCRAM connections 46 # (mutually exclusive with x509): 47 # tls: 48 # clientCertificateSecretRef: 49 # name: mongot-scram-client-cert 50 # keyFilePasswordSecretRef: 51 # name: mongot-scram-key-password 52 security: 53 tls: 54 certificateKeySecretRef: 55 name: mdbs-tls-secret 56 certsSecretPrefix: my-prefix 57 # Set only if the private key is encrypted 58 keyFilePasswordSecretRef: 59 name: mdbs-tls-key-password 60 version: "1.70.1" 61 autoEmbedding: 62 embeddingModelAPIKeySecret: 63 name: embedding-model-api-query-key 64 providerEndpoint: https://ai.mongodb.com/v1/embeddings 65 featureFlags: 66 enableOverloadRetrySignal: true 67 logLevel: INFO 68 observability: 69 prometheus: 70 mode: enabled 71 port: 9946 72 metricsForwarder: 73 mode: auto 74 resourceRequirements: 75 requests: 76 cpu: 100m 77 memory: 128Mi 78 limits: 79 cpu: 250m 80 memory: 256Mi 81 deployment: 82 spec: 83 template: 84 spec: 85 nodeSelector: 86 kubernetes.io/os: linux 87 opsManager: 88 agentCredentials: 89 name: om-agent-api-key 90 projectConfigMapRef: 91 name: om-project-config 92 clusters: 93 - name: cluster-1 94 index: 0 95 replicas: 2 96 loadBalancer: 97 # Option 1: Operator-managed Envoy load balancer 98 managed: 99 externalHostname: "{shardName}.search.apps.example.com" 100 routerHostname: "search-router.apps.example.com:27028" 101 replicas: 2 102 resourceRequirements: 103 requests: 104 cpu: "100m" 105 memory: 128Mi 106 limits: 107 cpu: "500m" 108 memory: 512Mi 109 deployment: 110 spec: 111 template: 112 spec: 113 nodeSelector: 114 kubernetes.io/os: linux 115 retryPolicy: 116 numRetries: 2 117 perTryTimeout: "60s" 118 minMongotReadyReplicas: 1 119 # Option 2: User-provided (BYO) load balancer 120 # (mutually exclusive with managed) 121 unmanaged: 122 endpoint: "{shardName}-search-lb.corp.example.com:443" 123 resourceRequirements: 124 limits: 125 cpu: "3" 126 memory: 5Gi 127 requests: 128 cpu: "2" 129 memory: 4Gi 130 persistence: 131 single: 132 storage: 16G 133 storageClass: standard 134 statefulSet: 135 spec: 136 template: 137 spec: 138 nodeSelector: 139 kubernetes.io/os: linux 140 jvmFlags: 141 - -Xms2g 142 - -Xmx2g 143 advancedMongotConfigs: 144 someAdvancedSetting: value 145 syncSourceSelector: 146 matchTagSets: 147 - region: us-east-1 148 workload: search 149 - {} 150 shardOverrides: 151 - shardNames: 152 - shard-0 153 replicas: 3 154 resourceRequirements: 155 requests: 156 cpu: "4" 157 memory: 8Gi 158 persistence: 159 single: 160 storage: 32G 161 jvmFlags: 162 - -Xms4g 163 - -Xmx4g 164 statefulSet: 165 spec: 166 template: 167 spec: 168 nodeSelector: 169 disktype: ssd
필수 MongoDBSearch 리소스 설정
이 섹션에서는 모든 MongoDBSearch 리소스에 사용해야 하는 설정에 대해 설명합니다.
apiVersion유형: 문자열
MongoDB Kubernetes 리소스 스키마 의 버전입니다. 값을
mongodb.com/v1(으)로 설정합니다.
kind유형: 문자열
생성할 MongoDB Kubernetes 리소스의 종류입니다. 이를
MongoDBSearch으로 설정합니다.
metadata.namespace유형: 문자열
MongoDBSearch리소스 생성해야 하는 네임스페이스입니다.MongoDBSearch및MongoDB또는MongoDBCommunity리소스의 자동 구성을 활용하려면MongoDB또는MongoDBCommunity리소스 와 동일한 네임스페이스 에MongoDBSearch리소스 생성해야 합니다.
metadata.name유형: 문자열
MongoDBSearch리소스의 고유 식별자입니다. 이름은 유효한 Kubernetes DNS 하위 도메인 이름이어야 합니다. 이름은 짧게 유지합니다. Kubernetes 연산자는 이름에서 생성하는 Kubernetes 리소스의 이름을 파생합니다(예시:{name}-search-{clusterIndex}-{shardName}). Kubernetes 연산자는 모든 생성된 이름이 레이블의 경우 63 자, 하위 도메인 이름의 경우 253 자의 Kubernetes DNS 제한 범위 내에 맞는지 확인합니다.spec.clusters유형: 객체 배열
MongoDBSearch리소스에 대한 Kubernetes 클러스터 배포서버 구성입니다. 이 필드는 필수이며 최소 1개 이상, 최대 50 개 이하의 항목을 포함해야 합니다. 단일 클러스터 배포에 대한 항목 1개 또는 다중 클러스터 배포에서mongot팝을 실행하는 각 Kubernetes 클러스터에 대한 항목 1개입니다.name와index를 포함하여 전체 필드 참조에 대한 자세한 내용은 클러스터 배포서버 설정을 참조하십시오.
선택 사항 MongoDBSearch 리소스 설정
MongoDBSearch 사용자 지정 리소스는 다음 설정을 사용할 수 있습니다.
데이터 소스 설정
spec.source유형: 객체
mongot에 대한 MongoDB 소스를 설명하는 설정입니다. 소스는 복제본 세트 또는 샤딩된 클러스터 일 수 있습니다. 이 설정은 다음과 같은 경우에 필요합니다.MongoDB은(는) 외부입니다.MongoDB와 다른 이름을 가집니다.MongoDBSearch
MongoDBSearch리소스는 항상 MongoDB 배포서버에 연결되어 있어야 합니다.MongoDB또는MongoDBCommunityCRD와 함께 Kubernetes Operator를 사용하여 배포했고spec.source이(가) 비어 있는 경우, Kubernetes Operator는metadata.name에 따라 다음을 사용하여 Kubernetes에서 데이터베이스를 찾습니다.동일한 네임스페이스 에서
MongoDBSearch의metadata.name에 대해 설정하다 것과 동일한 이름을 가진MongoDB또는MongoDBCommunity리소스를 찾습니다.기본 사용자 이름의 경우
<MongoDBSearch.metadata.name>-search-sync-source-password를 반환하는<MongoDBSearch.metadata.name>-<username>-password시크릿에서mongot사용자의 비밀번호 시크릿을 찾습니다.
spec.source.mongodbResourceRef.name유형: 문자열
이 MongoDB Search 및 벡터 검색 리소스와 연결할
MongoDB또는MongoDBCommunity리소스의 이름입니다. Kubernetes Operator는 복제본 세트와 샤딩된 클러스터를 모두 지원합니다. 동일한MongoDB또는MongoDBCommunity리소스를 참조하는MongoDBSearch리소스는 하나 이상 있을 수 없습니다.MongoDB또는MongoDBCommunity리소스가 동일한 Kubernetes 클러스터에 배포되고MongoDBSearch리소스와 동일한 네임스페이스에 있는 경우에만 이 필드를 사용합니다. 데이터베이스가 Kubernetes 외부에 배포되었거나 다른 네임스페이스에 있는 경우spec.source.external를 사용하여 데이터베이스에 대한 연결을 구성합니다. 두 필드를 모두 설정하면spec.source.external가 우선됩니다.생략하면 Kubernetes Operator는 이
MongoDBSearch리소스와 동일한 이름을 가진MongoDB또는MongoDBCommunity리소스를 찾습니다.spec.source.mongodbResourceRef.namespace유형: 문자열
spec.source.mongodbResourceRef.name가 참조하는MongoDB또는MongoDBCommunity리소스의 네임스페이스. Kubernetes 연산자는 현재 이 필드를 무시하고 항상MongoDBSearch리소스의 네임스페이스를 사용합니다. 교차 네임스페이스 참조는 지원되지 않습니다. 데이터베이스가 다른 네임스페이스에 있는 경우spec.source.external를 사용합니다.spec.source.username유형: 문자열
mongod(으)로mongot을(를) 인증하는 데 사용할 사용자 이름입니다. 지정된 사용자는searchCoordinator역할 있어야 합니다. 생략하면 Kubernetes 연산자는 사용자 이름search-sync-source로 가정합니다.spec.source.passwordSecretRef.name유형: 문자열
mongot이(가)mongod(으)로 인증하는 데 사용해야 하는 비밀번호가 포함된 시크릿의 이름입니다. 생략하면 기본값은<MongoDBSearch.metadata.name>-<username>-password입니다. 여기서<username>은(는)spec.source.username의 값입니다. 기본 사용자 이름search-sync-source의 경우 결과는<MongoDBSearch.metadata.name>-search-sync-source-password입니다.spec.source.passwordSecretRef.key유형: 문자열
비밀번호 값이 시크릿에 저장되는 키입니다. 생략하면 기본값은
password입니다.
x509 인증 설정
spec.source.x509유형: 객체
mongot동기화 소스 연결에 대한 x509 클라이언트 인증서 인증 구성합니다. 이 필드mongot로 설정하다 하면 사용자 이름 과 비밀번호 대신 x509 를 사용하여 MongoDB 에 인증합니다.이 필드는
spec.source.passwordSecretRef,spec.source.username및spec.source.tls와 상호 배타적입니다. x509 및 비밀번호 인증 모두 지정하는 경우 Kubernetes Operator는 구성을 거부합니다.spec.source.x509.clientCertificateSecretRef유형: 객체
MongoDB 동기화 소스에 인증하기 위한 x509 클라이언트 인증서와 키가 포함된 시크릿입니다. 시크릿에는 다음 키가 포함되어야 합니다.
tls.crt— 클라이언트 인증서tls.key— 개인 키
개인 키가 암호로 암호화된 경우 암호를 별도의 Secret에 저장하고
spec.source.x509.keyFilePasswordSecretRef으로 참조합니다.spec.source.x509을 설정하다 경우 이 필드 지정해야 합니다.spec.source.x509.keyFilePasswordSecretRef유형: 객체
spec.source.x509.clientCertificateSecretRef에 있는 비밀번호로 암호화된 개인 키를 복호화하는 비밀번호가 포함된 시크릿입니다. 시크릿에는keyFilePassword키 아래에 비밀번호가 포함되어 있어야 합니다. 개인 키가 암호화되지 않은 경우에는 이 필드를 생략합니다.
SCRAM TLS 클라이언트 인증서 설정
spec.source.tls유형: 객체
SCRAM(사용자 이름과 비밀번호)인증을 사용하는 경우
mongot동기화 소스 연결을 위한 TLS 클라이언트 인증서를 구성합니다. 이 필드를 설정하면mongot은 소스 MongoDB 배포서버와의 TLS 핸드쉐이크 동안 클라이언트 인증서를 제시합니다(상호 TLS 전송).mongot은 사용자 이름과 비밀번호로 계속 인증합니다.이 필드는 SCRAM 인증(
spec.source.passwordSecretRef)에서만 사용합니다. 이 필드는spec.source.x509과 상호 배타적입니다. 클라이언트 인증서 자체를 인증 자격 증명으로 사용하려면spec.source.x509를 사용하세요.spec.source.tls.clientCertificateSecretRef유형: 객체
소스 MongoDB 배포와의 TLS 핸드쉐이크 동안
mongot이 제시하는 TLS 클라이언트 인증서 및 키가 포함된 시크릿입니다. 시크릿에는 다음 키가 포함되어야 합니다.tls.crt— 클라이언트 인증서tls.key— 개인 키
spec.source.tls을 설정하다 경우 이 필드 지정해야 합니다.spec.source.tls.keyFilePasswordSecretRef유형: 객체
spec.source.tls.clientCertificateSecretRef에 있는 비밀번호로 암호화된 개인 키를 복호화하는 비밀번호가 포함된 시크릿입니다. 시크릿에는keyFilePassword키 아래에 비밀번호가 포함되어 있어야 합니다. 개인 키가 암호화되지 않은 경우에는 이 필드를 생략합니다.
외부 MongoDB 설정
spec.source.external유형: 객체
외부 데이터 소스를 설명하는 설정입니다. Kubernetes Operator를 사용하여 배포되지 않은 외부 MongoDB에 연결하려는 경우에만 이 설정을 지정합니다. 이 설정을 지정하면
spec.source.mongodbResourceRef보다 우선하게 됩니다.spec.source.external.hostAndPorts유형: 문자열 배열
외부 복제본 세트의 호스트 이름 및 포트 목록입니다. 이 필드는
spec.source.external.shardedCluster와 상호 배타적입니다. 복제본 세트 소스에는hostAndPorts을 사용하고 샤딩된 클러스터 소스에는shardedCluster를 사용합니다.spec.source.external.shardedCluster유형: 객체
외부 샤딩된 MongoDB 클러스터
mongot의 데이터 소스 로 선언합니다.mongos라우터 및 샤드별 복제본 세트 멤버에 대한 구성이 포함되어 있습니다.spec.source.external.shardedCluster.router.hosts유형: 문자열 배열
host:port형식의mongos라우터 인스턴스에 대한 엔드포인트 목록입니다. 모든mongot인스턴스가 이 라우터에 연결됩니다. 항목을 하나 이상 지정합니다.spec.source.external.shardedCluster.shards유형: 객체 배열
외부 MongoDB 클러스터의 모든 샤드 목록입니다. 각 항목은 하나의 샤드 복제본 세트를 설명합니다. Kubernetes 연산자는 각 샤드마다 하나의
mongotStatefulSet를 만듭니다. 샤드 항목을 하나 이상 지정합니다.spec.source.external.shardedCluster.shards[*].shardName유형: 문자열
샤드의 논리적 이름입니다. 이름은 모든 샤드에서 고유해야 하며 Kubernetes DNS 레이블 이름 규칙(RFC 1123)을 준수해야 합니다. 소문자 영숫자 및 하이픈(
-)으로 구성되며 영숫자로 시작하고 끝나야 합니다. 최대 길이는 63 자입니다. 마침표(.)와 밑줄(_)은 허용되지 않습니다.Kubernetes 연산자는
metadata.name, 클러스터 인덱스 및shardName를 결합하여 생성하는 Kubernetes 리소스의 이름을 만들고 모든 생성된 이름이 레이블의 Kubernetes DNS 제한 63 자 및 서브도메인 이름의 253 자 내에 맞는지 확인합니다. 이러한 제한에 맞도록shardName를 출분히 짧게 유지하세요.spec.source.external.shardedCluster.shards[*].hosts유형: 문자열 배열
host:port형식으로 이 샤드의mongod복제본 세트 노드의 엔드포인트 목록입니다. 항목을 하나 이상 지정합니다. 각 샤드에는 해당 샤드의 복제본 세트에서만 데이터를 소싱하는 고유한mongot인스턴스 그룹이 있습니다.spec.source.external.keyfileSecretRef유형: 객체
mongot이 외부 MongoDB 배포서버에 연결하는 데 사용하는mongod키 파일이 포함된 시크릿입니다.name필드는 필수 사항입니다.key필드는 선택 사항입니다.spec.source.external.tls.ca.name유형: 문자열
mongod노드에서 사용하는 TLS 인증서를 발급한 인증 기관의 신뢰할 수 있는 체인이 포함된 ConfigMap의 이름입니다. 이 ConfigMap의ca.crt키 아래에 인증서(또는 인증서 체인)를 지정해야 합니다.
클러스터 배포 설정
다음 설정에서는 필수 spec.clusters 배열의 각 엔트리를 설명합니다.
spec.clusters유형: 객체 배열
MongoDBSearch리소스에 대한 Kubernetes 클러스터 배포서버 구성입니다. 이 필드는 필수 필드이며 최소 1개 최대 50 개의 항목을 포함해야 합니다.replicas,loadBalancer,resourceRequirements,persistence,jvmFlags,statefulSet등 모든 크기 및 배치 설정은clusters항목 내에 있습니다. 이러한 설정에는 최상위 수준 대응하는 것이 없습니다.단일 클러스터 배포서버의 경우 하나의 항목을 지정하십시오.
name및index은(는) 생략할 수 있습니다.다중 클러스터 배포의 경우
mongot팝을 실행하는 각 Kubernetes 클러스터에 대해 하나의 엔트리를 지정합니다. 두 개 이상의 엔트리를 지정하면 다음 규칙이 적용됩니다.name모든 에트리에 필요하며 고유해야 합니다.index모든 에트리에 필요하며 고유해야 합니다.MongoDB 소스는 외부에 있어야 합니다(
spec.source.external). 다중 클러스터 배포서버는 연산자가 managed하는 MongoDB 소스를 지원하지 않습니다.모든 엔트리는 연산자가 managed 로드 밸런서(
loadBalancer.managed)를 구성해야 합니다. 다중 클러스터 배포서버는 관리되지 않는 로드 밸런서를 지원하지 않습니다.
Kubernetes 연산자는 CRD 유효성 검사 규칙과 조정 시점 유효성 검사를 통해 이러한 규칙을 시행합니다.
spec.clusters[].name유형: 문자열
이 엔트리의 Kubernetes 클러스터 이름(최대 길이: 253 자). 단일 클러스터 배포의 경우에는 이 필드를 생략할 수 있습니다.
spec.clusters에 항목이 하나 이상 포함되어 있는 경우name은 필수 사항이며, 항목 전체에서 고유해야 하고 리소스를 만든 후에는 변경할 수 없습니다.spec.clusters[].index유형: integer
이 엔트리의 Kubernetes 클러스터의 안정적인 정수 식별자입니다. 값은
0과999사이에 있어야 하며 엔트리 전체에 걸쳐 고유해야 합니다.spec.clusters에 하나 이상의 엔트리가 포함되어 있는 경우 모든 엔트리에index가 필요합니다.Kubernetes Operator는 이 클러스터 엔트리에 대해 만든 Kubernetes 리소스 이름에 인덱스를 포함합니다. 예를 들어 StatefulSets의 경우
{name}-search-{index}, Services의 경우{name}-search-{index}-svc, ConfigMaps의 경우{name}-search-{index}-config입니다. 샤딩된 클러스터 소스의 경우 이름에는 샤드 이름도 포함됩니다. 예를 들어{name}-search-{index}-{shardName}과{name}-search-{index}-{shardName}-svc입니다.경고
기존 엔트리의
index를 변경하지 마세요. 인덱스는 리소스 이름의 일부이므로 인덱스를 변경하면 Kubernetes 연산자가 새 인덱스 아래에 새 리소스를 만들고 이전 인덱스의 리소스는 오퍼한됩니다. 이는 프록시 서비스({name}-search-{index}[-{shardName}]-proxy-svc), Envoy 배포서버 및 ConfigMap({name}-search-lb-{index}), 로드 밸런서 인증서 시크릿 및 지표 전송기 리소스({name}-search-metrics-forwarder-{index})를 포함하여 모든 인덱스 포함 리소스에 적용됩니다.단일 클러스터 배포의 경우에는 이 필드를 생략할 수 있으며 기본값은
0입니다. 하지만 각 노드 Kubernetes 클러스터에서 고유한 Kubernetes 연산자 인스턴스가 실행되는 경우, 각 클러스터의MongoDBSearch리소스에서index을 고유한 값으로 명시적으로 설정합니다. 고유한 인덱스는 생성된 호스트 이름과 리소스 이름이 클러스터 간에서 충돌하지 않도록 합니다.
크기 및 저장
spec.clusters[].replicas유형: integer
이 Kubernetes 클러스터에 배포할
mongot팝 수입니다. 복제본 세트 소스의 경우 총mongot팝 수입니다. 샤딩된 클러스터 소스의 경우 샤드당mongot팝 수입니다.spec.clusters[].replicas가1보다 큰 경우mongod와 여러mongot인스턴스 간에 트래픽을 라우팅하도록spec.clusters[].loadBalancer도 구성해야 합니다.spec.clusters[].replicas을0로 설정하면 Kubernetes Operator가 이 클러스터의mongot배포서버를 오프라인으로 전환합니다. Kubernetes Operator는 StatefulSet를 0개의 팝으로 확장하고MongoDBSearch리소스 및 기타 Kubernetes 리소스를 제자리에 유지합니다.생략하는 경우 기본값은
1입니다.spec.clusters[].resourceRequirements유형: core/v1/ResourceRequirements
mongodb-search컨테이너가 요청하고 제한할 수 있는 CPU 및 메모리입니다.생략하면 Kubernetes Operator는 다음 기본값 을 사용합니다.
requests: cpu: 2 memory: 4Gi spec.clusters[].resourceRequirements.limits유형: 객체
mongodb-search컨테이너가 소비할 수 있는 리소스, CPU 및 메모리의 상한 한계. 기본적으로 설정된 제한이 없습니다.spec.clusters[].resourceRequirements.requests유형: 객체
mongodb-search컨테이너에 요청된 CPU 및 메모리 양입니다.cpu또는memory중 하나만 지정하면 Kubernetes Operator가 나머지 하나에 대한 기본값을 적용합니다.spec.clusters[].persistence.single유형: 객체
인덱스가 저장되는 MongoDB Search 및 벡터 검색 영구 저장 볼륨의 저장 구성. 각 검색 인스턴스(팝)는 고유한 독립 저장을 가집니다.
스칼라데이터 유형설명labelSelector문자열
storage문자열
마운트해야 하는 영구 볼륨 의 최소 크기입니다. 기본값은
16G입니다.storageClass문자열
영구 볼륨 클레임에 지정된 저장 유형입니다.
MongoDBSearch모든 데이터에 대해 하나의 볼륨을 사용하는single지속성 모드만 지원합니다. CRD 스키마에도spec.clusters[].persistence.multiple필드가 포함되어 있지만 Kubernetes 연산자는 이를 적용하지 않습니다.persistence를 생략하면 Kubernetes 연산자는spec.clusters[].persistence.single.storage를16G(으)로 설정핖니다.
부하 분산
spec.clusters[].loadBalancer유형: 객체
mongod(또는mongos)와mongot사이의 L7 부하 밸랑을 위한 구성입니다.spec.clusters[].replicas가1보다 큰 경우 이 필드는 필수 입니다.managed또는unmanaged중 정확히 하나만 설정하다 해야 합니다.spec.clusters의 모든 엔트리는 로드 밸런서 모드에 대해 동의해야 합니다. 모든 엔트리가loadBalancer.managed을 설정하거나, 모든 엔트리가loadBalancer.unmanaged를 설정하거나, 엔트리가loadBalancer을 설정하지 않아야 합니다. Kubernetes 연산자는 혼합 모드를 거부합니다. 다중 클러스터 배포서버는 managed 모드만 지원합니다.spec.clusters[].loadBalancer.managed유형: 객체
연산자 managed Envoy 로드 밸런서를 구성합니다. 이 필드는
spec.clusters[].loadBalancer.unmanaged와 상호 배타적입니다.샤딩된 클러스터 소스의 경우 managed 로드 밸런서를 사용하는 경우
spec.security.tls도 구성해야 합니다. Envoy 프록시는 TLS가 필요한 SNI를 사용하여 트래픽을 올바른 샤드로 라우팅합니다.spec.clusters[].loadBalancer.managed.externalHostname유형: 문자열
수신 요청에 대한 SNI 일치를 위해 Envoy 프록시가 예상하는 호스트 이름입니다. Envoy TLS 서버 인증서에는 SAN(주체 대체 이름) 필드에 이 호스트 이름이 포함되어야 합니다.
샤딩된 클러스터 소스의 경우 값에는 Kubernetes Operator가 샤드 별로 확장하는
{shardName}자리 표시자가 포함되어야 합니다. 각 샤드는 고유한 호스트 이름을 가지며 Envoy TLS 서버 인증서에는 SAN에 확장된 모든 샤드 호스트 이름이 포함되어야 합니다. 복제본 세트 소스의 경우에는{shardName}자리 표시자를 사용하지 마십시오.이 필드 MongoDB 외부에서 managed 경우( Kubernetes Operator가 배포하지 않음) 필수입니다. MongoDB 동일한 클러스터 에서 연산자 관리되는 경우, Kubernetes 연산자가 라우팅을 자동으로 구성하므로 이 필드 생략합니다.
다중 클러스터 배포서버에서는 각 클러스터 엔트리에 대해 별도의 호스트 이름이 사용됩니다. 하지만 Kubernetes 연산자는 예를 들어 가용 구역에 걸친 페일오버 프록시가 여러 클러스터의 Envoy 프록시를 전면에 배치하는 경우와 같이 클러스터 간에 하나의 호스트 이름 공유를 허용합니다.
spec.clusters[].loadBalancer.managed.routerHostname유형: 문자열
host:port형식으로 managed Envoy 로드 밸런서를 통해 이 클러스터의mongot인스턴스에 도달하기 위해mongos라우터가 사용하는 엔드포인트입니다. Kubernetes Operator는 클러스터 수준 라우팅 체인에서 SNI 일치에 호스트 이름을 사용하므로 Envoy TLS 서버 인증서에는 SAN에 이 호스트 이름이 포함되어야 합니다.외부 샤딩된 MongoDB 소스(
spec.source.external.shardedCluster)가 있는 managed 로드 밸런서를 사용하는 경우 이 필드는 필수입니다. Kubernetes Operator는 복제본 세트 소스와 연산자 managed MongoDB에 대해 이 필드를 무시합니다.externalHostname와 달리 Kubernetes 연산자는 이 값을 그대로 사용하므로 값에{shardName}자리 표시자가 포함되어 있으면 안 됩니다. 이 엔드포인트는mongos의 샤드 아그노스틱 입력 점입니다.spec.clusters[].loadBalancer.managed.replicas유형: integer
이 Kubernetes 클러스터에 배포할 Envoy 프록시 팝의 수. 값은
1이상이어야 합니다. 생략하면 기본값은1입니다.spec.clusters[].loadBalancer.managed.resourceRequirements유형: core/v1/ResourceRequirements
Envoy 컨테이너 요청 하고 제한할 수 있는 CPU 및 메모리입니다. 이 설정을 지정하면 Kubernetes Operator가 기본값을 완전히 대체합니다.
생략하면 Kubernetes Operator는 다음 기본값 을 사용합니다.
requests: cpu: 100m memory: 128Mi limits: cpu: 500m memory: 512Mi spec.clusters[].loadBalancer.managed.deployment유형: 객체
Kubernetes 연산자가 만든 Envoy 배포에 병합되는 재정의입니다. 이 객체에는
labels및annotations가 있는metadata필드와 apps/v1/DeploymentSpec 객체가 있는spec필드가 포함되어 있습니다.spec.clusters[].loadBalancer.managed.retryPolicy유형: 객체
Envoy 프록시가 개별 gRPC 스트림에 적용하는 재시도 동작은 업스트림
mongot인스턴스에 적용됩니다. Envoy 프록시는 실패한 시도와 다른mongot호스트로 각 재시도 시도를 보냅니다.이 필드를 생략하면 Envoy 프록시는 기본값으로 다시 시도합니다. 시도당 타임아웃이
60s인 시도를2번 시도합니다.spec.clusters[].loadBalancer.managed.retryPolicy.numRetries유형: integer
요청당 최대 재시도 횟수입니다. 값은
1이상이어야 합니다. 생략하면 각 요청에 대해 총 세 번의 시도가 허용되는2로 기본값이 설정됩니다.spec.clusters[].loadBalancer.managed.retryPolicy.perTryTimeout유형: 문자열
원래 요청을 포함하여 각 개별 시도에 대한 타임아웃은 기간 string(예:
"30s")으로 표현됩니다. 생략하면 기본값은"60s"입니다.spec.clusters[].loadBalancer.managed.minMongotReadyReplicas유형: integer
Envoy 프록시가 트래픽을 보내기 전에
mongot그룹(예: 하나의 샤드의mongot인스턴스) 이 가지고 있어야 하는 최소 수의 준비된mongot복제본입니다. 그룹이 이 임계값 미만인 동안 Envoy 프록시는 해당 그룹에 대한 트래픽을 정상적인mongot그룹에 전송하고routed_from_another_shard헤더로 요청을 표시합니다. 이러한 요청은 오류 대신 빈 결과를 반환합니다.값은
1이상이어야 합니다. 생략하면 기본값은1입니다.spec.clusters[].loadBalancer.unmanaged유형: 객체
사용자가 제공하는(Bring Your Own) L7 로드 밸런서를 구성합니다. 이 필드는
spec.clusters[].loadBalancer.managed과 상호 배타적입니다. 다중 클러스터 배포서버는 관리되지 않는 로드 밸런서를 지원하지 않습니다.spec.clusters[].loadBalancer.unmanaged.endpoint유형: 문자열
host:port형식으로 된 BYO 로드 밸런서의 엔드포인트.spec.clusters[].loadBalancer.unmanaged을(를) 구성하는 경우 이 필드를 지정해야 합니다.Kubernetes Operator가 MongoDB 배포를 관리하는 경우(
spec.source.mongodbResourceRef)에는 Kubernetes Operator가 이 값을mongod구성에mongotHost및searchIndexManagementHostAndPort로 쓰기 합니다.외부 샤딩된 클러스터 소스의 경우 값에는 Kubernetes Operator가 샤드 별로 확장하는
{shardName}자리 표시자가 포함되어야 하며, 자리 표시자만 포함되어서는 안 됩니다. 외부 복제본 세트 소스의 경우 값에는{shardName}자리 표시자가 포함되어서는 안 됩니다.
샤드별 재정의
spec.clusters[].shardOverrides유형: 객체 배열
클러스터 기본값과 다르게 이 클러스터 엔트리 내의 특정 크기의 샤드를 재정의합니다.
이 필드는 외부 샤딩된 클러스터 소스(
spec.source.external.shardedCluster)에서만 사용할 수 있습니다. 참조하는 각 샤드 이름은spec.source.external.shardedCluster.shards[*].shardName에 존재해야 하며, 클러스터 엔트리당 각 샤드를 최대 한 번만 재정의할 수 있습니다.각 오버라이드에는 필수
shardNames목록(최소 1개 입력) 및 선택 사항인replicas,resourceRequirements,persistence,jvmFlags,statefulSet필드가 포함되어 있습니다. 오버라이드에replicas,resourceRequirements,persistence또는jvmFlags를 설정하면 명명된 샤드의 클러스터 값이 대체됩니다.jvmFlags는 빈 목록으로 설정한 경우에만 클러스터 값을 대체합니다. Kubernetes Operator는statefulSet를 클러스터 값에 딥 병합합니다. 설정하지 않은 필드는 클러스터 값을 상속합니다.
동기화 소스 선택
spec.clusters[].syncSourceSelector.matchTagSets유형: 객체 배열
복제본 세트 태그를 사용하여 동기화 소스
mongod노드를 선택하는 복제본 세트 태그 세트의 정렬된 목록입니다. Kubernetes Operator는 목록을mongot구성에 전달합니다.mongot는 첫 번째 일치하는 태그 세트가 선택한 노드에서 동기화하고 세컨더리 노드를 선호합니다.각 항목은 태그 이름을 태그 값에 매핑한 것입니다. 빈 문서(
{})는 모든 노드와 일치하므로 이전 태그 세트와 일치하는 것이 없는 경우 일치 어떤 것이든 폴백으로 후미에{}항목을 추가할 수 있습니다. 최대 50 개의 항목을 지정할 수 있습니다.
JVM Flags
spec.clusters[].jvmFlags유형: 문자열 배열
mongot프로세스에 전달되는 JVM 플래그입니다. 각 플래그는-X,-XX:또는-D으로 시작해야 하며, 공백을 포함할 수 없습니다. 수자 및 영문 문자와.,_,+,:,-,=문자만 포함할 수 있습니다. Kubernetes Operator는 이러한 규칙에 맞지 않는 플래그를 거부합니다.이 필드에
-Xms또는-Xmx을 지정하지 않으면 Kubernetes Operator는 둘 모두spec.clusters[].resourceRequirements.requests.memory의 절반으로 설정하여 힙 크기를 자동으로 계산합니다. 리소스 요구 사항을 지정하지 않으면 Kubernetes Operator는 기본값으로 4Gi 메모리 요청을 사용하여 약-Xmx2048m -Xms2048m를 생성합니다. Kubernetes Operator는 연산자가 계산한 플래그 뒤에 제공한 플래그를 항상 추가합니다.
StatefulSet 재정의
spec.clusters[].statefulSet유형: 객체
Kubernetes Operator가
mongot파드 배포를 위해 생성하는 StatefulSet에 대한 재정의입니다. 이 객체는labels와annotations을 포함하는metadata필드와 apps/v1/StatefulSetSpec 객체를 포함하는spec필드를 포함합니다. Kubernetes Operator는 항상 재정의를 마지막에 적용하므로 Kubernetes Operator가 계산하는 설정을 재정의합니다.참고
spec.clusters[].statefulSet을(를) 사용하여 리소스 요구 사항 또는 지속성 설정을 설정하다 하지 마세요. 대신spec.clusters[].resourceRequirements및spec.clusters[].persistence필드를 각각 사용합니다.
고급 mongot 설정
spec.clusters[].advancedMongotConfigs유형: 객체
이 클러스터 항목에 대한 고급
mongot설정입니다. Kubernetes Operator는 값을 읽거나 수정하지 않고mongot설정 파일의advancedConfigs키 아래에 그대로 렌더링합니다. 이 필드는MongoDBSearch리소스가 최상위 필드로 노출하지 않는mongot설정에만 사용합니다.
보안 설정
spec.security유형: 객체
mongot수신 서버 에 대한 보안 설정입니다.spec.security.tls유형: 객체
에
mongot대한 TLS 설정입니다. 생략하면mongot는 들어오는 연결에 TLS를 사용하지 않습니다.샤딩된 클러스터 소스와 함께 managed 로드 밸런서를 사용하는 경우 이 필드는 필수입니다. Envoy proxy 는 SNI 를 사용하여 올바른 샤드로 트래픽을 라우팅합니다. 이는 TLS ClientHello 에 따라 달라집니다. 이 구성에서
spec.security.tls을(를) 생략하면 Kubernetes 연산자가 조정을 실패합니다.spec.security.tls.certificateKeySecretRef.name유형: 문자열
버전 1.8.0부터 더 이상 사용되지 않습니다. : 대신
spec.security.tls.certsSecretPrefix을(를) 사용하세요.개인 키(
tls.key)와 인증서(tls.crt)를 포함하는 동일한 네임스페이스의 TLS 시크릿 이름입니다. Kubernetes Operator는 이전 버전과의 호환성을 위해 복제본 세트 배포에 대해 이 필드를 계속 지원합니다. 샤딩된 클러스터 배포의 경우 Kubernetes Operator는 단일 시크릿 참조가 샤드별 인증서를 포함할 수 없으므로 유효성 검사 중에 이 필드를 거부합니다.spec.security.tls.certsSecretPrefix유형: 문자열
Kubernetes 연산자가 명명 규칙에 따라 TLS 시크릿 이름을 유도하는 접두사입니다. 이 필드를 설정하면 Kubernetes 연산자가 다음 패턴에 따라 시크릿을 찾습니다.
구성 요소시크릿 이름 패턴복제본 세트의
mongot서버 인증서{certsSecretPrefix}-{name}-search-cert샤딩된
mongot인증서(클러스터 및 샤드 당){certsSecretPrefix}-{name}-search-{clusterIndex}-{shardName}-certmanaged 로드 밸런서 서버 인증서(클러스별, 모든 토폴로지)
{certsSecretPrefix}-{name}-search-lb-{clusterIndex}-certmanaged 로드 밸런서 클라이언트 인증서
{certsSecretPrefix}-{name}-search-lb-{clusterIndex}-client-certKubernetes Operator는 모든 토폴로지에 대해 클러스터당 하나의 managed 로드 밸런서 서버 인증서를 사용합니다. 샤딩된 클러스터의 경우 이 인증서의 SAN에는
externalHostname의 모든 확장된 샤드 호스트명과routerHostname이 포함되어야 합니다.Kubernetes 연산자는 다음 순서로
mongot서버 인증서 시크릿 이름을 해결합니다.spec.security.tls.certificateKeySecretRef.name을 설정하면 Kubernetes 연산자가 해당 이름을 사용합니다.certsSecretPrefix을 설정하면 Kubernetes Operator가 위 표의 명명 패턴을 사용합니다.두 필드 모두 설정하지 않으면 Kubernetes 연산자는 복제본 세트 배포에 대해 기본 이름
{name}-search-cert을 사용하거나 샤딩된 배포에 대해 샤드당 기본 패턴{name}-search-{clusterIndex}-{shardName}-cert을 사용합니다.
certsSecretPrefix을 설정하지 않으면 managed 로드 밸런서 인증서에도 기본값 이름이 사용됩니다. Kubernetes 연산자는 서버 인증서에{name}-search-lb-{clusterIndex}-cert을 마운트하고 클라이언트 인증서에{name}-search-lb-{clusterIndex}-client-cert를 마운트합니다.spec.security.tls.keyFilePasswordSecretRef유형: 객체
TLS 인증서 시크릿에서 암호로 암호화된 서버 개인 키를 복호화하는 비밀번호가 포함된 시크릿입니다. 시크릿에는
keyFilePassword키 아래에 비밀번호가 포함되어 있어야 합니다. 서버 개인 키가 암호화되지 않은 경우에는 이 필드를 생략합니다.
로깅 설정
spec.logLevel유형: 문자열
mongot로그의 상세도입니다. 값은 다음 중 하나일 수 있습니다.TRACEDEBUGINFOWARNERROR
생략하는 경우 기본값은
INFO입니다.
지표 설정
spec.observability.prometheus유형: 객체
mongot에 있는 Prometheus 지표 엔드포인트에 대한 구성입니다. 이 필드를 생략하면 Kubernetes 연산자가 기본 포트9946에서 지표 엔드포인트를 활성화합니다.spec.observability.prometheus.mode유형: 문자열
mongot에서 Prometheus 지표 엔드포인트를 활성화하거나 비활성화합니다. 값은enabled또는disabled일 수 있습니다. 생략하면 기본값은enabled입니다.spec.observability.prometheus.port유형: integer
Prometheus 지표 엔드포인트를 활성화 할 포트입니다. 기본값 으로 Prometheus 지표 엔드포인트는 포트
9946에서 활성화됩니다.spec.observability.metricsForwarder유형: 객체
Kubernetes 연산자가
mongotPrometheus 지표를 스크래핑하고 MongoDB Ops Manager로 전송하기 위해 만들어내는 배포서버인 지표 전송기의 구성입니다.spec.observability.metricsForwarder.mode유형: 문자열
Kubernetes 연산자가 지표 전송기를 만들지 여부. 값은 다음 중 하나일 수 있습니다.
auto— Kubernetes Operator는 연산자가 관리하는MongoDB(Ops Manager 지원) 소스와spec.observability.metricsForwarder.opsManager을 설정하는 경우에만 외부 소스에 대한 전달자를 만듭니다.MongoDBCommunity소스의 경우 Kubernetes Operator는 전달자를 만들지 않습니다.enabled— Kubernetes Operator는 항상 포워더를 만듭니다. 소스가MongoDBCommunity리소스인 경우 Kubernetes Operator는 오류를 보고합니다. 그 이유는MongoDBCommunity소스에서는 포워더가 지원되지 않기 때문입니다.disabled— Kubernetes 연산자는 포워더를 생성하지 않습니다.
생략하는 경우 기본값은
auto입니다.enabled및auto모드에는 Prometheus 엔드포인트(spec.observability.prometheus)가 활성화되어 있어야 합니다. 엔드포인트를 비활성화하면 Kubernetes Operator가Invalid지표 전송자 상태를 보고합니다.spec.observability.metricsForwarder.resourceRequirements유형: core/v1/ResourceRequirements
지표 전송자 컨테이너가 요청하고 제한할 수 있는 CPU 및 메모리입니다. 생략하면 Kubernetes 연산자는
cpu: 100m과memory: 128Mi의 요청과cpu: 250m와memory: 256Mi의 제한을 사용합니다.spec.observability.metricsForwarder.deployment유형: 객체
Kubernetes Operator가 연산자가 만든 지표 전송자 배포서버에 병합하는 오버라이드입니다. 이 객체에는
labels및annotations가 있는metadata필드와 apps/v1/DeploymentSpec 객체가 있는spec필드가 포함되어 있습니다.spec.observability.metricsForwarder.opsManager유형: 객체
지표 전송기가 지표를 전송하는 MongoDB Ops Manager 프로젝트 및 자격 증명. 생략하면 Kubernetes Operator는 소스 MongoDB 리소스의 연결 구성에서 프로젝트 및 자격 증명을 가져오게 됩니다. 소스 MongoDB 리소스가 존재하지 않는 외부 MongoDB 소스에 대해 이 필드를 설정하세요.
이 필드를 설정하려면
agentCredentials.name(Ops Manager 에이전트 API 키가 포함된 시크릿)와projectConfigMapRef.name(Ops Manager 프로젝트 구성이 포함된 ConfigMap)을 모두 설정해야 합니다.
자동 임베딩 설정
중요
자동 임베딩은 MongoDB Community Edition 배포서버 대해서만 미리 보기 기능 으로 사용할 수 있습니다. 기능 및 해당 설명서는 미리 보기 기간에 언제든지 변경될 수 있습니다. 자세히 학습 미리 보기 기능을 참조하세요.
spec.autoEmbedding유형: 객체
컬렉션 의 텍스트 데이터에 대한 자동 임베딩 을 위한 구성입니다.
spec.autoEmbedding.embeddingModelAPIKeySecret.name유형: 문자열
mongot가 인덱스 및 쿼리 시점에 임베딩을 생성하는 데 사용해야 하는 임베딩 모델 API 키가 포함된 시크릿의 이름입니다. 시크릿에는indexing-key키 아래에 인덱스 시점 키가 포함되어 있어야 하며query-key키 아래에 쿼리 시점 키가 포함되어 있어야 합니다.spec.autoEmbedding.providerEndpoint이 연산자가 관리하는 자가 호스팅된 Voyage AI 임베딩 서비스를 가리키는 경우에만embeddingModelAPIKeySecret을 생략할 수 있습니다. 그렇지 않으면 Kubernetes Operator에서 필요합니다.spec.autoEmbedding.providerEndpoint유형: 문자열
임베딩 생성을 위한 임베딩 모델 엔드포인트 URL입니다.
기능 플래그 설정
spec.featureFlags유형: 객체
mongot의 기능 플래그입니다. 플래그를true(으)로 설정하면 Kubernetes Operator가mongot구성에 렌더링합니다.featureFlags객체 또는 개별 플래그를 생략하면 해당 플래그에 스키마 기본값이 적용됩니다(enableOverloadRetrySignal의 경우true).spec.featureFlags.enableOverloadRetrySignal유형: 부울
mongot오버로드 재시도 신호를 활성화합니다. 이 플래그를 활성화하면mongot은 gRPCRESOURCE_EXHAUSTED응답을 통해 연산자 managed Envoy 로드 밸런서와 같은 업스트림 프록시에 로드 셰딩을 신호합니다. 그러면 프록시는 다른mongot인스턴스에 대한 요청을 다시 시도합니다.생략하는 경우 기본값은
true입니다.
기타 설정
spec.version유형: 문자열
mongodb-searchDocker 이미지의 버전. 생략하면 Kubernetes 연산자는 포함된 기본값 MongoDB Search 버전을 사용합니다. Kubernetes Operator를 업그레이드할 때 자동 업그레이드를 방지하기 위해 버전을 명시적으로 설정할 수 있습니다.
상태 필드
Kubernetes Operator는 MongoDBSearch 리소스의 status 필드 아래에 상태 정보를 보고합니다.
status.phase유형: 문자열
MongoDBSearch리소스의 현재 단계입니다. 가능한 값은Pending,Running,Failed,Disabled,Updated및Unsupported입니다.status.message유형: 문자열
현재 상태에 대한 자세한 사항이 포함된 사람이 읽을 수 있는 메시지입니다.
status.lastTransition유형: 문자열
status.phase의 마지막 전환 시간입니다.status.observedGeneration유형: integer
Kubernetes 연산자가 마지막으로 처리한
MongoDBSearch리소스의 생성.status.warnings유형: 문자열 배열
Kubernetes 연산자가 리소스에 대해 보고하는 경고.
status.version유형: 문자열
Kubernetes 연산자가 조정한 MongoDB Search 버전(
mongot)입니다.status.resourcesNotReady유형: 객체 배열
아직 준비되지 않은 종속된 Kubernetes 리소스입니다. 각 항목에는 리소스의
kind과name, 선택 사항인message및errors목록이 표시됩니다.status.pvc유형: 객체 배열
mongotStatefulSet의 영구 볼륨 요청의 상태. 각 항목에는 요청이 속한phase과statefulsetName가 보고됩니다.status.loadBalancer유형: 객체
연산자 managed 로드 밸런서(Envoy)의 상태입니다. 이 필드는
spec.clusters[].loadBalancer.managed을 설정한 경우에만 표시됩니다. 다중 클러스터 배포서버의 경우 Kubernetes 연산자는 모든 클러스터의 Envoy 배포서버중 최악 단계를 보고합니다.status.loadBalancer.phase유형: 문자열
managed 로드 밸런서의 현재 단계입니다. 사용 가능한 값은
Pending,Running,Failed등입니다. 이 필드는LOADBALANCER열 아래의kubectl get출력에서 볼 수 있습니다.status.loadBalancer.message유형: 문자열
managed 로드 밸런서 상태에 대한 세부 정보가 포함된 사람이 읽을 수 있는 메시지입니다.
status.metricsForwarder유형: 객체
지표 전송기의 상태입니다.
status.metricsForwarder.phase유형: 문자열
지표 전송기의 현재 단계. 사용 가능한 값은
Pending,Running,Failed등입니다.spec.observability.metricsForwarder.mode를disabled로 설정하면 단계에Disabled이 보고됩니다. 이 필드는METRICSFORWARDER열 아래의kubectl get출력에서 볼 수 있습니다.status.metricsForwarder.message유형: 문자열
지표 전송자 상태에 대한 세부 정보가 포함된 사람이 읽을 수 있는 메시지.