AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。

cert-manager 統合を設定する

cert-manager は、 Kubernetesのセキュリティ証明書の管理を簡素化および自動化します。次の手順では、cert-manager を構成してMongoDB Kubernetes Operator リソースの証明書を生成する方法について説明します。

オブジェクトを使用してレプリカセットを配置するには、以下を行う必要があります。

注意

Kubernetes の単一クラスター配置でシークレットが保存されないようにするには、 すべてのシークレットをシークレットストレージツールに移行 します。複数のKubernetesクラスターでの配置では、HashiCorp Vault などのシークレットストレージツールへのシークレットの保存はサポートされていません。

  • 次のコンポーネントごとに 1 つのTLS証明書を生成します。

    • レプリカセット。 レプリカセットのノードをホストする各 Kubernetes ポッドのSANを証明書に追加することを確認します。

      TLS証明書では、各ポッドのSANは次の形式を使用する必要があります。

      <pod-name>.<metadata.name>-svc.<namespace>.svc.cluster.local

      重要

      If you're using an ACME based service provider such as Let's Encrypt to issue TLS certificates, the provider might prohibit you from adding the Pod's default FQDNs (*.svc.cluster.local) to SANs in the certificate.

      ACMEベースの証明書を使用するには、レプリカセット リソースの証明書を構成する必要があります。 詳細については、手順の 「 ACMEベースのTLS証明書」 に関するステップを参照してください。

    • プロジェクトの MongoDB Agent。 MongoDB Agent 証明書については、次の要件を満たしていることを確認してください。

      • TLS証明書のコモン ネームが空ではない。

      • 各TLS証明書内の組織と組織単位の組み合わせは、レプリカセット ノードのTLS証明書内の組織と組織単位とは異なります。

  • CA 証明書ファイルを用意し、ca-pem と名付ける必要があります。

  • TLS証明書の署名に使用したキーが必要です。

重要

Kubernetes 演算子は kubernetes.io/tls を使用します。MongoDB Ops Manager および MongoDB リソース用の TLS 証明書および秘密キーを保存する秘密。Kubernetes 演算子1 17バージョン..0 以降、Kubernetes 演算子 は Opaque secrets. として保存されている連結された PEM ファイルをサポートしません。

1

注意

次の手順では、カスタム CA と、対応する tls.key 秘密キーおよび tls.crt 署名付き証明書がすでに作成されていることを前提としています。

CAデータを保存するためのシークレットを作成します。

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

    cat <custom_ca_cert.pem> cert2.crt cert3.crt cert4.crt >> mms-ca.crt

    注意

    • プレースホルダー <custom_ca_cert.pem> を カスタム CA 証明書 PEMファイルに置き換えます。

    • MongoDBのサーバー証明書は含めることができないため、cert1.crtファイルを含めないでください。

  3. MongoDB Ops Managerの ConfigMap を作成します。

    kubectl create configmap om-http-cert-ca --from-file="mms-ca.crt"
3
  1. CA シークレットを参照する CA 発行者を作成します。

    apiVersion: cert-manager.io/v1kind: Issuermetadata: name: ca-issuer namespace: <namespace>spec: ca: secretName: ca-key-pair
  2. 発行者が準備できていることを確認します。

    kubectl get issuer ca-issuer

    出力のREADYフィールドの値はTrueである必要があります。

4

CA を含む ConfigMap を作成します。には、ca-pem と mms-ca.crt の 2 つのフィールドが必要です。両方ともユーザーの 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/v1kind: Certificatemetadata: name: my-replica-set-certificate namespace: mongodbspec: 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

    シャーディングされたクラスターの場合、 Atlas App Services は 1 つの証明書を作成する必要があります。シャーディングされたクラスターの構成の詳細については、シャードクラスタの配置 を参照してください。

  2. MongoDB Agent証明書を作成します。

    注意

    spec.issuerRef.nameパラメータは過去に作成されたCA ConfigMap を参照します。

    apiVersion: cert-manager.io/v1kind: Certificatemetadata: name: agent-certs namespace: mongodbspec: 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/v1kind: MongoDBmetadata: name: my-replica-set namespace: mongodbspec: type: ReplicaSet members: 3 version: 8.0.0 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/v1kind: Certificatemetadata: name: cert-for-ops-manager namespace: mongodbspec: 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/v1kind: Certificatemetadata: name: appdb-om-with-https-db-cert namespace: mongodbspec: 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/v1kind: MongoDBOpsManagermetadata: name: om-with-https namespace: mongodbspec: adminCredentials: ops-manager-admin-secret version: "8.0.0" applicationDatabase: members: 3 security: certsSecretPrefix: appdb tls: ca: ca-issuer version: 8.0.0-ubi8 replicas: 1 security: certsSecretPrefix: mdb tls: ca: ca-issuer

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

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

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

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