인증서 관리자 통합 설정
이 페이지의 내용
cert-manager 는 Kubernetes 용 보안 인증서 관리 를 간소화하고 자동화합니다. 다음 절차에서는 cert-manager
를 구성하여 MongoDB Kubernetes Operator 리소스에 대한 인증서를 생성하는 방법을 설명합니다.
절차
사용자 지정 CA 인증서에 인증서를 추가합니다.
MongoDB Ops Manager TLS 인증서가 사용자 지정 CA 에서 서명한 경우, CA 인증서에는 MongoDB Ops Manager 백업 데몬이 인터넷에서 MongoDB 바이너리를 다운로드할 수 있도록 허용하는 추가 인증서도 포함되어 있어야 합니다. TLS 인증서를 만들려면 ConfigMap 을 만듭니다.CA 인증서를 보유합니다:
중요
Kubernetes 연산자는 ConfigMap에서 Ops Manager 인증서의 이름이 mms-ca.crt
이어야 합니다.
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}' Ops Manager용 CA 의 인증서 파일을 이전 단계에서 얻은
downloads.mongodb.com
의 전체 TLS 인증서 체인과 연결합니다.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 리소스 인증서를 생성합니다. 다음 예제에서는
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 에 대해 하나의 인증서를 생성해야 합니다. . 샤딩된 클러스터 구성에 학습 보려면 샤드 클러스터배포를 참조하세요.
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를 사용하여 Ops Manager 및 AppDB에 대한 인증서 만들기
Ops Manager 리소스를 보호하려면 먼저 Ops Manager 및 AppDB에 대한 인증서를 생성한 다음 Ops Manager 리소스를 생성해야 합니다.
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 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.duration
및spec.renewBefore
필드에 따라 만료됩니다.인증서가 포함된 비밀을 삭제합니다. 이 경우 cert-manager는 인증서 사용자 지정 리소스의 구성에 따라 시크릿을 다시 생성합니다.
인증서 사용자 지정 리소스의 구성을 변경합니다. 이 경우 cert-manager는 구성 변경을 감지하면 인증서가 포함된 시크릿을 다시 생성합니다.