Docs Menu
Docs Home
/
MongoDB Enterprise Kubernetes 演算子
/

cert-manager 統合を設定する

項目一覧

  • 手順
  • CAシークレットを作成します。
  • カスタムCA証明書に追加の証明書を追加します。
  • 証明書マネージャーCA発行者を構成する
  • CA ConfigMap の作成
  • MongoDB リソースの証明書を作成する
  • TLS を使用して MongoDB 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 Operator では、ConfigMap 内のMongoDB Ops Manager証明書の名前が mms-ca.crt である必要があります。

  1. MongoDB Ops Manager のTLS証明書チェーン全体をdownloads.mongodb.comから取得します。 次の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. CA MongoDB Ops Managerの証明書ファイルと、前のステップで取得した からの TLS 証明書チェーン全体を連結します。downloads.mongodb.com

    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 を作成します。 [] とmms-ca.crt ] のca-pemつのフィールドが必要であり、どちらもCA証明書を指しています。 <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 リソース証明書を作成します。 次の例では、3 つのノードを含む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

    シャーディングされたクラスターの場合、 ステートフル セットごとに 1 つの証明書を作成する必要があります 。シャーディングされたクラスターの構成の詳細については、「 シャーディングされたクラスターの配置 」を参照してください。

  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

MongoDB Ops Manager リソースを保護するには、まず MongoDB Ops Manager と AppDB の証明書を作成し、次に MongoDB Ops Manager リソースを作成する必要があります。

  1. MongoDB 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. MongoDB 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

証明書マネージャーは、次の状況で証明書を更新します。

  • 証明書は、spec.duration spec.renewBeforeフィールドと フィールドに従って期限切れになります。

  • 証明書を保持しているシークレットを削除します。 この場合、cert-manager は証明書カスタム リソースの構成に従ってシークレットを再作成します。

  • 証明書カスタム リソースの構成を変更します。 この場合、証明書マネージャーは、構成に対する変更を検出するときに、証明書を含むシークレットを再作成します。

戻る

Kubernetes Operator を使用したファイルシステムバックアップストアの構成