컨테이너 이미지
Kubernetes 연산자를 설치하면 Quay.io 컨테이너 레지스트리에서 이미지를 가져옵니다. Kubernetes Operator 이미지는 Red Hat UBI 8 운영 체제를 기반으로 합니다. MongoDB 는 최신 운영 체제 및 지원 라이브러리 업데이트를 위해 매일 Kubernetes Operator 이미지를 재구축합니다.
공식 이미지는 다음과 같은 이점을 제공합니다.
최신 업스트림 취약점 수정을 위해 매일 재구성됩니다.
MongoDB는 이를 테스트, 유지 관리, 지원합니다.
각 이미지에 대해 사용 가능한 모든 버전을 보려면 다음 링크를 참조하세요.
이미지 이름 | 설명 |
---|---|
MongoDB Agent 이미지. | |
정적 컨테이너 및 애플리케이션 데이터베이스에 사용되는 Enterprise MongoDB 이미지입니다. | |
initContainer 이미지는 애플리케이션 데이터베이스 시작 스크립트와 준비성 프로브를 포함합니다. | |
비정적 컨테이너에 사용되는 MongoDB database 환경 이미지입니다. 정적 및 비정적 컨테이너에 대해 알아보려면 정적 컨테이너(공개 미리 보기)를 참조하세요. | |
initContainer MongoDB Agent 시작 스크립트 및 준비성 프로브가 포함된 이미지입니다. | |
Ops Manager 이미지. | |
initContainer Ops Manager 시작 스크립트 및 준비성 프로브가 포함된 이미지입니다. |
정적 컨테이너(공개 미리 보기)
정적 컨테이너는 비정적 컨테이너보다 더 안전하고 간단합니다. 정적 컨테이너는 런타임에 변경되지 않습니다. 또한 다음을 수행합니다.
실행 중에는 정적 컨테이너가 바이너리를 다운로드하거나 네트워크 연결을 통해 스크립트 또는 기타 유틸리티를 실행할 수 없습니다. 정적 컨테이너는 런타임 구성 파일만 다운로드할 수 있습니다.
실행하는 동안 정적 컨테이너는 스토리지 볼륨 마운트를 제외하고는 어떤 파일도 수정할 수 없습니다.
정적 컨테이너는 컨테이너 보안 스캔이 필요한 비정적 컨테이너와 달리 컨테이너에 보안 취약점을 스캔할 필요가 없습니다. 정적 컨테이너를 사용하는 경우 컨테이너 이미지 자체에 대해서만 보안 스캔을 실행할 수 있으며 해당 컨테이너에서는 실행할 수 없습니다.
에어 갭 환경의 경우 정적 MongoDB 컨테이너를 사용하면 MongoDB Ops Manager를 호스팅하는 서버 또는 다른 HTTPS 서버에서 바이너리를 호스팅할 필요가 없습니다.
정적 컨테이너에 대해 광범위한
CMD
스크립트를 실행할 수 없습니다.initContainer
을(를) 사용하여 정적 컨테이너 간에 파일을 복사할 수 없습니다.
참고
정적 컨테이너로 배포된 경우 Kubernetes Operator 배포서버 는 mongodb-agent
컨테이너 와 mongodb-enterprise-server
컨테이너 라는 두 개의 컨테이너로 구성됩니다. MongoDB database 사용자 지정 리소스 는 정적 컨테이너 배포서버 에서 mongod
프로세스 를 실행하는 mongodb-agent
컨테이너 에서 리소스 제한 정의를 상속합니다. MongoDB database 리소스 에 대한 리소스 제한을 수정하려면 mongodb-agent
컨테이너 에 원하는 리소스 제한을 지정해야 합니다.
MongoDB Enterprise Kubernetes Operator 1.25부터는 MongoDB Cloud Manager MongoDB Ops Manager 런타임에 , 또는 인터넷에서 바이너리를 다운로드하는 기존의 비정적 컨테이너 대신 정적 컨테이너의 Public Preview를 사용할 수 있습니다. 다음 절차를 사용하여 모든 또는 개별 MongoDB 배포에 대해 정적 컨테이너를 활성화하거나 비활성화할 수 있습니다.
정적 컨테이너는 mongodb-enterprise-server Quay.io 리포지토리.
아키텍처
정적 컨테이너와 비정적 컨테이너의 아키텍처는 크게 다르며, 컨테이너 간에 마이그레이션하는 데 여러 단계가 필요합니다. 자세한 내용은 정적 컨테이너 로 마이그레이션 및 비정적 컨테이너로 마이그레이션을 참조하세요.
비정적 컨테이너 아키텍처
기본 비정적 컨테이너 아키텍처는 빈 셸 컨테이너를 MongoDB Agent 부트스트랩한다고 가정하고, 를 다운로드하여 시작한 다음,mongod
mongosh
Cloud Manager 또는 MongoDB Ops Manager에서 및 에 대한 바이너리를 다운로드합니다.
정적 컨테이너 아키텍처
정적 컨테이너 아키텍처는 Kubernetes 의공유 네임스페이스 기능 을 사용합니다. MongoDB Agent 를 별도의 프로세스 로 실행 mongod
하여 전체 라이프사이클을 제어하고 네트워크를 통해 파일을 다운로드하지 않도록 합니다.
정적 컨테이너는 비정적 컨테이너보다 더 안전하고 간단합니다. 정적 컨테이너는 런타임에 변경되지 않습니다. 또한 다음을 수행합니다.
실행 중에는 정적 컨테이너가 바이너리를 다운로드하거나 네트워크 연결을 통해 스크립트 또는 기타 유틸리티를 실행할 수 없습니다. 정적 컨테이너는 런타임 구성 파일만 다운로드할 수 있습니다.
실행하는 동안 정적 컨테이너는 스토리지 볼륨 마운트를 제외하고는 어떤 파일도 수정할 수 없습니다.
정적 컨테이너는 컨테이너 보안 스캔이 필요한 비정적 컨테이너와 달리 컨테이너에 보안 취약점을 스캔할 필요가 없습니다. 정적 컨테이너를 사용하는 경우 컨테이너 이미지 자체에 대해서만 보안 스캔을 실행할 수 있으며 해당 컨테이너에서는 실행할 수 없습니다.
에어 갭 환경의 경우 정적 컨테이너를 MongoDB 사용하면 MongoDB Ops Manager를 호스팅하는 서버 또는 다른 HTTPS 서버에서 바이너리를 호스팅할 필요가 없습니다.
정적 컨테이너에 대해 광범위한
CMD
스크립트를 실행할 수 없습니다.initContainer
을(를) 사용하여 정적 컨테이너 간에 파일을 복사할 수 없습니다.
참고
정적 컨테이너로 배포된 경우 Kubernetes Operator 배포서버 는 mongodb-agent
컨테이너 와 mongodb-enterprise-server
컨테이너 라는 두 개의 컨테이너로 구성됩니다. MongoDB database 사용자 지정 리소스 는 정적 컨테이너 배포서버 에서 mongod
프로세스 를 실행하는 mongodb-agent
컨테이너 에서 리소스 제한 정의를 상속합니다. MongoDB database 리소스 에 대한 리소스 제한을 수정하려면 mongodb-agent
컨테이너 에 원하는 리소스 제한을 지정해야 합니다.
제한 사항
정적 컨테이너를 활성화하는 경우:
백업 디먼 서비스 가 에서 바이너리를 다운로드 하려고 시도하지 않도록 MongoDB 쿼리 MongoDB Ops Manager 가능 백업을 비활성화 해야 하며, 이는 정적 컨테이너의 불변의 특성을 손상시킵니다.
MongoDB Ops Manager 를 사용하는 경우 버전 6.0.24만, 7.0.5 이상과 호환됩니다. Kubernetes Operator는 MongoDB Agent 사용자가 MongoDB Ops Manager 특정 배포서버 서버를 관리 하기 위해 선택한 버전에 따라 올바른 버전의 컨테이너 를 자동으로 사용합니다.
MongoDB Cloud Manager 를 사용하면 Kubernetes Operator가 MongoDB Cloud Manager 에서
agentVersion
엔드포인트를 호출할 수 없기 때문에 MongoDB Agent 버전이 최신 버전의 MongoDB Cloud Manager 와 호환되지 않을 수 있습니다. MongoDB Cloud Manager 를 사용하여 MongoDB Agent 를 최신 상태로 유지하려면 다음 작업 중 하나를 수행하면 됩니다.StatefulSet 을 재정의하여 MongoDB 리소스 사양 에서 호환되는 MongoDB Agent 버전을 지정합니다. MongoDB Agent 용 컨테이너 이미지입니다. 예를 예시 다음과 같습니다.
podSpec: podTemplate: spec: containers: - name: mongodb-agent-ubi Image: 12.0.29.7785-1_1.24.0 Kubernetes Operator를 최신 버전으로 업그레이드 하면 MongoDB Agent가 자동으로 업데이트됩니다.
Atlas MongoDB 버전 업그레이드 마지막 순서에서 첫 번째 순서로 모든 파드를 순차적으로 재시작하며, 파드 수에 따라 더 많은 투표 가 발생할 수 있습니다. 이는 롤링 재시작을 trigger 하는 모든 업데이트에 해당됩니다.
MongoDB Agent의 상태 에서는 업그레이드가 발생했는지 여부를 확인할 수 MongoDB database 없습니다. 업그레이드 후 Kubernetes가 Pods를 회전하면 MongoDB Agent가 상태 파일을 교체하므로 상태에서 버전 변경이 발생했는지 알 수 없고 현재 상태만 알 수 있습니다.
정적 컨테이너로 마이그레이션
비정적 컨테이너에서 정적 컨테이너로 마이그레이션하려면 아래 단계에 따라 MongoDB Agent 환경 변수를 설정하고 정적 컨테이너를 활성화하세요. 설치 또는 업그레이드 중에 정적 컨테이너를 활성화할 수도 있습니다.
제한 사항을 검토합니다.
MongoDB Agent 이미지에 대한 환경 변수를 설정합니다.
Kubernetes Operator 구성 파일 에서 MDB_AGENT_IMAGE_REPOSITORY 환경 변수를 정의하여 Kubernetes Operator가 정적 컨테이너용 MongoDB Agent 이미지를 다운로드하는 리포지토리 를 지정합니다.
Kubernetes Operator Helm 차트 에서 레지스트리를 정의합니다. 에이전트 및 에이전트 .name 을 사용하여 Kubernetes Operator가 정적 컨테이너용 MongoDB Agent 이미지를 다운로드하는 리포지토리 를 지정합니다.
파일 을 저장하고 적용 합니다.
변경 사항을 저장한 후 구성을 다시 적용합니다.
OpenShift 없이 Kubernetes 를 사용하는 경우 다음을 실행.
kubectl apply -f mongodb-enterprise.yaml
OpenShift 와 함께 Kubernetes 를 사용하는 경우:
oc apply -f mongodb-enterprise-openshift.yaml
helm upgrade enterprise-operator mongodb/enterprise-operator \ --set registry.pullPolicy='IfNotPresent'
이렇게 하면 배포에 있는 모든 파드의 롤링 재시작이 시작됩니다.
정적 컨테이너를 활성화합니다.
아래에서 적절한 탭 을 선택하여 기존 배포를 포함한 모든 MongoDB 배포에 대한 정적 컨테이너를 한 번에 활성화 하거나 한 번에 하나의 배포서버 를 활성화할 수 있습니다.
Kubernetes 연산자 구성 파일 에서 MDB_DEFAULT_ARCHITECTURE 또는 연산자 .mdbDefaultarchitecture 를 설정하다 합니다. static
로 설정합니다.
특정 배포서버 에 대한 MongoDB 리소스 사양 에서 metadata.annotations.mongodb.com/v1.architecture
주석을 static
로 설정하다 합니다.
파일 을 저장하고 적용 합니다.
변경 사항을 저장한 후 구성을 다시 적용합니다.
OpenShift 없이 Kubernetes 를 사용하는 경우 다음을 실행.
kubectl apply -f <my-config-file>.yaml
OpenShift 와 함께 Kubernetes 를 사용하는 경우:
oc apply -f <my-config-file>.yaml
helm upgrade enterprise-operator mongodb/enterprise-operator \ --set <setting_1> --set <setting_2> --set operator.mdbDefaultArchitecture="static"
Kubernetes Operator가 StatefulSet 를 업데이트합니다. 이전에 MongoDB Agent 와 MongoDB database 를 모두 managed 했던 단일 컨테이너 에서 MongoDB MongoDB Agent 용 컨테이너와 MongoDB MongoDB database 용 컨테이너라는 두 개의 별도 컨테이너가 있는 새로운 구성으로 전환 MongoDB deployment . 이 업데이트 는 롤링 재시작 을 시작합니다.
비정적 컨테이너로 마이그레이션
정적 컨테이너에서 비정적 컨테이너로 마이그레이션하려면 아래 단계에 따라 정적 컨테이너를 비활성화하세요. 설치 또는 업그레이드 중에 정적 컨테이너를 비활성화할 수도 있습니다.
정적 컨테이너를 비활성화합니다.
기존 배포를 포함한 모든 MongoDB 배포에 대한 정적 컨테이너를 한 번에 비활성화하거나 한 번에 하나의 배포를 비활성화하려면 아래에서 적절한 탭을 선택합니다.
Kubernetes 연산자 구성 파일 에서 MDB_DEFAULT_ARCHITECTURE 또는 연산자 .mdbDefaultarchitecture 를 설정하다 합니다. non-static
로 설정합니다.
특정 배포서버 에 대한 MongoDB 리소스 사양 에서 metadata.annotations.mongodb.com/v1.architecture
주석을 non-static
로 설정하다 합니다.
파일 을 저장하고 적용 합니다.
변경 사항을 저장한 후 구성을 다시 적용합니다.
OpenShift 없이 Kubernetes 를 사용하는 경우 다음을 실행.
kubectl apply -f <my-config-file>.yaml
OpenShift 와 함께 Kubernetes 를 사용하는 경우:
oc apply -f <my-config-file>.yaml
helm upgrade enterprise-operator mongodb/enterprise-operator \ --set <setting_1> --set <setting_2> --set operator.mdbDefaultArchitecture="non-static"
Kubernetes Operator는 StatefulSet 를 대체합니다. MongoDB 배포의 이미지를 생성하고 배포에 있는 모든 파드의 롤링 재시작을 시작합니다.