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

인증서 관리자 통합 설정

이 페이지의 내용

  • 절차
  • CA 시크릿을 만듭니다.
  • 사용자 지정 CA 인증서에 추가 인증서를 추가합니다.
  • 인증서 관리자 CA 발급자 구성
  • CA ConfigMap 생성
  • MongoDB 리소스에 대한 인증서 만들기
  • TLS를 사용하여 Ops Manager 및 AppDB에 대한 인증서 만들기
  • 인증서 갱신

cert-manager Kubernetes의 보안 인증서 관리를 간소화하고 자동화합니다. 다음 절차에서는 cert-manager 를 구성하여 MongoDB Kubernetes Operator 리소스에 대한 인증서를 생성하는 방법을 설명합니다.

1

참고

다음 단계에서는 해당 tls.key 비공개 키 및 tls.crt 서명된 인증서와 함께 사용자 지정 CA 를 이미 생성했다고 가정합니다.

CA 데이터를 저장할 시크릿을 생성합니다.

apiVersion: v1
kind: Secret
metadata:
name: ca-key-pair
namespace: <namespace>
data:
tls.crt: <your-CA-certificate>
tls.key: <your-CA-private-key>
2

MongoDB Ops Manager TLS 인증서가 사용자 지정 CA 에서 서명한 경우, CA 인증서에는 MongoDB Ops Manager 백업 데몬이 인터넷에서 MongoDB 바이너리를 다운로드할 수 있도록 허용하는 추가 인증서도 포함되어 있어야 합니다. TLS 인증서를 만들려면 ConfigMap 을 만듭니다.CA 인증서를 보유합니다:

중요

Kubernetes 연산자는 ConfigMap에서 Ops Manager 인증서의 이름이 mms-ca.crt 이어야 합니다.

  1. downloads.mongodb.com 에서 Ops Manager에 대한 전체 TLS 인증서 체인을 얻습니다. 다음 openssl 명령은 체인의 인증서를 현재 작업 디렉토리에 .crt 형식으로 출력합니다.

    openssl s_client -showcerts -verify 2 \
    -connect downloads.mongodb.com:443 -servername downloads.mongodb.com < /dev/null \
    | awk '/BEGIN/,/END/{ if(/BEGIN/){a++}; out="cert"a".crt"; print >out}'
  2. Ops Manager용 CA 의 인증서 파일을 이전 단계에서 얻은 downloads.mongodb.com 의 전체 TLS 인증서 체인과 연결합니다.

    cat cert1.crt cert2.crt cert3.crt cert4.crt >> mms-ca.crt
  3. ConfigMap 만들기 MongoDB Ops Manager의 경우:

    kubectl create configmap om-http-cert-ca --from-file="mms-ca.crt"
3
  1. CA 시크릿을 참고하는 CA 발급자를 생성합니다.

    apiVersion: cert-manager.io/v1
    kind: Issuer
    metadata:
    name: ca-issuer
    namespace: <namespace>
    spec:
    ca:
    secretName: ca-key-pair
  2. 발급자가 준비되었는지 확인합니다:

    kubectl get issuer ca-issuer

    출력의 READY 필드 값은 True 이어야 합니다.

4

CA 를 포함하는 ConfigMap을 만듭니다. 여기에는 CA 인증서를 가리키는 두 개의 필드 ca-pemmms-ca.crt 이 있어야 합니다. <CA-certificate> 을(를) CA 인증서 경로로 바꿉니다.

kubectl create cm ca-issuer --from-file=ca-pem=<CA-certificate> \
--from-file=mms-ca.crt=<CA-certificate>
5

생성된 인증서로 MongoDB 리소스를 보호하려면 리소스 자체와 MongoDB Agent 모두에 대한 인증서를 생성해야 합니다.

  1. MongoDB 리소스 인증서를 생성합니다. 다음 예제에서는 my-replica-set 이라는 이름의 복제본 세트와 세 명의 멤버가 있다고 가정합니다.

    참고

    spec.issuerRef.name 매개변수는 이전에 생성된 CA ConfigMap을 참고합니다.

    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
    name: my-replica-set-certificate
    namespace: mongodb
    spec:
    dnsNames:
    - my-replica-set-0
    - my-replica-set-0.my-replica-set-svc.mongodb.svc.cluster.local
    - my-replica-set-1
    - my-replica-set-1.my-replica-set-svc.mongodb.svc.cluster.local
    - my-replica-set-2
    - my-replica-set-2.my-replica-set-svc.mongodb.svc.cluster.local
    duration: 240h0m0s
    issuerRef:
    name: ca-issuer
    renewBefore: 120h0m0s
    secretName: mdb-my-replica-set-cert
    usages:
    - server auth
    - client auth

    샤드 클러스터의 경우 각 StatefulSet 에 대해 하나의 인증서를 생성해야 합니다. . 샤드 클러스터 구성에 대해 자세히 알아보려면 샤드 클러스터 배포를 참조하세요.

  2. MongoDB Agent 인증서를 생성합니다.

    참고

    spec.issuerRef.name 매개변수는 이전에 생성된 CA ConfigMap을 참고합니다.

    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
    name: agent-certs
    namespace: mongodb
    spec:
    commonName: automation
    dnsNames:
    - automation
    duration: 240h0m0s
    issuerRef:
    name: ca-issuer
    renewBefore: 120h0m0s
    secretName: mdb-my-replica-set-agent-certs
    usages:
    - digital signature
    - key encipherment
    - client auth
    subject:
    countries:
    - US
    localities:
    - NY
    organizationalUnits:
    - a-1635241837-m5yb81lfnrz
    organizations:
    - cluster.local-agent
    provinces:
    - NY
  3. MongoDB 리소스를 생성합니다.

    참고

    spec.security.tls.ca 매개변수를 지정하지 않은 상태로 두면 기본값은 {replica-set}-ca 입니다.

    apiVersion: mongodb.com/v1
    kind: MongoDB
    metadata:
    name: my-replica-set
    namespace: mongodb
    spec:
    type: ReplicaSet
    members: 3
    version: 4.0.4-ent
    opsManager:
    configMapRef:
    name: my-project
    credentials: my-credentials
    security:
    certsSecretPrefix: mdb
    authentication:
    enabled: true
    modes:
    - X509
    tls:
    ca: ca-issuer
    enabled: true
6

Ops Manager 리소스를 보호하려면 먼저 Ops Manager 및 AppDB에 대한 인증서를 생성한 다음 Ops Manager 리소스를 생성해야 합니다.

  1. Ops Manager 인증서를 만듭니다.

    참고

    spec.issuerRef.name 매개변수는 이전에 생성된 CA ConfigMap을 참고합니다.

    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
    name: cert-for-ops-manager
    namespace: mongodb
    spec:
    dnsNames:
    - om-with-https-svc.mongodb.svc.cluster.local
    duration: 240h0m0s
    issuerRef:
    name: ca-issuer
    renewBefore: 120h0m0s
    secretName: mdb-om-with-https-cert
    usages:
    - server auth
    - client auth
  2. AppDB 인증서를 생성합니다.

    참고

    spec.issuerRef.name 매개변수는 이전에 생성된 CA ConfigMap을 참고합니다.

    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
    name: appdb-om-with-https-db-cert
    namespace: mongodb
    spec:
    dnsNames:
    - om-with-https-db-0
    - om-with-https-db-0.om-with-https-db-svc.mongodb.svc.cluster.local
    - om-with-https-db-1
    - om-with-https-db-1.om-with-https-db-svc.mongodb.svc.cluster.local
    - om-with-https-db-2
    - om-with-https-db-2.om-with-https-db-svc.mongodb.svc.cluster.local
    duration: 240h0m0s
    issuerRef:
    name: ca-issuer
    renewBefore: 120h0m0s
    secretName: appdb-om-with-https-db-cert
    usages:
    - server auth
    - client auth
  3. Ops Manager 리소스를 만듭니다:

    apiVersion: mongodb.com/v1
    kind: MongoDBOpsManager
    metadata:
    name: om-with-https
    namespace: mongodb
    spec:
    adminCredentials: ops-manager-admin-secret
    applicationDatabase:
    members: 3
    security:
    certsSecretPrefix: appdb
    tls:
    ca: ca-issuer
    version: 6.0.0-ubi8
    replicas: 1
    security:
    certsSecretPrefix: mdb
    tls:
    ca: ca-issuer

cert-manager는 다음과 같은 상황에서 인증서를 갱신합니다.

  • 인증서는 spec.durationspec.renewBefore 필드에 따라 만료됩니다.

  • 인증서가 포함된 비밀을 삭제합니다. 이 경우 cert-manager는 인증서 사용자 지정 리소스의 구성에 따라 시크릿을 다시 생성합니다.

  • 인증서 사용자 지정 리소스의 구성을 변경합니다. 이 경우 cert-manager는 구성 변경을 감지하면 인증서가 포함된 시크릿을 다시 생성합니다.

돌아가기

Kubernetes 연산자로 파일 시스템 백업 저장소 구성