Kubernetes Operator용 MongoDB 컨트롤러를 사용하여 MongoDB 8.2 이상과 함께 MongoDB Search 및 Vector Search를 배포 할 수 있습니다.
리소스 사양 예시
다음 예시 MongoDB Search 및 Vector Search 배포서버 위한 spec 객체 내부의 설정을 보여줍니다. 이러한 설정에 대해 자세히 학습하려면 필수 설정 및 선택적 설정을 참조하세요.
참고
이 예시 작동하는 구성이 아닙니다. 여기에는 참조용 샘플 값으로 채워진 사용 가능한 모든 필드가 포함되어 있습니다. 일부 필드는 상호 배타적입니다( 예시: source.mongodbResourceRef 및 source.external). 유효한 조합은 아래 필드 설명을 참조하세요.
예시
1 spec: 2 source: 3 mongodbResourceRef: 4 name: mdb 5 external: 6 hostAndPorts: 7 - mdb-rs-external-0.example.com:27017 8 - mdb-rs-external-1.example.com:27017 9 - mdb-rs-external-2.example.com:27017 10 shardedCluster: 11 router: 12 hosts: 13 - mongos1.example.com:27017 14 - mongos2.example.com:27017 15 shards: 16 - shardName: shard-0 17 hosts: 18 - shard0-node1.example.com:27018 19 - shard0-node2.example.com:27018 20 - shardName: shard-1 21 hosts: 22 - shard1-node1.example.com:27018 23 - shard1-node2.example.com:27018 24 tls: 25 ca: 26 name: mdbc-rs-ca 27 username: search-sync-source 28 passwordSecretRef: 29 name: mdbc-rs-search-sync-source-password 30 key: password 31 # x509 authentication (mutually exclusive with 32 # username/passwordSecretRef) 33 x509: 34 clientCertificateSecretRef: 35 name: mongot-x509-client-cert 36 replicas: 2 37 loadBalancer: 38 # Option 1: Operator-managed Envoy load balancer 39 managed: 40 externalHostname: "search.apps.example.com" 41 resourceRequirements: 42 requests: 43 cpu: "100m" 44 memory: 128Mi 45 limits: 46 cpu: "500m" 47 memory: 512Mi 48 deployment: 49 spec: 50 template: 51 spec: 52 nodeSelector: 53 kubernetes.io/os: linux 54 # Option 2: User-provided (BYO) load balancer 55 # (mutually exclusive with managed) 56 unmanaged: 57 endpoint: "search-lb.corp.example.com:443" 58 security: 59 tls: 60 certificateKeySecretRef: 61 name: mdbs-tls-secret 62 certsSecretPrefix: my-prefix 63 resourceRequirements: 64 limits: 65 cpu: "3" 66 memory: 5Gi 67 requests: 68 cpu: "2" 69 memory: 3Gi 70 persistence: 71 single: 72 storage: 16Gi 73 storageClass: standard 74 version: "0.64.0" 75 statefulSet: 76 spec: 77 template: 78 spec: 79 nodeSelector: 80 kubernetes.io/os: linux 81 jvmFlags: 82 - -Xms2g 83 - -Xmx2g 84 autoEmbedding: 85 embeddingModelAPIKeySecret: 86 name: embedding-model-api-query-key 87 providerEndpoint: https://ai.mongodb.com/v1/embeddings 88 logLevel: INFO 89 prometheus: {}
필수 설정
이 섹션에서는 MongoDB 검색하다 및 벡터 검색 리소스 배포하는 데 필요한 설정에 대해 설명합니다. 사용자 지정 리소스 정의(CRD)에서 필수 설정만 정의하는 경우, Kubernetes Operator용 MongoDB 컨트롤러는 모든 선택 사항 설정에 기본값을 사용하여 MongoDBSearch를 구성합니다.
apiVersion유형: 문자열
MongoDB Kubernetes 리소스 스키마 의 버전입니다. 값을
mongodb.com/v1(으)로 설정합니다.
kind유형: 문자열
생성할 MongoDB Kubernetes 리소스 의 종류입니다. 이를 MongoDBSearch로 설정합니다.
metadata.namespace유형: 문자열
MongoDBSearch 리소스 생성해야 하는 네임스페이스입니다. MongoDBSearch 및
MongoDB또는MongoDBCommunity리소스의 자동 구성을 활용하려면MongoDB또는MongoDBCommunity리소스 와 동일한 네임스페이스 에 MongoDBSearch 리소스 생성해야 합니다.
metadata.name유형: 문자열
MongoDBSearch 리소스 의 고유 식별자입니다. 리소스 이름은 최대 44 자까지 가능합니다.
선택적 설정
이 섹션에서는 MongoDB 검색 및 벡터 검색 리소스에 대한 선택 사항 설정에 대해 설명합니다. CRD에서 선택 사항 설정을 생략하고 필수 설정만 정의하는 경우, Kubernetes 연산자용 MongoDB 컨트롤러는 모든 선택 사항 설정에 기본값을 사용하여 MongoDBSearch를 구성합니다.
데이터 소스 구성을 위한 설정
spec.source유형: 객체
mongot에 대한 MongoDB 소스를 설명하는 설정입니다. 소스는 복제본 세트 또는 샤딩된 클러스터 일 수 있습니다. 이 설정은 다음과 같은 경우에 필요합니다.MongoDB은(는) 외부입니다.MongoDBMongoDBSearch와 이름이 다릅니다.
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시크릿에서mongot사용자의 비밀번호 시크릿을 찾습니다.
spec.source.mongodbResourceRef.name유형: 문자열
이 MongoDB Search 및 벡터 검색 리소스 와 연결할
MongoDB또는MongoDBCommunity리소스 의 이름입니다. Kubernetes Operator는 복제본 세트와 샤딩된 클러스터를 모두 지원합니다. 동일한MongoDB또는MongoDBCommunity리소스 참조하는 MongoDBSearch 리소스 두 개 이상 가질 수 없습니다. 다른 이름을 지정하는 경우, MongoDB 검색 및 벡터 검색을 활성화 하려는MongoDB또는MongoDBCommunity를 명시적으로 점 야 합니다.If you reference a 클러스터
MongoDB리소스, the Kubernetes Operator auto-discovers the 샤드 토폴로지 (샤드 이름, 복제본 세트,mongosrouters) and creates per-샤드mongotStatefulSets automatically. 추가 외부 구성을 수행할 필요가 없습니다.MongoDB또는MongoDBCommunity리소스 동일한 Kubernetes 클러스터 에 배포되고 MongoDBSearch 리소스 와 동일한 네임스페이스 에 있는 경우에만 이 필드 사용합니다. 이 필드 설정하다 하면 Kubernetes Operator가 자동으로 다음을 수행합니다.데이터베이스 에 대한 적절한 연결 문자열을 설정합니다.
검색 기능을 활성화 데 필요한 매개 변수를 설정하여 MongoDB database 배포를 재구성하고 검색 포드의 주소를 구성합니다.
데이터베이스 Kubernetes 외부에 배포되었거나 다른 네임스페이스 에 있는 경우
spec.external를 사용하여 데이터베이스 에 대한 연결을 구성합니다. 이 필드spec.external와 상호 배타적입니다.생략하면 Kubernetes Operator는 이 MongoDBSearch 리소스 와 이름이 같은
MongoDB또는MongoDBCommunity리소스 찾습니다.
mongot 사용자 구성을 위한 설정
spec.source.username유형: 문자열
mongod(으)로mongot을(를) 인증하는 데 사용할 사용자 이름입니다. 지정된 사용자는searchCoordinator역할 있어야 합니다. 생략하면 Kubernetes 연산자는 사용자 이름search-sync-source로 가정합니다.
spec.source.passwordSecretRef.name유형: 문자열
mongot이(가)mongod(으)로 인증하는 데 사용해야 하는 비밀번호가 포함된 시크릿의 이름입니다. 생략하면 기본값은<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와 상호 배타적입니다. x509 및 비밀번호 인증 모두 지정하는 경우 Kubernetes Operator는 구성을 거부합니다.
spec.source.x509.clientCertificateSecretRef유형: 객체
MongoDB 동기화 소스에 인증하기 위한 x509 클라이언트 인증서와 키가 포함된 시크릿입니다. 시크릿에는 다음 키가 포함되어야 합니다.
tls.crt— 클라이언트 인증서(필수)tls.key— 개인 키(필수)tls.keyFilePassword— 개인 키의 비밀번호(선택 사항)
spec.source.x509을 설정하다 경우 이 필드 지정해야 합니다.예시
spec: source: x509: clientCertificateSecretRef: name: mongot-x509-client-cert
외부 MongoDB 에 연결하기 위한 설정
다음 설정은 외부 MongoDB 배포서버 에 대한 연결을 구성할 때만 필요합니다.
spec.source.external유형: 객체
외부 데이터 소스 설명하는 설정입니다. 이 객체 외부 MongoDB 에 연결하기 위한 MongoDB 검색 및 벡터 검색 리소스 의 설정을 설명합니다. 이러한 설정은 Kubernetes Operator를 사용하여 배포되지 않은 외부 MongoDB 에 연결하려는 경우에만 지정해야 합니다. 지정된 경우 이러한 설정이
spec.source.mongodbResourceRef.name에 대한 설정을 재정의합니다. Kubernetes Operator를 사용하여 동일한 클러스터 에 MongoDB 설치한 경우 이러한 설정은 선택 사항입니다.
외부 복제본 세트에 연결하기 위한 설정
spec.source.external.hostAndPorts유형: 문자열 배열
외부 복제본 세트 의 호스트 이름 및 포트 목록입니다. MongoDB 복제본 세트 에 대한 호스팅하다 시드 목록 입니다.
mongot는 복제본 세트 모드 에서 데이터베이스 에 연결하고db.hello()을 사용하여 다른 모든 노드의 목록을 가져옵니다.이 필드
spec.source.external.shardedCluster와 상호 배타적입니다. 복제본 세트 소스에는hostAndPorts를 사용하고 샤딩된 클러스터 소스에는shardedCluster를 사용합니다.예시
hostAndPorts: - mdbc-rs-0.my-external-domain.example.com:27017 - mdbc-rs-1.my-external-domain.example.com:27017 - mdbc-rs-2.my-external-domain.example.com:27017
spec.source.external.tls유형: 객체
외부 MongoDB database 에 연결할 때
mongot사용해야 하는 TLS 설정입니다.
spec.source.external.tls.ca.name유형: 문자열
mongod노드에서 사용하는 TLS 인증서를 발급한 인증 기관의 신뢰할 수 있는 체인이 포함된 시크릿의 이름입니다.예시
spec: source: external: tls: ca: name: trusted-ca 이 시크릿의
ca.crt키 아래에 인증서(또는 인증서 체인)를 지정해야 합니다.예시
name: Secret apiVersion: v1 metadata: name: trusted-ca data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDBTCCAe2gAwIBAgIIH3EOUAGAsx0wDQYJKoZIhvcNAQELBQAwFTETMBEGA1UE [...] U/4rN8Ias/FONYFRtGfs9uXHmo2MP04BF+9ED2dlbNDUbat+6XCozLJj98nI4VEi qaV3JrVFHTgN -----END CERTIFICATE-----
외부 샤드 클러스터에 연결하기 위한 설정
다음 설정은 외부 MongoDB 샤딩된 클러스터 에 대한 연결을 구성할 때만 필요합니다. 기존 spec.source.external 설정을 확장합니다.
참고
spec.source.external.hostAndPorts ( 복제본 세트의 경우)와 spec.source.external.shardedCluster 은 상호 배타적입니다. 그 중 하나만 지정합니다.
spec.source.external.shardedCluster유형: 객체
외부 샤딩된 MongoDB 클러스터
mongot의 데이터 소스 로 선언합니다.mongos라우터 및 샤드별 복제본 세트 멤버에 대한 구성이 포함되어 있습니다.MongoDB 샤딩된 클러스터 Kubernetes 외부에 배포되고 Kubernetes Operator가 managed 하지 않는 경우에만 이 옵션을 사용합니다.
MongoDBCRD를 사용하여 배포된 연산자 managed 샤딩된 클러스터의 경우spec.source.mongodbResourceRef를 대신 사용합니다. Kubernetes Operator는 샤드 토폴로지 자동 검색합니다.예시
spec: source: external: shardedCluster: router: hosts: - "mongos1.external:27017" - "mongos2.external:27017" shards: - shardName: "shard-0" hosts: - "shard0-node1.external:27018" - "shard0-node2.external:27018" - shardName: "shard-1" hosts: - "shard1-node1.external:27018" - "shard1-node2.external:27018"
spec.source.external.shardedCluster.router유형: 객체
외부 샤딩된 클러스터 의
mongos(라우터) 인스턴스에 대한 구성입니다.
spec.source.external.shardedCluster.router.hosts유형: 문자열 배열
host:port형식의mongos라우터 인스턴스에 대한 엔드포인트 목록입니다. 모든mongot인스턴스가 이 라우터에 연결됩니다. 항목을 하나 이상 지정합니다.예시
router: hosts: - "mongos1.external:27017" - "mongos2.external:27017"
spec.source.external.shardedCluster.shards유형: 객체 배열
외부 MongoDB cluster 에 있는 모든 샤드의 목록입니다. 각 항목은 하나의 샤드의 복제본 세트 설명합니다. Kubernetes Operator는 각 샤드 에 대해 하나의
mongotStatefulSet를 생성하며, 각 StatefulSet에는spec.replicas에 지정된 수의 파드가 포함됩니다. 샤드 항목을 하나 이상 지정합니다.
spec.source.external.shardedCluster.shards[*].shardName유형: 문자열
샤드 의 논리적 이름입니다. Kubernetes Operator는 이 이름을 Kubernetes 리소스 명명(StatefulSets, Services, Secrets)에 사용합니다. 이 값은 MongoDB 샤드 이름과 다를 수 있습니다.
명명 제약 조건:
모든 샤드에서 고유해야 합니다.
소문자 영숫자, 하이픈(
-), 마침표(.)를 허용하고 이름이 알파벳 문자로 시작하고 다음으로 끝나도록 요구하는 Kubernetes DNS 하위 도메인 이름 규칙(RFC 1123)을 준수해야 합니다. 영숫자. 밑줄(_)은 허용되지 않습니다.metadata.name와(과)shardName의 길이를 합한 길이는 50 자 미만이어야 합니다.
예시
shards: - shardName: "shard-0" hosts: - "shard0-node1.external:27018"
spec.source.external.shardedCluster.shards[*].hosts유형: 문자열 배열
이 샤드 에 대한
mongod복제본 세트 멤버의 엔드포인트 목록(host:port형식)입니다.mongot인스턴스는 이러한 호스트의 데이터를 복제합니다. 항목을 하나 이상 지정합니다.각 복제본 세트 (샤드)에는 자체
mongot인스턴스 그룹 있으며, 이 그룹은 해당 복제본 세트 의 데이터만 소싱합니다. 서로 다른 샤드가 동일한mongot인스턴스를 주식 하지 않습니다.예시
shards: - shardName: "shard-0" hosts: - "shard0-node1.external:27018" - "shard0-node2.external:27018" - "shard0-node3.external:27018"
보안 설정
spec.security유형: 객체
mongot수신 서버 에 대한 보안 설정입니다.
spec.security.tls유형: 객체
에
mongot대한 TLS 설정입니다. 생략하면mongot는 들어오는 연결에 TLS를 사용하지 않습니다.
spec.security.tls.certificateKeySecretRef.name유형: 문자열
버전 1.8.0부터 더 이상 사용되지 않습니다: 대신
spec.security.tls.certsSecretPrefix을(를) 사용하세요.개인 키(
tls.key)와 인증서(tls.crt)를 포함하는 동일한 네임스페이스 에 있는 TLS 시크릿의 이름입니다. 시크릿은kubernetes.io/tls유형(cert-manager에서 발급)이거나 수동으로 생성할 수 있습니다.Kubernetes Operator는 이전 버전과의 호환성을 위해 복제본 세트 배포에 대해 이 필드 계속 지원합니다. 그러나 다음과 같습니다.
샤딩된 클러스터 배포의 경우 Kubernetes Operator는 유효성 검사 중에 이 필드 거부합니다. 단일 시크릿 참조는 샤드별 인증서를 포함할 수 없으므로 대신
spec.security.tls.certsSecretPrefix를 사용합니다.certificateKeySecretRef와certsSecretPrefix를 모두 지정하는 경우 복제본 세트 배포에certificateKeySecretRef이(가) 우선합니다.
새 배포의 경우 복제본 세트에도
spec.security.tls.certsSecretPrefix를 사용합니다.
spec.security.tls.certsSecretPrefix유형: 문자열
Kubernetes 연산자가 명명 규칙에 따라 TLS 시크릿 이름을 파생하는 데 사용하는 접두사입니다. 이 필드 설정하다 하면 Kubernetes Operator는 각 구성 요소에 대한 명시적인 시크릿 참조를 요구하는 대신 이러한 패턴에 따라 시크릿을 찾습니다.
구성 요소시크릿 이름 패턴복제본 세트의
mongot서버 인증서{certsSecretPrefix}-{name}-search-cert샤딩된
mongot인증서( 샤드 당){certsSecretPrefix}-{name}-search-0-{shardName}-certmanaged 로드 밸런서 서버 인증서
{certsSecretPrefix}-{name}-search-lb-0-certmanaged 로드 밸런서 클라이언트 인증서
{certsSecretPrefix}-{name}-search-lb-0-client-cert구제척으로:
{name}MongoDBSearch 리소스 의metadata.name입니다.{shardName}다음의 값입니다.spec.source.external.shardedCluster.shards[*].shardName
생략하면 이 필드 기본적으로 빈 문자열이 되고 Kubernetes Operator는 대신
spec.security.tls.certificateKeySecretRef을(를) 사용합니다.참고
샤딩된 클러스터 배포의 경우
certificateKeySecretRef대신certsSecretPrefix를 사용해야 합니다. Kubernetes Operator는 샤딩된 토폴로지에 대해certificateKeySecretRef를 거부하는데, 이는 단일 시크릿 참조가 샤드별 인증서를 커버할 수 없기 때문입니다.예시
spec: security: tls: certsSecretPrefix: my-prefix
여러 Mongot 인스턴스에 대한 설정
spec.replicas유형: integer
배포 할
mongotpod의 수입니다. 복제본 세트 소스의 경우mongot파드의 총 개수입니다. 샤딩된 클러스터 소스의 경우 샤드 당mongot파드의 수입니다.spec.replicas가1보다 큰 경우mongod와 여러mongot인스턴스 간에 트래픽을 라우팅하도록spec.loadBalancer도 구성해야 합니다.생략하는 경우 기본값은
1입니다.예시
spec: replicas: 2
로드 밸런싱 설정
spec.loadBalancer유형: 객체
mongod(또는mongos)와mongot간의 L7 로드 밸런싱을 위한 구성입니다. 이 필드spec.replicas가1보다 큰 경우 필수입니다.spec.replicas가1인 경우 이 필드 선택 사항입니다. 단일mongot인스턴스 에 대해서도 로드 밸런서 구성하여 나중에 확장 수 있도록 준비할 수 있습니다.managed또는unmanaged중 정확히 하나만 설정하다 해야 합니다.로드 밸런서
mongod클라이언트에 표시되는 TLS 인증서와 해당 인증서에 포함되어야 하는 호스트 이름에 영향을 줍니다.로드 밸런서 없으면
mongod이(가)mongot에 직접 연결됩니다.mongod에게 제공된 TLS 인증서는mongot의 자체 인증서입니다. MongoDB 클러스터 Kubernetes 외부에 있는 경우mongot서비스는 외부 도메인에 노출됩니다.mongotTLS 인증서의 SAN(주체 대체 이름) 필드 에 해당 외부 도메인을 포함해야 합니다.managed 로드 밸런서 (
spec.loadBalancer.managed)를 사용하는 경우 Envoy 프록시는mongot에 직접 연결되는 유일한 구성 요소입니다. Envoy는 내부 헤드리스 서비스 FQDN을 사용하여mongot파드에 도달합니다.복제본 세트:
<pod>.<name>-search-svc.<ns>.svc.cluster.local샤딩된 클러스터:
<pod>.<name>-search-0-<shard>-svc.<ns>.svc.cluster.local
SAN 필드 에서 이러한 클러스터 로컬 도메인을 사용하여
mongotTLS 인증서를 발급합니다. 와일드카드 인증서를 사용하여mongot파드 수가 변경될 때 인증서를 재발급하지 않도록 할 수 있습니다. 외부mongod프로세스는 Envoy 프록시의 TLS 인증서를 확인하므로mongot인증서가 아닌 Envoy 인증서의 SAN에 외부 도메인을 포함합니다.
팁
단일
mongot파드를 처음 배포 경우에도 managed 로드 밸런서 활성화합니다. 로드 밸런서 있으면 로드 밸런서mongod와mongot사이에 이미 있기 때문에 나중에spec.replicas를 확장하다 TLS 인증서의 도메인이 안정적으로 유지됩니다.
spec.loadBalancer.managed유형: 객체
연산자 managed Envoy 로드 밸런서 구성합니다. Kubernetes Operator는 올바른 라우팅, mTLS, HTTP/2+gRPC 스트림 고정을 사용하여 Envoy 프록시를 배포하고 관리합니다. 기본값을 사용하려면 이 필드 빈 객체 (
{})로 설정합니다.이 필드
spec.loadBalancer.unmanaged와 상호 배타적입니다.예시
spec: loadBalancer: managed: {}
spec.loadBalancer.managed.externalHostname유형: 문자열
Envoy 프록시가 수신 요청의 SNI 일치를 위해 예상하는 호스트 이름입니다. Kubernetes Operator는 이 값을 사용하여 수신
mongod연결의 TLS SNI 필드 일치하는 라우팅 규칙을 구성합니다. Envoy TLS 서버 인증서의 SAN(주체 대체 이름) 필드 에 이 호스트 이름을 포함해야 합니다.샤딩된 클러스터의 경우 값에는 Kubernetes Operator가 샤드 확장하는
{shardName}자리 표시자가 포함되어야 합니다. 각 샤드 고유한 호스트 이름을 가지며, Envoy TLS 서버 인증서에는 해당 SAN의 모든 확장 샤드 호스트 이름이 포함되어야 합니다. 와일드카드 인증서를 사용하면 단일 인증서로 모든 샤드를 처리하고 샤드 추가 시 재발급을 방지할 수 있습니다.이 필드 MongoDB 외부에서 managed 경우( Kubernetes Operator가 배포하지 않음) 필수입니다. MongoDB 동일한 클러스터 에서 연산자 관리되는 경우, Kubernetes 연산자가 라우팅을 자동으로 구성하므로 이 필드 생략합니다.
예시
# Replica set with external MongoDB spec: loadBalancer: managed: externalHostname: "search.apps.example.com" # Sharded cluster with external MongoDB spec: loadBalancer: managed: externalHostname: "{shardName}.search.example.com"
spec.loadBalancer.managed.resourceRequirements유형: core/v1/ResourceRequirements
Envoy 컨테이너 요청 하고 제한할 수 있는 CPU 및 메모리입니다. 이 설정을 지정하면 Kubernetes Operator가 기본값을 완전히 대체합니다.
생략하면 Kubernetes Operator는 다음 기본값 을 사용합니다.
requests: cpu: 100m memory: 128Mi limits: cpu: 500m memory: 512Mi 예시
spec: loadBalancer: managed: resourceRequirements: requests: cpu: "200m" memory: "256Mi" limits: cpu: "1" memory: "1Gi"
spec.loadBalancer.managed.deployment유형: 객체
Kubernetes 연산자가 연산자가 생성한 Envoy 배포에 병합하는 재정의입니다. MongoDB 리소스에서
spec.statefulSet과 동일한 규칙을 따릅니다. 생략하면 Kubernetes Operator는 Envoy 배포에 기본값을 사용합니다.이 객체 에는 두 개의 필드가 포함되어 있습니다.
metadata— Kubernetes 연산자가 Envoy 배포 메타데이터 에 병합하는labels및annotations필드를 포함합니다.spec— apps/v1/DeploymentSpec 객체. Kubernetes Operator는 이러한 재정의를 Envoy 배포 사양에 병합합니다.
예시
spec: loadBalancer: managed: deployment: spec: template: spec: nodeSelector: kubernetes.io/os: linux
spec.loadBalancer.unmanaged유형: 객체
사용자 제공 (Bring Yourself) L7 로드 밸런서 구성합니다. 사용자는 외부에서 로드 밸런서 배포하고 구성할 책임이 있습니다.
이 필드
spec.loadBalancer.managed와 상호 배타적입니다.
spec.loadBalancer.unmanaged.endpoint유형: 문자열
host:port형식의 BIO 로드 밸런서 의 엔드포인트입니다. Kubernetes Operator는 이 값을mongod구성에mongotHost및searchIndexManagementHostAndPort로 씁니다.이 필드 Kubernetes 연산자가
mongod매개변수를 구성하기 위해 엔드포인트가 필요하기 때문에, Kubernetes 연산자가 MongoDB 배포서버 (spec.source.mongodbResourceRef사용)를 관리하는 경우에만 필요합니다. 로드 밸런서 와 MongoDB 모두 외부에 있는 경우( Kubernetes Operator에서 managed 하지 않음)mongod매개변수를 직접 구성하므로 이 필드 필요하지 않습니다.샤딩된 클러스터의 경우 값에는 Kubernetes Operator가 샤드 확장하는
{shardName}자리 표시자가 포함되어야 합니다.예시
# Replica set example spec: loadBalancer: unmanaged: endpoint: "search-lb.corp.example.com:443" # Sharded cluster example spec: loadBalancer: unmanaged: endpoint: "{shardName}-lb.corp.example.com:443"
리소스 프로비저닝 설정
spec.resourceRequirements유형: core/v1/ResourceRequirements
mongodb-search컨테이너 요청 수 있고 제한할 수 있는 CPU 및 메모리입니다.spec.statefulSet(으)로 재정의하는 대신 이 필드 사용하여 리소스 할당을 사용자 지정하는 것이 좋습니다.spec.jvmFlags에서 JVM 힙 크기를 재정의하지 않으면 Kubernetes Operator는 기본값 힙 크기(-Xmx)를mongot파드에서 사용할 수 있는 메모리의 50%로 설정합니다.spec.resourceRequirements를 적절히 조정하여 파드 리소스와 JVM 힙 크기를 모두 제어합니다.생략하면 Kubernetes Operator는 다음 기본값 을 사용합니다.
requests: cpu: 2 memory: 2G
spec.resourceRequirements.limits유형: 객체
mongodb-search컨테이너 사용할 수 있는 리소스 , CPU 및 메모리의 상한선입니다. 기본값 으로 제한은 설정하다 있지 않습니다. 생략하면 파드가 제한되지 않으므로 노드 의 모든 리소스를 사용할 수 있습니다. 워크로드 에 따라 제한을 설정하는 것이 좋습니다.
spec.resourceRequirements.requests유형: 객체
mongodb-search컨테이너 에 대해 요청된 CPU 및 메모리의 양입니다. 생략하면 Kubernetes Operator는 다음 기본값 을 사용합니다.requests: cpu: 2 memory: 2G
spec.persistence.single유형: 객체
MongoDB Search 및 Vector Search 인덱스가 저장되는 MongoDB Search 및 Vector Search 지속성 볼륨에 대한 스토리지 구성입니다. 각 검색 인스턴스 (pod)에는 인덱스를 유지 관리하기 위한 자체 독립적인 저장 가 있으며, 이는 MongoDB database 와 공유되지 않습니다. 인덱스 메타데이터 (정의)만 데이터베이스 자체에 저장됩니다.
스칼라데이터 유형설명labelSelector문자열
storage문자열
storageClass문자열
영구 볼륨 클레임에 지정된 저장 유형입니다. 이 저장 유형을 StorageClass 객체로 생성한 후 이 객체 사양에서 사용할 수 있습니다.
StorageClass
reclaimPolicy를 Retain 으로 설정하다 해야 합니다. 이렇게 하면 영구 볼륨 클레임 이 제거될 때 데이터가 유지됩니다.MongoDBSearch는
single지속성 필드 만 지원합니다. 생략하면 Kubernetes Operator가spec.persistence.single.storage을10GB로 설정합니다.
로깅 설정
spec.logLevel유형: 문자열
mongot로그의 상세도입니다. 값은 다음 중 하나일 수 있습니다.TRACEDEBUGINFOWARNERROR
생략하는 경우 기본값은
INFO입니다.
지표 설정
spec.prometheus유형: 객체
이 기능은 v1.6 이상에서만 사용할 수 있습니다.
Prometheus 지표 엔드포인트를 활성화 구성입니다. 생략하면
mongot의 지표 엔드포인트가 비활성화됩니다. 기본값 포트(9946)에서 Prometheus 지표 엔드포인트를 활성화 하려면spec.prometheus필드 에 빈{}객체 지정합니다. 포트를 변경하려면spec.prometheus.port필드 에 설정하다 .
spec.prometheus.port유형: 문자열
Prometheus 지표 엔드포인트를 활성화 할 포트입니다. 기본값 으로 Prometheus 지표 엔드포인트는 포트
9946에서 활성화됩니다.
자동 임베딩 설정
중요
자동 임베딩은 MongoDB Community Edition 배포서버 대해서만 미리 보기 기능 으로 사용할 수 있습니다. 기능 및 해당 설명서는 미리 보기 기간에 언제든지 변경될 수 있습니다. 자세히 학습 미리 보기 기능을 참조하세요.
spec.autoEmbedding유형: 객체
컬렉션 의 텍스트 데이터에 대한 자동 임베딩 을 위한 구성입니다.
spec.autoEmbedding.embeddingModelAPIKeySecret유형: 객체
임베딩 모델 제공자 API 키에 대한 구성입니다. 자동 임베딩을 활성화 하려면 두 개의 키를 생성해야 하는데, 하나는 컬렉션 의 데이터에 대해 인덱스 시점에 임베딩을 생성하기 위한 것이고 다른 하나는 쿼리 시점에 쿼리 텍스트에 대한 임베딩을 생성하기 위한 것입니다. 아직 키가 없는 경우 두 개의 Atlas 프로젝트에서 키를 생성하는 것이 좋습니다. Atlas UI 에서 Atlas 프로젝트의 키를 만드는 방법에 대해 자세히 알아보려면 API 키 관리를 참조하세요.
spec.autoEmbedding.embeddingModelAPIKeySecret.name유형: 문자열
mongot가 인덱스 및 쿼리 시점에 임베딩을 생성하는 데 사용해야 하는 임베딩 모델 API 키가 포함된 시크릿의 이름입니다.
spec.autoEmbedding.providerEndpoint유형: 문자열
임베딩 생성을 위한 임베딩 모델 엔드포인트 URL . 값은 Atlas UI 에서 키를 생성하는지(권장), 임베딩 서비스에서 직접 생성하는지(Voyage AI)에 따라 달라집니다. 다음에서 생성된 키의 경우:
Atlas UI, 값은
https://ai.mongodb.com/v1/embeddings(기본값)입니다.Voyage AI, 값은 다음과 같습니다.
https://api.voyageai.com/v1/embeddings
JVM 구성을 위한 설정
spec.jvmFlags유형: 문자열 배열
mongot프로세스 에 전달된 JVM 플래그입니다. Kubernetes Operator는--jvm-flags "<all flags space-separated>"를 사용하는mongot스타트업 명령에 수정하지 않은 플래그를 포함합니다.이 필드 에
-Xms또는-Xmx을 지정하지 않으면 Kubernetes Operator는 둘 다spec.resourceRequirements.requests.memory의 절반으로 설정하여 힙 크기를 자동으로 계산합니다. 리소스 요구 사항을 지정하지 않으면 Kubernetes Operator는 기본값 인 4Gi 메모리 요청 사용하여 약-Xmx2048m -Xms2048m를 생성합니다.자체
-Xms또는-Xmx값을 제공하는 경우 Kubernetes Operator는 해당 값을 사용하며 값을 재정의하지 않습니다. Kubernetes 연산자는 항상 연산자 계산 플래그 뒤에 제공한 플래그를 추가합니다.자세한 학습 은 mongot 에 대한 하드웨어 크기 조정을 참조하세요.
예시
spec: jvmFlags: - -Xms2g - -Xmx2g
기타 설정
spec.version유형: 문자열
mongodb-searchDocker 이미지의 버전입니다. 생략하면 Kubernetes 연산자가 자동으로 최신 버전의 MongoDBSearch를 선택합니다. Kubernetes 연산자 버전 업그레이드 시 자동 업그레이드를 방지하도록 명시적으로 설정할 수 있습니다.
spec.statefulSetmongot파드 배포를 위해 생성된 StatefulSet에 대한 사양으로, Kubernetes 연산자가 적용하는 설정을 덮어씁니다. 재정의는 항상 마지막에 적용됩니다.spec.statefulSet.spec및spec.statefulSet.metadata필드를 모두 지원합니다.참고
spec.statefulSet을(를) 사용하여 리소스 요구 사항 또는 지속성 설정을 설정하다 하지 마세요. 대신spec.resourceRequirements및spec.persistence필드를 각각 사용합니다.
상태 필드
Kubernetes Operator는 MongoDBSearch 리소스 의 status 필드 아래에 상태 정보를 보고합니다.
status.loadBalancer유형: 객체
연산자 managed 로드 밸런서 (Envoy)의 상태입니다. 이 필드
spec.loadBalancer.managed이 설정하다 경우에만 표시됩니다.
status.loadBalancer.phase유형: 문자열
managed 형 로드 밸런서 의 현재 단계입니다. 가능한 값에는
Pending,Running,Failed등이 있습니다. Kubernetes Operator는 이 단계를 기본status.phase와 독립적으로 보고하므로 Envoy 배포서버 별도로 모니터 할 수 있습니다.이 필드
LOADBALANCER열 아래의kubectl get출력에서도 볼 수 있습니다.예시
kubectl get mdbs NAME PHASE VERSION LOADBALANCER AGE mdb-rs-ext-lb-search Running 0.64.0 Running 14m