문서 메뉴
문서 홈
/
MongoDB Enterprise Kubernetes 연산자
/

원격 모드를 사용하도록 Ops Manager 리소스 구성

이 페이지의 내용

  • 전제 조건 및 고려 사항
  • 절차
  • 네임스페이스로 기본 설정하도록 kubectl 을 구성합니다.
  • ConfigMap 만들기 Nginx의 경우.
  • Kubernetes cluster에 Nginx를 배포합니다.
  • Kubernetes 서비스를 생성하여 cluster의 다른 파드에서 Nginx에 액세스할 수 있도록 합니다.
  • 이 Ops Manager 리소스의 강조 표시된 필드를 복사하고 업데이트합니다.
  • 복사한 예시 섹션을 기존 Ops Manager 리소스에 붙여넣습니다.
  • Ops Manager 구성 파일을 저장합니다.
  • Ops Manager 배포에 변경 사항을 적용합니다.
  • Ops Manager 인스턴스의 상태를 추적합니다.
  • MongoDB database 리소스를 배포합니다.

기본 구성에서 MongoDB 에이전트와 백업 디먼은 인터넷을 통해 MongoDB, Inc.에서 MongoDB 설치 아카이브에 액세스합니다.

Kubernetes cluster의 노드가 인터넷에 액세스할 수 없는 경우 Kubernetes Operator를 사용하여 원격 모드 에서 실행되도록 Ops Manager를 구성할 수 있습니다. 백업 디먼 및 managed MongoDB 리소스는 Kubernetes cluster에 배포된 로컬 server 또는 S3 호환 스토어의 HTTP 엔드포인트에 대한 다운로드 요청을 프록시하는 Ops Manager에서만 설치 아카이브를 다운로드합니다.

이 절차에서는 MongoDB 설치 아카이브를 호스팅하기 위해 Kubernetes cluster에 Nginx HTTP server를 배포하는 방법을 설명합니다.

Ops Manager 리소스를 배포합니다. 다음 절차는 Ops Manager Kubernetes 객체 원격 모드를 활성화합니다.

1

아직 실행하지 않았다면 다음 명령을 실행하여 생성한 네임스페이스에서 kubectl 명령을 모두 실행합니다 .

참고

다중 Kubernetes 클러스터 MongoDB deployment에서 MongoDB Ops Manager 리소스를 배포하는 경우:

  • context을 중앙 클러스터의 이름(예: kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME")으로 설정합니다.

  • --namespace 를 다중 Kubernetes 클러스터 MongoDB 배포에 사용한 것과 동일한 범위 (예: kubectl config --namespace "mongodb" 로 설정합니다.

kubectl config set-context $(kubectl config current-context) --namespace=<metadata.namespace>
2

이 튜토리얼의 ConfigMap은 다음과 같이 Nginx를 구성합니다.

  • Kubernetes cluster의 노드의 포트 80 에서 수신 대기 중인 localhost 이라는 이름의 HTTP 서버를 실행하고

  • 특정 리소스에 대한 HTTP 요청을 MongoDB Server 및 MongoDB database Database Tools 설치 아카이브를 제공하는 위치로 라우팅합니다.

  1. 다음 예제 Nginx ConfigMap을 텍스트 편집기에 붙여넣습니다.

    1---
    2apiVersion: v1
    3kind: ConfigMap
    4metadata:
    5 name: nginx-conf
    6data:
    7 nginx.conf: |
    8 events {}
    9 http {
    10 server {
    11 server_name localhost;
    12 listen 80;
    13 location /linux/ {
    14 alias /mongodb-ops-manager/mongodb-releases/linux/;
    15 }
    16 location /tools/ {
    17 alias /tools/;
    18 }
    19 }
    20 }
    21...
  2. 이 파일을 .yaml 파일 확장자로 저장합니다.

  3. 생성한 ConfigMap 파일에서 다음 kubectl 명령을 호출하여 Nginx ConfigMap을 생성합니다.

    kubectl apply -f <nginix-configmap>.yaml
3

이 튜토리얼의 Nginx 리소스 구성은 다음과 같습니다.

  • 하나의 Nginx 복제본을 배포합니다.

  • MongoDB 서버 및 MongoDB 데이터베이스 도구 설치 아카이브를 저장하기 위한 볼륨 마운트를 생성합니다.

  • init 컨테이너를 curl 정의합니다. 명령을 사용하여 Kubernetes 클러스터에 배포한 MongoDB 데이터베이스 리소스에 Nginx가 제공하는 설치 아카이브를 다운로드합니다.

4

이 튜토리얼의 서비스는 80 포트를 통해 Kubernetes cluster 내 다른 노드의 트래픽에 Nginx를 노출합니다. 이렇게 하면 Kubernetes 연산자를 사용하여 배포하는 MongoDB 데이터베이스 리소스 포드가 Nginx에서 설치 아카이브를 다운로드할 수 있습니다.

다음 명령을 실행하여 Nginx 배포서버에 서비스를 생성합니다.

  1. 다음 예시 서비스를 텍스트 편집기에 붙여넣습니다.

    1---
    2apiVersion: v1
    3kind: Service
    4metadata:
    5 name: nginx-svc
    6 labels:
    7 app: nginx
    8spec:
    9 ports:
    10 - port: 80
    11 protocol: TCP
    12 selector:
    13 app: nginx
    14...
  2. 이 파일을 .yaml 파일 확장자로 저장합니다.

  3. 생성한 서비스 파일에서 다음 kubectl 명령을 호출하여 서비스를 생성합니다.

    kubectl apply -f <nginix-service>.yaml
5

강조 표시된 섹션에서는 다음과 같은 Ops Manager 구성 설정을 사용합니다.

  • automation.versions.source: remote spec.configuration 에서 원격 모드를 활성화합니다.

  • automation.versions.download.baseUrl spec.configuration 에서 MongoDB 설치 아카이브를 제공하는 HTTP 리소스의 기본 URL을 제공합니다.

    이 줄을 업데이트하여 <namespace> 를 Kubernetes 연산자로 리소스를 배포할 네임스페이스로 바꾸세요.

  • automation.versions.download.baseUrl.allowOnlyAvailableBuilds: "false" spec.configuration 에서 엔터프라이즈 빌드에 문제가 없도록 합니다.

1---
2apiVersion: mongodb.com/v1
3kind: MongoDBOpsManager
4metadata:
5 name: ops-manager-localmode
6spec:
7 replicas: 1
8 version: "6.0.0"
9 adminCredentials: ops-manager-admin-secret
10 configuration:
11 # this enables remote mode in Ops Manager
12 automation.versions.source: remote
13 automation.versions.download.baseUrl: "http://nginx-svc.<namespace>.svc.cluster.local:8080"
14
15 backup:
16 enabled: false
17
18 applicationDatabase:
19 members: 3
20...
6

원하는 텍스트 편집기를 열고 객체 를 붙여넣습니다. 사양을 리소스 파일의 적절한 위치에 추가합니다.

7
8

Ops Manager 리소스 정의의 파일 이름에 대해 다음 kubectl 명령을 호출합니다.

kubectl apply -f <opsmgr-resource>.yaml
9

Ops Manager 리소스의 상태를 확인하려면 다음 명령을 호출합니다.

kubectl get om -o yaml -w

리소스 배포 상태에 대한 자세한 내용 은 Kubernetes Operator 문제 해결을 참조하세요.

Ops Manager 리소스가 Pending 단계를 완료한 후 이 명령은 다음과 유사한 출력을 반환합니다.

1status:
2 applicationDatabase:
3 lastTransition: "2020-05-15T16:20:22Z"
4 members: 3
5 phase: Running
6 type: ReplicaSet
7 version: "4.4.5-ubi8"
8 backup:
9 phase: ""
10 opsManager:
11 lastTransition: "2020-05-15T16:20:26Z"
12 phase: Running
13 replicas: 1
14 url: http://ops-manager-localmode-svc.mongodb.svc.cluster.local:8080
15 version: "6.0.0"

리소스의 연결 URL 을 나타내는 status.opsManager.url 필드의 값을 복사합니다. ConfigMap 을 만들 때 이 값을 사용합니다. 단계의 뒷부분에 있습니다.

10
  1. 아직 완료하지 않았다면 다음 전제 조건을 완료하세요.

  2. Ops Manager를 배포한 것과 동일한 네임스페이스에 MongoDB 데이터베이스 리소스 를 배포합니다. 다음을 확인합니다.

    1. 리소스의 spec.opsManager.configMapRef.name 를 ConfigMap의 metadata.name 와 일치시킵니다.

    2. 리소스의 spec.credentials 을(를) Ops Manager 프로그래밍 방식 API 키 쌍을 포함하여 생성한 시크릿의 이름과 일치시킵니다.

Kubernetes Operator로 생성한 MongoDB 데이터베이스 리소스 컨테이너에서 실행되는 MongoDB 에이전트는 인터넷이 아닌 Nginx를 통해 Ops Manager에서 설치 아카이브를 다운로드합니다.

← 다음을 배포합니다.