Kubernetes Operator용 MongoDB 컨트롤러를 사용하여 MongoDB 8.2 이상과 함께 MongoDB Search 및 Vector Search를 배포 할 수 있습니다.
리소스 사양 예시
다음 예시 MongoDB Search 및 Vector Search 배포서버 위한 spec 객체 내부의 설정을 보여줍니다. 이러한 설정에 대해 자세히 학습하려면 필수 설정 및 선택적 설정을 참조하세요.
참고
이 예시는 작동하는 구성이 아닙니다. 참조를 위해 샘플 값으로 채워진 모든 사용 가능한 필드가 포함되어 있습니다. 일부 필드는 상호 배타적이며, 일부는 다른 필드보다 우선순위가 높습니다(예시: 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
필수 설정
이 섹션에서는 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 리소스의 고유 식별자입니다. 이름은 유효한 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을 포함한 전체 필드 참조는 spec.clusters를 참조하세요.
선택적 설정
이 섹션에서는 MongoDB 검색하다 및 벡터 검색 리소스에 대한 선택 사항 설정에 대해 설명합니다. CRD에 선택 사항 설정을 생략하고 필수 설정만 정의하는 경우, Kubernetes Operator용 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를 반환하는<MongoDBSearch.metadata.name>-<username>-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.source.external를 사용하여 데이터베이스에 대한 연결을 구성합니다. 두 필드를 모두 설정하면spec.source.external이(가) 우선합니다.생략하면 Kubernetes Operator는 이 MongoDBSearch 리소스 와 이름이 같은
MongoDB또는MongoDBCommunity리소스 찾습니다.
spec.source.mongodbResourceRef.namespace유형: 문자열
spec.source.mongodbResourceRef.name가 참조하는MongoDB또는MongoDBCommunity리소스의 네임스페이스. The Kubernetes Operator currently ignores this field and always uses the namespace of the MongoDBSearch 리소스. 교차 네임스페이스 참조는 지원되지 않습니다. 데이터베이스가 다른 네임스페이스에 있는 경우spec.source.external을 사용하세요.
mongot 사용자 구성을 위한 설정
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: clientCertificateSecretRef: name: mongot-x509-client-cert
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 에 연결하기 위한 설정
다음 설정은 외부 MongoDB 배포서버 에 대한 연결을 구성할 때만 필요합니다.
spec.source.external유형: 객체
외부 데이터 소스를 설명하는 설정입니다. 이 객체는 외부 MongoDB에 연결하기 위한 MongoDB Search 및 벡터 검색 리소스의 설정을 설명합니다. Kubernetes 연산자를 사용하여 배포되지 않은 외부 MongoDB에 연결하려는 경우에만 이 설정을 지정합니다. 이 설정을 지정하면
spec.source.mongodbResourceRef보다 우선합니다. 동일 클러스터에 Kubernetes 연산자를 사용하여 MongoDB를 설치한 경우 이 설정은 선택 사항입니다.
spec.source.external.keyfileSecretRef유형: 객체
mongot이 외부 MongoDB 배포에 연결하는 데 사용하는mongod키 파일이 포함된 시크릿.
spec.source.external.keyfileSecretRef.name유형: 문자열
키 파일이 포함된 시크릿의 이름입니다.
spec.source.external.keyfileSecretRef을 설정하는 경우 이 필드를 지정해야 합니다.
spec.source.external.keyfileSecretRef.key유형: 문자열
키파일이 시크릿에 저장되는 키입니다. 이 필드는 선택 사항입니다.
외부 복제본 세트에 연결하기 위한 설정
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 인증서를 발급한 인증 기관의 신뢰할 수 있는 체인이 포함된 ConfigMap의 이름입니다.예시
spec: source: external: tls: ca: name: trusted-ca 이 ConfigMap의
ca.crt키 아래에 인증서(또는 인증서 체인)를 지정해야 합니다.예시
kind: ConfigMap 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.clusters[].replicas에 지정된 수의 파드가 포함됩니다. 샤드 항목을 하나 이상 지정합니다.
spec.source.external.shardedCluster.shards[*].shardName유형: 문자열
샤드 의 논리적 이름입니다. Kubernetes Operator는 이 이름을 Kubernetes 리소스 명명(StatefulSets, Services, Secrets)에 사용합니다. 이 값은 MongoDB 샤드 이름과 다를 수 있습니다.
명명 제약 조건:
모든 샤드에서 고유해야 합니다.
소문자 영숫자 및 하이픈(
-)을 허용하며 이름이 영숫자로 시작하고 끝나도록 요구하는 Kubernetes DNS 레이블 이름 규칙(RFC 1123)을 준수해야 합니다. 마침표(.)와 및줄(_)은 허용되지 않습니다. 최대 길이는 63 자입니다.Kubernetes 연산자는
metadata.name, 클러스터 인덱스 및shardName를 결합하여 생성하는 Kubernetes 리소스의 이름(예시:{name}-search-{clusterIndex}-{shardName})을 만들고 모든 생성된 이름이 레이블의 Kubernetes DNS 제한 63 자 및 하위 도메인 이름의 253 자 내에 맞는지 확인합니다. 이러한 제한에 맞도록shardName를 초기화합니다.
예시
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.clusters 배열의 각 엔트리를 설명합니다.
spec.clusters유형: 객체 배열
MongoDBSearch의 Kubernetes 클러스터 별 배포 구성. 이 필드는 필수 필드이며 최소 하나 최대 50 개의 엔트리를 포함해야 합니다.
replicas,loadBalancer,resourceRequirements,persistence,jvmFlags,statefulSet등 모든 사이징 및 배치 설정은clusters엔트리 내에 있습니다. 이러한 설정에는 최상위 수준 대응하는 것이 없습니다.단일 클러스터 배포서버의 경우 하나의 항목을 지정하십시오.
name및index은(는) 생략할 수 있습니다.예시
spec: clusters: - {} 다중 클러스터 배포의 경우
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 연산자는 StatefulSet를 영 파드로 확장하고 MongoDBSearch 리소스 및 기타 Kubernetes 리소스를 제자리에 유지합니다.생략하는 경우 기본값은
1입니다.예시
spec: clusters: - replicas: 2
spec.clusters[].resourceRequirements유형: core/v1/ResourceRequirements
mongodb-search컨테이너 요청 수 있고 제한할 수 있는 CPU 및 메모리입니다.spec.clusters[].statefulSet(으)로 재정의하는 대신 이 필드 사용하여 리소스 할당을 사용자 지정하는 것이 좋습니다.spec.clusters[].jvmFlags에서 JVM 힙 크기를 재정의하지 않으면 Kubernetes Operator는 기본 힙 크기(-Xmx)를mongot컨테이너의 메모리 요청의 50%로 설정합니다. 팝 리소스와 JVM 힙 크기 모두를 제어하려면spec.clusters[].resourceRequirements를 적절히 조정하십시오.생략하면 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가 나머지 필드에 대한 기본값을 적용합니다. 생략하면 Kubernetes Operator는 다음 기본값을 사용합니다.requests: cpu: 2 memory: 4Gi
spec.clusters[].persistence.single유형: 객체
MongoDB Search 및 Vector Search 인덱스가 저장되는 MongoDB Search 및 Vector Search 지속성 볼륨에 대한 스토리지 구성입니다. 각 검색 인스턴스 (pod)에는 인덱스를 유지 관리하기 위한 자체 독립적인 저장 가 있으며, 이는 MongoDB database 와 공유되지 않습니다. 인덱스 메타데이터 (정의)만 데이터베이스 자체에 저장됩니다.
스칼라데이터 유형설명labelSelector문자열
storage문자열
storageClass문자열
영구 볼륨 클레임에 지정된 저장 유형입니다. 이 저장 유형을 StorageClass 객체로 생성한 후 이 객체 사양에서 사용할 수 있습니다.
StorageClass
reclaimPolicy를 Retain 으로 설정하다 해야 합니다. 이렇게 하면 영구 볼륨 클레임 이 제거될 때 데이터가 유지됩니다.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보다 큰 경우 필수입니다.spec.clusters[].replicas가1인 경우 이 필드 선택 사항입니다. 단일mongot인스턴스 에 대해서도 로드 밸런서 구성하여 나중에 확장 수 있도록 준비할 수 있습니다.managed또는unmanaged중 정확히 하나만 설정하다 해야 합니다.spec.clusters의 모든 엔트리는 로드 밸런서 모드에 대해 동의해야 합니다. 모든 엔트리가loadBalancer.managed을 설정하거나, 모든 엔트리가loadBalancer.unmanaged를 설정하거나, 엔트리가loadBalancer을 설정하지 않아야 합니다. Kubernetes 연산자는 혼합 모드를 거부합니다. 다중 클러스터 배포서버는 managed 모드만 지원합니다.로드 밸런서
mongod클라이언트에 표시되는 TLS 인증서와 해당 인증서에 포함되어야 하는 호스트 이름에 영향을 줍니다.로드 밸런서 없으면
mongod이(가)mongot에 직접 연결됩니다.mongod에게 제공된 TLS 인증서는mongot의 자체 인증서입니다. MongoDB 클러스터 Kubernetes 외부에 있는 경우mongot서비스는 외부 도메인에 노출됩니다.mongotTLS 인증서의 SAN(주체 대체 이름) 필드 에 해당 외부 도메인을 포함해야 합니다.managed 로드 밸런서 (
spec.clusters[].loadBalancer.managed)를 사용하는 경우 Envoy 프록시는mongot에 직접 연결되는 유일한 구성 요소입니다. Envoy 프록시는 내부 서비스 FQDN을 통해mongot에 도달합니다.복제본 세트:
<name>-search-<clusterIndex>-svc.<ns>.svc.cluster.local샤딩된 클러스터:
<name>-search-<clusterIndex>-<shard>-svc.<ns>.svc.cluster.local
mongotTLS 인증서의 SAN 필드에 이러한 서비스 FQDN을 포함하는 것이 좋습니다. 연산자가 managed Envoy 프록시는 현재mongot인증서를 인증서 발급 기관에 대해서만 유효성을 검사하며 SAN 호스트 이름을 일치시키지 않습니다. 외부mongod프로세스는 Envoy 프록시의 TLS 인증서를 확인하므로mongot인증서에 아니라 Envoy 인증서의 SAN에 외부 도메인을 포함하세요.
팁
단일
mongot파드를 처음 배포 경우에도 managed 로드 밸런서 활성화합니다. 로드 밸런서 있으면 로드 밸런서mongod와mongot사이에 이미 있기 때문에 나중에spec.clusters[].replicas를 확장하다 TLS 인증서의 도메인이 안정적으로 유지됩니다.
spec.clusters[].loadBalancer.managed유형: 객체
연산자 managed Envoy 로드 밸런서 구성합니다. Kubernetes Operator는 올바른 라우팅, mTLS, HTTP/2+gRPC 스트림 고정을 사용하여 Envoy 프록시를 배포하고 관리합니다. 기본값을 사용하려면 이 필드 빈 객체 (
{})로 설정합니다.이 필드
spec.clusters[].loadBalancer.unmanaged와 상호 배타적입니다.샤딩된 클러스터 소스의 경우 managed 로드 밸런서를 사용하는 경우
spec.security.tls도 구성해야 합니다. Envoy 프록시는 TLS가 필요한 SNI를 사용하여 트래픽을 올바른 샤드로 라우팅합니다.예시
spec: clusters: - loadBalancer: managed: {}
spec.clusters[].loadBalancer.managed.externalHostname유형: 문자열
Envoy 프록시가 수신 요청의 SNI 일치를 위해 예상하는 호스트 이름입니다. Kubernetes Operator는 이 값을 사용하여 수신
mongod연결의 TLS SNI 필드 일치하는 라우팅 규칙을 구성합니다. Envoy TLS 서버 인증서의 SAN(주체 대체 이름) 필드 에 이 호스트 이름을 포함해야 합니다.샤딩된 클러스터 소스의 경우 값에는 Kubernetes Operator가 샤드 별로 확장하는
{shardName}자리 표시자가 포함되어야 합니다. 각 샤드는 고유한 호스트 이름을 가지며 Envoy TLS 서버 인증서에는 SAN에 확장된 모든 샤드 호스트 이름이 포함되어야 합니다. 와일드카드 인증서를 사용하여 단일 인증서로 모든 샤드를 커버하고 샤드가 추가되는 경우 재발급을 피할 수 있습니다. 복제본 세트 소스의 경우{shardName}자리 표시자를 사용하지 마십시오.이 필드 MongoDB 외부에서 managed 경우( Kubernetes Operator가 배포하지 않음) 필수입니다. MongoDB 동일한 클러스터 에서 연산자 관리되는 경우, Kubernetes 연산자가 라우팅을 자동으로 구성하므로 이 필드 생략합니다.
다중 클러스터 배포서버에서는 각 클러스터 엔트리에 대해 별도의 호스트 이름이 사용됩니다. 하지만 Kubernetes 연산자는 예를 들어 가용 구역에 걸친 페일오버 프록시가 여러 클러스터의 Envoy 프록시를 전면에 배치하는 경우와 같이 클러스터 간에 하나의 호스트 이름 공유를 허용합니다.
예시
# Replica set with external MongoDB spec: clusters: - loadBalancer: managed: externalHostname: "search.apps.example.com" # Sharded cluster with external MongoDB spec: clusters: - loadBalancer: managed: externalHostname: "{shardName}.search.example.com"
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의 샤드 아그노스틱 입력 점입니다.다중 클러스터 배포에서는 각 클러스터 엔트리에 일반적으로 고유한 값이 사용됩니다. 하지만 Kubernetes Operator는 가용 영역에 걸쳐 있는 페일오버 프록시가 여러 클러스터의 Envoy 프록시를 제공하는 경우와 같이 클러스터 간에 하나의 값을 공유할 수 있습니다.
예시
spec: clusters: - loadBalancer: managed: externalHostname: "{shardName}.search.example.com" routerHostname: "search-router.example.com:27028"
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: resourceRequirements: requests: cpu: "200m" memory: "256Mi" limits: cpu: "1" memory: "1Gi"
spec.clusters[].loadBalancer.managed.deployment유형: 객체
Kubernetes 연산자가 연산자가 생성한 Envoy 배포에 병합하는 재정의입니다. MongoDB 리소스에서
spec.statefulSet과 동일한 규칙을 따릅니다. 생략하면 Kubernetes Operator는 Envoy 배포에 기본값을 사용합니다.이 객체 에는 두 개의 필드가 포함되어 있습니다.
metadata— Kubernetes 연산자가 Envoy 배포 메타데이터 에 병합하는labels및annotations필드를 포함합니다.spec— apps/v1/DeploymentSpec 객체. Kubernetes Operator는 이러한 재정의를 Envoy 배포 사양에 병합합니다.
예시
spec: clusters: - loadBalancer: managed: deployment: spec: template: spec: nodeSelector: kubernetes.io/os: linux
spec.clusters[].loadBalancer.managed.retryPolicy유형: 객체
Envoy 프록시가 개별 gRPC 스트림에 적용하는 재시도 동작은 업스트림
mongot인스턴스에 적용됩니다. Envoy 프록시는 실패한 시도와 다른mongot호스트로 각 재시도 시도를 보냅니다.이 필드를 생략하면 Envoy 프록시는 기본값으로 다시 시도합니다. 시도당 타임아웃이
60s인 시도를2번 시도합니다.예시
spec: clusters: - loadBalancer: managed: retryPolicy: numRetries: 2 perTryTimeout: "60s"
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 Yourself) 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로 쓰기합니다. MongoDB가 외부에 있는 경우에는 동일한 값을 사용하여mongod매개변수를 직접 구성합니다.외부 샤딩된 클러스터 소스의 경우 값에는 Kubernetes Operator가 샤드 별로 확장하는
{shardName}자리 표시자가 포함되어야 하며, 자리 표시자만 포함되어서는 안 됩니다. 외부 복제본 세트 소스의 경우 값에는{shardName}자리 표시자가 포함되어서는 안 됩니다.예시
# Replica set example spec: clusters: - loadBalancer: unmanaged: endpoint: "search-lb.corp.example.com:443" # Sharded cluster example spec: clusters: - loadBalancer: unmanaged: endpoint: "{shardName}-lb.corp.example.com:443"
샤드별 재정의
spec.clusters[].shardOverrides유형: 객체 배열
클러스터 기본값과 다르게 이 클러스터 엔트리 내의 특정 샤드의 크기를 재정의하는 재정의. 이 필드를 사용하여 개별 샤드에 나머지 클러스터보다 더 많거나 덜
mongot노드, 리소스 또는 저장 공간을 할당할 수 있습니다.이 필드는 외부 샤딩된 클러스터 소스(
spec.source.external.shardedCluster)에서만 사용할 수 있습니다. 참조하는 각 샤드 이름은spec.source.external.shardedCluster.shards[*].shardName에 존재해야 하며, 클러스터 엔트리당 각 샤드를 최대 한 번만 재정의할 수 있습니다.오버라이드에
replicas,resourceRequirements,persistence또는jvmFlags을 설정하면 명명된 샤드의 클러스터 값을 대체합니다. Kubernetes Operator는statefulSet를 클러스터 값에 디프 병합합니다. 설정하지 않은 필드는 클러스터 값을 상속합니다.예시
spec: clusters: - replicas: 2 shardOverrides: - shardNames: - shard-0 replicas: 3 resourceRequirements: requests: cpu: "4" memory: 8Gi
spec.clusters[].shardOverrides[*].shardNames유형: 문자열 배열
이 오버라이드가 적용되는 이 클러스터 엔트리 내의 샤드 이름입니다. 이 필드는 필수이며 적어도 하나의 엔트리가 포함되어야 합니다.
spec.clusters[].shardOverrides[*].replicas유형: integer
명명된 샤드의 클러스터의
mongot복제본 수를 대체합니다.0값은 이 샤드의mongot인스턴스를 오프라인으로 전환합니다.
spec.clusters[].shardOverrides[*].resourceRequirements유형: core/v1/ResourceRequirements
명명된 샤드에 대한 클러스터의 CPU 및 메모리 요청 및 제한을 대체합니다.
spec.clusters[].shardOverrides[*].persistence유형: 객체
명명된 샤드의 클러스터의 영구 볼륨 구성을 대체합니다.
spec.clusters[].persistence과 동일한 스키마를 사용합니다.
spec.clusters[].shardOverrides[*].statefulSet유형: 객체
이름이 지정된 샤드에 대한 StatefulSet 재정의. 다른 재정의 필드와 달리 Kubernetes Operator는 이 값을 대체하는 대신 클러스터의
spec.clusters[].statefulSet값에 딥 병합합니다.
spec.clusters[].shardOverrides[*].jvmFlags유형: 문자열 배열
빈 문자열이 아닌 목록으로 설정하면 명명된 샤드의 클러스터의
spec.clusters[].jvmFlags을 대체합니다.spec.clusters[].jvmFlags의 형식 규칙은 이 필드에도 적용됩니다.
동기화 소스 선택
spec.clusters[].syncSourceSelector유형: 객체
이 클러스터 엔트리의
mongot인스턴스가 데이터를 동기화할mongod노드를 선택합니다.
spec.clusters[].syncSourceSelector.matchTagSets유형: 객체 배열
복제본 세트 태그를 사용하여 동기화 소스
mongod노드를 선택하는 복제본 세트 태그 세트의 정렬된 목록입니다. Kubernetes Operator는 목록을mongot구성에 전달합니다.mongot는 첫 번째 일치하는 태그 세트가 선택한 노드에서 동기화하고 세컨더리 노드를 선호합니다.각 항목은 태그 이름을 태그 값에 매핑한 것입니다. 빈 문서(
{})는 모든 노드와 일치하므로 이전 태그 세트와 일치하는 것이 없는 경우 일치 어떤 것이든 폴백으로 후미에{}항목을 추가할 수 있습니다. 최대 50 개의 항목을 지정할 수 있습니다.예시
spec: clusters: - syncSourceSelector: matchTagSets: - region: us-east-1 workload: search - {}
JVM Flags
spec.clusters[].jvmFlags유형: 문자열 배열
mongot프로세스 에 전달된 JVM 플래그입니다. Kubernetes Operator는--jvm-flags "<all flags space-separated>"를 사용하는mongot스타트업 명령에 수정하지 않은 플래그를 포함합니다.각 플래그는
-X,-XX:또는-D(으)로 시작해야 하며 공백을 포함하지 않아야 합니다. 영수자 및 숫자 문자와.,_,+,:,-,=문자만 포함할 수 있습니다. Kubernetes 연산자는 이 규칙에 부합하지 않는 플래그를 거부합니다.이 필드 에
-Xms또는-Xmx을 지정하지 않으면 Kubernetes Operator는 둘 다spec.clusters[].resourceRequirements.requests.memory의 절반으로 설정하여 힙 크기를 자동으로 계산합니다. 리소스 요구 사항을 지정하지 않으면 Kubernetes Operator는 기본값 인 4Gi 메모리 요청 사용하여 약-Xmx2048m -Xms2048m를 생성합니다.자체
-Xms또는-Xmx값을 제공하는 경우 Kubernetes Operator는 해당 값을 사용하며 값을 재정의하지 않습니다. Kubernetes 연산자는 항상 연산자 계산 플래그 뒤에 제공한 플래그를 추가합니다.자세한 학습 은 mongot 에 대한 하드웨어 크기 조정을 참조하세요.
예시
spec: clusters: - jvmFlags: - -Xms2g - -Xmx2g
StatefulSet 재정의
spec.clusters[].statefulSet유형: 객체
Kubernetes 연산자가
mongot포드 배포를 위해 만드는 StatefulSet 에 대한 재정의입니다. Kubernetes 연산자는 항상 재정의를 마지막에 적용하므로 Kubernetes 연산자가 계산하는 설정을 재정의가 재정의합니다.이 객체 에는 두 개의 필드가 포함되어 있습니다.
metadata— Kubernetes 연산자가 StatefulSet 메타데이터에 병합하는labels및annotations필드를 포함합니다.spec— apps/v1/StatefulSetSpec 객체. Kubernetes Operator는 이러한 재정의를 StatefulSet 사양에 병합합니다.
참고
spec.clusters[].statefulSet을(를) 사용하여 리소스 요구 사항 또는 지속성 설정을 설정하다 하지 마세요. 대신spec.clusters[].resourceRequirements및spec.clusters[].persistence필드를 각각 사용합니다.
고급 mongot 설정
spec.clusters[].advancedMongotConfigs유형: 객체
이 클러스터 항목에 대한 고급
mongot설정입니다. Kubernetes Operator는 값을 읽거나 수정하지 않고mongot설정 파일의advancedConfigs키 아래에 그대로 렌더링합니다. 이 필드는mongot구성에서 Kubernetes 연산자가 다른 곳에서 생성하는 설정에 영향을 주지 않습니다.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.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-{clusterIndex}-{shardName}-certmanaged 로드 밸런서 서버 인증서(클러스별, 모든 토폴로지)
{certsSecretPrefix}-{name}-search-lb-{clusterIndex}-certmanaged 로드 밸런서 클라이언트 인증서
{certsSecretPrefix}-{name}-search-lb-{clusterIndex}-client-cert구제척으로:
{name}MongoDBSearch 리소스 의metadata.name입니다.{clusterIndex}인덱스를 설정하지 않는 단일 클러스터 배포서버의 경우spec.clusters[].index의 값은0입니다.{shardName}다음의 값입니다.spec.source.external.shardedCluster.shards[*].shardName
Kubernetes 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를 마운트합니다.참고
샤딩된 클러스터 배포서버의 경우 Kubernetes Operator는 단일 시크릿 참조가 샤드별 인증서를 포함할 수 없으므로
certificateKeySecretRef를 거부합니다.certsSecretPrefix를 사용하거나 두 필드 모두 설정하지 않고 기본값 샤드별 패턴과 기본값 이름의 로드 밸런서 인증서 시크릿을 만듭니다.예시
spec: security: tls: certsSecretPrefix: my-prefix
spec.security.tls.keyFilePasswordSecretRef유형: 객체
TLS 인증서 시크릿에서 암호로 암호화된 서버 개인 키를 복호화하는 비밀번호가 포함된 시크릿입니다. 시크릿에는
keyFilePassword키 아래에 비밀번호가 포함되어 있어야 합니다. 서버 개인 키가 암호화되지 않은 경우에는 이 필드를 생략합니다.
로깅 설정
spec.logLevel유형: 문자열
mongot로그의 상세도입니다. 값은 다음 중 하나일 수 있습니다.TRACEDEBUGINFOWARNERROR
생략하는 경우 기본값은
INFO입니다.
지표 설정
spec.observability유형: 객체
mongot의 Prometheus 지표 엔드포인트와 MongoDB Ops Manager의 지표 포워더를 포함하여 MongoDBSearch 리소스에 대한 감시 설정입니다.
spec.observability.prometheus유형: 객체
mongot에 있는 Prometheus 지표 엔드포인트에 대한 구성입니다. 이 필드를 생략하면 Kubernetes 연산자가 기본 포트9946에서 지표 엔드포인트를 활성화합니다. 엔드포인트를 비활성화하려면spec.observability.prometheus.mode를disabled으로 설정합니다. 포트를 변경하려면spec.observability.prometheus.port를 설정합니다.
spec.observability.prometheus.mode유형: 문자열
mongot에서 Prometheus 지표 엔드포인트를 활성화 또는 비활성화합니다. 값은 다음 중 하나일 수 있습니다.enableddisabled
생략하는 경우 기본값은
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 Operator는 다음 기본값 을 사용합니다.
requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi
spec.observability.metricsForwarder.deployment유형: 객체
Kubernetes Operator가 연산자가 만든 지표 전송자 배포서버에 병합하는 오버라이드입니다.
spec.clusters[].loadBalancer.managed.deployment와 동일한 관례를 따릅니다.labels와annotations이 있는metadata필드와 apps/v1/DeploymentSpec 객체가 있는spec필드입니다.
spec.observability.metricsForwarder.opsManager유형: 객체
지표 전송기가 지표를 전송하는 MongoDB Ops Manager 프로젝트 및 자격 증명. 생략하면 Kubernetes Operator는 소스 MongoDB 리소스의 연결 구성에서 프로젝트 및 자격 증명을 가져오게 됩니다. 소스 MongoDB 리소스가 존재하지 않는 외부 MongoDB 소스에 대해 이 필드를 설정하세요.
이 필드를 설정하는 경우
agentCredentials및projectConfigMapRef을 모두 설정해야 합니다.
spec.observability.metricsForwarder.opsManager.agentCredentials.name유형: 문자열
지표 전송기가 인증하는 MongoDB Ops Manager 에이전트 API 키가 포함된 시크릿의 이름입니다.
spec.observability.metricsForwarder.opsManager.projectConfigMapRef.name유형: 문자열
지표 전송기가 지표를 보내는 Ops Manager 프로젝트 구성을 포함하는 ConfigMap의 이름.
자동 임베딩 설정
중요
자동 임베딩은 MongoDB Community Edition 배포에 대한 미리보기 기능으로만 사용할 수 있습니다. 기능 및 해당 설명서는 미리보기 기간 동안 언제든지 변경될 수 있습니다. 자세한 내용은 미리보기 기능을 참조하세요.
spec.autoEmbedding유형: 객체
컬렉션 의 텍스트 데이터에 대한 자동 임베딩 을 위한 구성입니다.
spec.autoEmbedding.embeddingModelAPIKeySecret유형: 객체
임베딩 모델 제공자 API 키에 대한 구성입니다. 자동 임베딩을 활성화 하려면 두 개의 키를 생성해야 하는데, 하나는 컬렉션 의 데이터에 대해 인덱스 시점에 임베딩을 생성하기 위한 것이고 다른 하나는 쿼리 시점에 쿼리 텍스트에 대한 임베딩을 생성하기 위한 것입니다. 아직 키가 없는 경우 두 개의 Atlas 프로젝트에서 키를 생성하는 것이 좋습니다. Atlas UI 에서 Atlas 프로젝트의 키를 만드는 방법에 대해 자세히 알아보려면 API 키 관리를 참조하세요.
spec.autoEmbedding.embeddingModelAPIKeySecret.name유형: 문자열
mongot가 인덱스 및 쿼리 시점에 임베딩을 생성하는 데 사용해야 하는 임베딩 모델 API 키가 포함된 시크릿의 이름입니다. 시크릿에는indexing-key키 아래에 인덱스 시점 키가 포함되어 있어야 하며query-key키 아래에 쿼리 시점 키가 포함되어 있어야 합니다.spec.autoEmbedding.providerEndpoint이 연산자가 관리하는 자가 호스팅된 Voyage AI 임베딩 서비스를 가리키는 경우에만embeddingModelAPIKeySecret을 생략할 수 있습니다. 그렇지 않으면 Kubernetes Operator에서 필요합니다.
spec.autoEmbedding.providerEndpoint유형: 문자열
임베딩 생성을 위한 임베딩 모델 엔드포인트 URL . 값은 Atlas UI 에서 키를 생성하는지(권장), 임베딩 서비스에서 직접 생성하는지(Voyage AI)에 따라 달라집니다. 다음에서 생성된 키의 경우:
Atlas UI, 값은
https://ai.mongodb.com/v1/embeddings(기본값)입니다.Voyage AI, 값은 다음과 같습니다.
https://api.voyageai.com/v1/embeddings
기능 플래그 설정
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입니다.이 필드는
PHASE열 아래의kubectl get출력에서 볼 수 있습니다.
status.message유형: 문자열
리소스가
Pending또는Failed단계에 있는 이유와 같이 현재 상태에 대한 세부 정보가 포함된 사람이 읽을 수 있는 메시지입니다.
status.lastTransition유형: 문자열
status.phase의 마지막 전환 시간입니다.
status.observedGeneration유형: integer
Kubernetes 연산자가 마지막으로 처리한 MongoDBSearch 리소스 생성.
status.warnings유형: 문자열 배열
Kubernetes 연산자가 리소스에 대해 보고하는 경고.
status.version유형: 문자열
Kubernetes 연산자가 조정한 MongoDB Search 버전(
mongot)입니다.이 필드는
VERSION열 아래의kubectl get출력에서 볼 수 있습니다.
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등이 있습니다. Kubernetes Operator는 이 단계를 기본status.phase와 독립적으로 보고하므로 Envoy 배포서버 별도로 모니터 할 수 있습니다.이 필드
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유형: 문자열
지표 전송자 상태에 대한 세부 정보가 포함된 사람이 읽을 수 있는 메시지.
status.clusters유형: 객체 배열
배포서버 토폴로지 전체의 클러스터별 상태입니다. Kubernetes Operator는
spec.clusters[]에서 클러스터 당 하나의 항목을 보고하므로 단일 클러스터 배포에는 정확히 하나의 항목이 있습니다. 각 항목은 해당 클러스터 에 대한 검색, 로드 밸런서 및 지표 전달 단계를 독립적으로 보고하므로 문제를 특정 클러스터 및 구성 요소로 현지화할 수 있습니다.
status.clusters[].name유형: 문자열
멤버 클러스터 의 이름입니다. 단일 클러스터 배포에서는 비어 있습니다.
status.clusters[].index유형: integer
이 클러스터 에 대한
spec.clusters[]고정된 인덱스 입니다. 목록 순서와 관계없이 각 상태 항목을 해당 사양 항목에 다시 매핑합니다.
status.clusters[].search유형: 문자열
이 클러스터의
mongotStatefulSet 중 가장 나쁜 단계입니다. 클러스터 복제본 세트 소스의 경우mongotStatefulSet 한 개를 실행하거나 샤딩된 소스의 경우 샤드 당 하나씩 실행합니다. 값은Pending,Running또는Failed일 수 있습니다.
status.clusters[].searchMessage유형: 문자열
status.clusters[].search이(가)Running이(가) 아닌 경우 이유가 포함된 사람이 읽을 수 있는 메시지입니다.
status.clusters[].loadBalancer유형: 문자열
이 클러스터의 managed 로드 밸런서 (Envoy) 단계입니다. managed 로드 밸런서 구성되지 않은 경우 비어 있습니다. 값은
Pending,Running또는Failed일 수 있습니다.
status.clusters[].loadBalancerMessage유형: 문자열
status.clusters[].loadBalancer이(가)Running이(가) 아닌 경우 이유가 포함된 사람이 읽을 수 있는 메시지입니다.
status.clusters[].metricsForwarder유형: 문자열
이 클러스터의 Ops Manager 지표 전달자 단계입니다. 지표 전달자가 활성화되지 않은 경우 비어 있습니다. 값은
Pending,Running또는Failed일 수 있습니다.
status.clusters[].metricsForwarderMessage유형: 문자열
status.clusters[].metricsForwarder이(가)Running이(가) 아닌 경우 이유가 포함된 사람이 읽을 수 있는 메시지입니다.
예시
kubectl get mdbs NAME PHASE VERSION LOADBALANCER METRICSFORWARDER AGE mdb-rs-ext-lb-search Running 1.70.1 Running Running 14m