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 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 리포지토리 를 사용하지만 Kubernetes 노드 에 대해 구성한 경우 자체 레지스트리를 사용할 수 있습니다. .

정적 컨테이너와 비정적 컨테이너의 아키텍처는 크게 다르며, 컨테이너 간에 마이그레이션하는 데 여러 단계가 필요합니다. 자세한 내용은 정적 컨테이너 로 마이그레이션 및 비정적 컨테이너로 마이그레이션을 참조하세요.

기본 비정적 컨테이너 아키텍처는 빈 셸 컨테이너를 MongoDB Agent 부트스트랩한다고 가정하고, 를 다운로드하여 시작한 다음,mongod mongosh Cloud Manager 또는 MongoDB Ops Manager에서 및 에 대한 바이너리를 다운로드합니다.

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

정적 컨테이너 아키텍처는 Kubernetes 의공유 네임스페이스 기능 을 사용합니다. MongoDB Agent 를 별도의 프로세스 로 실행 mongod 하여 전체 라이프사이클을 제어하고 네트워크를 통해 파일을 다운로드하지 않도록 합니다.

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

정적 컨테이너를 사용하는 경우 쿼리 MongoDB Ops Manager 가능 백업을 사용하지 않는 한 로컬 모드 또는 원격 모드 에서 실행 를 구성할 필요가 없습니다. 정적 컨테이너 아키텍처에서 에이전트 및 mongod 의 바이너리에는 자체 컨테이너 이미지가 있으며 이는 MongoDB Ops Manager 에서 다운로드되지 않습니다.

쿼리 가능 백업은 예외로, 비정적 컨테이너 아키텍처에서는 기본값 백업 디먼 이 백업된 모든 버전에 대해 MongoDB Server 바이너리를 다운로드하고 실행하기 때문입니다. 이 기본값 MongoDB 동작은 백업 디먼 을 실행 하는 데 사용되는 컨테이너의 완전한 정적 특성을 손상시킵니다. 쿼리 가능 백업을 사용하는 경우에도 로컬 또는 원격 모드 를 사용하여 관련 MongoDB Server 바이너리를 호스팅하다 해야 합니다. 학습 내용은 로컬 모드를 사용 MongoDB Ops Manager MongoDB Ops Manager 리소스 구성을 참조하세요.

이전에 원격 또는 로컬 모드 를 사용한 적이 있고 쿼리 가능 백업을 사용하지 않으려는 경우 다음을 mongodb-enterprise-server 수행하여 이미지 가 노드 에서 다운로드할 수 있습니다. Pods에서 사용합니다.

  1. Kubernetes 노드에 대한 내부 컨테이너 레지스트리를 구성합니다.

    노드 Quay.io 에서 이미지를 다운로드 합니다. 로컬 컨테이너 레지스트리를 사용하지 않는 한

  2. mongodb-enterprise-server 이미지를 다운로드하여 추가합니다.

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

  • 백업 데몬 서비스 가 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 Ops Manager 경우 쿼리 가능 백업을 사용하지 않는 한 로컬 모드 또는 원격 모드 에서 실행 를 구성할 필요가 없습니다. 학습 내용은 로컬 및 원격 모드를 참조하세요.

정적 컨테이너는 런타임에 MongoDB 바이너리를 다운로드 하지 않습니다. 대신 mongodb-enterprise-server 의 이미지를 사용합니다. Quay.io 리포지토리. 변경 사항에 학습 보려면 6 단계를 참조하세요.

배포서버 에서 정적 컨테이너 를 사용하고 있는지 확인하는 방법에는 여러 가지가 있습니다. 학습 보려면 7 단계를 참조하세요.

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

1
2

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

쿼리 가능 백업 을 사용하려면 MongoDB Ops Manager 로컬 모드 또는 원격 모드 를 사용하도록 리소스 를 구성해야 사용 중인 모든 버전의 바이너리를 에서 가져올 수 MongoDB Ops Manager 있습니다.

3

정적 컨테이너 아키텍처와 함께 사용되는 init 컨테이너는 없습니다. init 컨테이너 에 대한 재정의가 있는 경우 비정적 컨테이너에서 정적 컨테이너로의 마이그레이션 이 실패합니다.

MongoDB MongoDB 리소스 사양 또는 MongoDB Ops MongoDB Ops Manager Manager 리소스 사양에서 초기화 컨테이너에 대한 StatefulSet 재정의를 제거합니다. 예를 예시 initContainers 에 대해 다음 설정 중 하나가 구성되지 않았는지 확인합니다.

4

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

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

5

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

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'

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

6

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

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

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

7

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

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

정적 컨테이너 마이그레이션 하면 다음 변경 사항이 적용.

  • Kubernetes 노드 구성된 컨테이너 레지스트리를 사용하여 다운로드를 수행합니다.

  • 모니터링 에이전트 와 자동화 에이전트 버전이 일치합니다.

  • 에이전트 대신 Kubernetes Operator가 MongoDB 업그레이드를 처리합니다.

  • Kubernetes Operator는 기존 이미지를 대체하므로 롤링 재시작 이 발생합니다.

8
  • 다음 변수 중 하나의 값을 확인하며, 이 변수는 반드시 static 로 설정하다 해야 합니다.

    MDB_DEFAULT_ARCHITECTURE
    모든 배포에 사용할 수 있는 변수입니다.
    metadata.annotations[mongodb.com/v1.architecture]
    배포별 변수입니다.
  • 데이터베이스 배포 를 확인하여 두 개의 개별 이미지( 에이전트 MongoDB 용)의 사용량을 확인하고 init 컨테이너가 배포되지 않았는지 확인합니다.

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

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

돌아가기

호환성