원격 모드를 사용하도록 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 객체 원격 모드를 활성화합니다.
절차
를 네임스페이스를 기본값으로 kubectl
구성합니다.
아직 실행하지 않았다면 다음 명령을 실행하여 생성한 네임스페이스에서 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>
ConfigMap 만들기 Nginx의 경우.
이 튜토리얼의 ConfigMap은 다음과 같이 Nginx를 구성합니다.
Kubernetes cluster의 노드의 포트
80
에서 수신 대기 중인localhost
이라는 이름의 HTTP 서버를 실행하고특정 리소스에 대한 HTTP 요청을 MongoDB Server 및 MongoDB database Database Tools 설치 아카이브를 제공하는 위치로 라우팅합니다.
다음 예제 Nginx ConfigMap을 텍스트 편집기에 붙여넣습니다.
1 2 apiVersion: v1 3 kind: ConfigMap 4 metadata: 5 name: nginx-conf 6 data: 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 ... 이 파일을
.yaml
파일 확장자로 저장합니다.생성한 ConfigMap 파일에서 다음
kubectl
명령을 호출하여 Nginx ConfigMap을 생성합니다.kubectl apply -f <nginix-configmap>.yaml
Kubernetes cluster에 Nginx를 배포합니다.
이 튜토리얼의 Nginx 리소스 구성은 다음과 같습니다.
하나의 Nginx 복제본을 배포합니다.
MongoDB 서버 및 MongoDB 데이터베이스 도구 설치 아카이브를 저장하기 위한 볼륨 마운트를 생성합니다.
init 컨테이너를
curl
정의합니다. 명령을 사용하여 Kubernetes 클러스터에 배포한 MongoDB 데이터베이스 리소스에 Nginx가 제공하는 설치 아카이브를 다운로드합니다.
Kubernetes 서비스를 생성하여 cluster의 다른 파드에서 Nginx에 액세스할 수 있도록 합니다.
이 튜토리얼의 서비스는 80
포트를 통해 Kubernetes cluster 내 다른 노드의 트래픽에 Nginx를 노출합니다. 이렇게 하면 Kubernetes 연산자를 사용하여 배포하는 MongoDB 데이터베이스 리소스 포드가 Nginx에서 설치 아카이브를 다운로드할 수 있습니다.
다음 명령을 실행하여 Nginx 배포서버에 서비스를 생성합니다.
다음 예시 서비스를 텍스트 편집기에 붙여넣습니다.
1 2 apiVersion: v1 3 kind: Service 4 metadata: 5 name: nginx-svc 6 labels: 7 app: nginx 8 spec: 9 ports: 10 - port: 80 11 protocol: TCP 12 selector: 13 app: nginx 14 ... 이 파일을
.yaml
파일 확장자로 저장합니다.생성한 서비스 파일에서 다음
kubectl
명령을 호출하여 서비스를 생성합니다.kubectl apply -f <nginix-service>.yaml
이 Ops Manager 리소스의 강조 표시된 필드를 복사하고 업데이트합니다.
강조 표시된 섹션에서는 다음과 같은 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 2 apiVersion: mongodb.com/v1 3 kind: MongoDBOpsManager 4 metadata: 5 name: ops-manager-localmode 6 spec: 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 ...
복사한 예시 섹션을 기존 Ops Manager 리소스에 붙여넣습니다.
원하는 텍스트 편집기를 열고 객체 를 붙여넣습니다. 사양을 리소스 파일의 적절한 위치에 추가합니다.
Ops Manager 인스턴스의 상태를 추적합니다.
Ops Manager 리소스의 상태를 확인하려면 다음 명령을 호출합니다.
kubectl get om -o yaml -w
리소스 배포 상태에 대한 자세한 내용 은 Kubernetes Operator 문제 해결을 참조하세요.
Ops Manager 리소스가 Pending
단계를 완료한 후 이 명령은 다음과 유사한 출력을 반환합니다.
1 status: 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 을 만들 때 이 값을 사용합니다. 단계의 뒷부분에 있습니다.
MongoDB database 리소스를 배포합니다.
아직 완료하지 않았다면 다음 전제 조건을 완료하세요.
Ops Manager를 배포한 것과 동일한 네임스페이스에 MongoDB 데이터베이스 리소스 를 배포합니다. 다음을 확인합니다.
리소스의
spec.opsManager.configMapRef.name
를 ConfigMap의metadata.name
와 일치시킵니다.리소스의
spec.credentials
을(를) Ops Manager 프로그래밍 방식 API 키 쌍을 포함하여 생성한 시크릿의 이름과 일치시킵니다.
Kubernetes Operator로 생성한 MongoDB 데이터베이스 리소스 컨테이너에서 실행되는 MongoDB 에이전트는 인터넷이 아닌 Nginx를 통해 Ops Manager에서 설치 아카이브를 다운로드합니다.