cert-manager 統合を設定する
項目一覧
cert-manager は、 Kubernetesのセキュリティ証明書の管理を簡素化および自動化します。次の手順では、 cert-manager
を構成してMongoDB Kubernetes Operator リソースの証明書を生成する方法について説明します。
手順
カスタム CA 証明書に追加の証明書を追加します。
MongoDB Ops Manager TLS証明書がカスタムCAによって署名されている場合、 CA証明書には、 MongoDB Ops ManagerバックアップデーモンがインターネットからMongoDBバイナリをダウンロードできるようにする追加の証明書も含まれている必要があります。 TLS 証明書を作成するには、 ConfigMap を作成します CA 証明書を保持するには、以下が必要です。
重要
Kubernetes Operator では、ConfigMap 内のMongoDB Ops Manager証明書の名前が mms-ca.crt
である必要があります。
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}' の CA MongoDB Ops Managerの証明書ファイルと、前のステップで取得した からの TLS 証明書チェーン全体を連結します。
downloads.mongodb.com
cat cert2.crt cert3.crt cert4.crt >> mms-ca.crt ConfigMap を 作成するMongoDB Ops Manager の場合
kubectl create configmap om-http-cert-ca --from-file="mms-ca.crt"
MongoDB リソースの証明書を作成する
生成された証明書でMongoDBリソースを保護するには、リソース自体とMongoDB Agentの両方の証明書を作成する必要があります。
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 つの証明書を作成する必要があります 。シャーディングされたクラスターの構成の詳細については、「 シャーディングされたクラスターの配置 」を参照してください。
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 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
TLS を使用して MongoDB Ops Manager と AppDB の証明書を作成
MongoDB Ops Manager リソースを保護するには、まず MongoDB Ops Manager と AppDB の証明書を作成し、次に MongoDB Ops Manager リソースを作成する必要があります。
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 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 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 は証明書カスタム リソースの構成に従ってシークレットを再作成します。
証明書カスタム リソースの構成を変更します。 この場合、証明書マネージャーは、構成に対する変更を検出するときに、証明書を含むシークレットを再作成します。