Docs Menu
Docs Home
/
MongoDB Enterprise Kubernetes 연산자
/ /

컨테이너 이미지

이 페이지의 내용

  • 정적 컨테이너(공개 미리 보기)
  • 아키텍처
  • 제한 사항
  • 정적 컨테이너로 마이그레이션
  • 비정적 컨테이너로 마이그레이션

Kubernetes 연산자를 설치하면 Quay.io 컨테이너 레지스트리에서 이미지를 가져옵니다. Kubernetes Operator 이미지는 Red Hat UBI 8 운영 체제를 기반으로 합니다. MongoDB 는 최신 운영 체제 및 지원 라이브러리 업데이트를 위해 매일 Kubernetes Operator 이미지를 재구축합니다.

공식 이미지는 다음과 같은 이점을 제공합니다.

  • 최신 업스트림 취약점 수정을 위해 매일 재구성됩니다.

  • MongoDB는 이를 테스트, 유지 관리, 지원합니다.

각 이미지에 대해 사용 가능한 모든 버전을 보려면 다음 링크를 참조하세요.

이미지 이름
설명

MongoDB Agent 이미지.

정적 컨테이너 및 애플리케이션 데이터베이스에 사용되는 Enterprise MongoDB 이미지입니다.

initContainer 이미지는 애플리케이션 데이터베이스 시작 스크립트와 준비성 프로브를 포함합니다.

비정적 컨테이너에 사용되는 MongoDB 데이터베이스 환경 이미지입니다. 정적 및 비정적 컨테이너에 학습 보려면 정적 컨테이너(공개 미리 보기)를 참조하세요.

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에서 및 에 대한 바이너리를 다운로드합니다.

MongoDB Enterprise Kubernetes Operator를 사용하여 구성된 비정적 컨테이너가 있는 MongoDB 배포의 상위 수준 아키텍처를 보여주는 다이어그램입니다.
클릭하여 확대

정적 컨테이너 아키텍처는 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 Enterprise Kubernetes Operator 다이어그램입니다.
클릭하여 확대

정적 컨테이너를 활성화하는 경우:

  • 백업 데몬 서비스 가 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 환경 변수를 설정하고 정적 컨테이너를 활성화하세요. 설치 또는 업그레이드 중에 정적 컨테이너를 활성화할 수도 있습니다.

1
2

쿼리 가능 백업 비활성화의 절차를 따르세요.

3

Kubernetes Operator 구성 파일 에서 MDB_AGENT_IMAGE_REPOSITORY 환경 변수를 정의하여 Kubernetes Operator가 정적 컨테이너용 MongoDB Agent 이미지를 다운로드하는 리포지토리 를 지정합니다.

Kubernetes Operator Helm 차트 에서 레지스트리를 정의합니다. 에이전트에이전트 .name 을 사용하여 Kubernetes Operator가 정적 컨테이너용 MongoDB Agent 이미지를 다운로드하는 리포지토리 를 지정합니다.

4

변경 사항을 저장한 후 구성을 다시 적용합니다.

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'

이렇게 하면 배포에 있는 모든 파드의 롤링 재시작이 시작됩니다.

5

아래에서 적절한 탭 을 선택하여 기존 배포를 포함한 모든 MongoDB 배포에 대한 정적 컨테이너를 한 번에 활성화 하거나 한 번에 하나의 배포서버 를 활성화할 수 있습니다.

Kubernetes 연산자 구성 파일 에서 MDB_DEFAULT_ARCHITECTURE 또는 연산자 .mdbDefaultarchitecture 를 설정하다 합니다. static 로 설정합니다.

특정 배포서버 에 대한 MongoDB 리소스 사양 에서 metadata.annotations.mongodb.com/v1.architecture 주석을 static 로 설정하다 합니다.

6

변경 사항을 저장한 후 구성을 다시 적용합니다.

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 . 이 업데이트 는 롤링 재시작 을 시작합니다.

정적 컨테이너에서 비정적 컨테이너로 마이그레이션하려면 아래 단계에 따라 정적 컨테이너를 비활성화하세요. 설치 또는 업그레이드 중에 정적 컨테이너를 비활성화할 수도 있습니다.

1

기존 배포를 포함한 모든 MongoDB 배포에 대한 정적 컨테이너를 한 번에 비활성화하거나 한 번에 하나의 배포를 비활성화하려면 아래에서 적절한 탭을 선택합니다.

Kubernetes 연산자 구성 파일 에서 MDB_DEFAULT_ARCHITECTURE 또는 연산자 .mdbDefaultarchitecture 를 설정하다 합니다. non-static 로 설정합니다.

특정 배포서버 에 대한 MongoDB 리소스 사양 에서 metadata.annotations.mongodb.com/v1.architecture 주석을 non-static 로 설정하다 합니다.

2

변경 사항을 저장한 후 구성을 다시 적용합니다.

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 배포의 이미지를 생성하고 배포에 있는 모든 파드의 롤링 재시작을 시작합니다.

돌아가기

호환성