가상 머신에서 Kubernetes로 TLS 사용 복제본 세트를 마이그레이션할 때, 하나의 복제본 세트가 하나의 신뢰 도메인이 됩니다. Kubernetes 노드 인증서를 가상 머신 인증서에 서명한 동일한 인증 기관(CA)에서 발급합니다. 이것이 유일한 마이그레이션 관련 TLS 요구 사항입니다. Kubernetes 연산자용 일반적인 TLS 문서에서는 TLS 구성에 대한 그 외 모든 것을 다루고 있습니다. CA 불일치로 인해 시뮬 실행이 실패합니다. 이는 원래 그렇게 설계되어 있습니다. 드라이 런이 이러한 실패를 발견하는 방법을 학습하려면, 드라이 런으로 마이그레이션 준비 예상 검증을 참조하세요.
중요
이 페이지의 필드는 마이그레이션에만 사용됩니다. 필드 설명에 달리 명시되어 있지 않는 한 신규 Kubernetes 연산자 배포서버에 설정하지 마십시오.
이 작업에 대하여
인증서 발급 방법, Secrets 및 ConfigMaps 구조화 방법, MongoDB 커스텀 리소스에서 일반 TLS 설정을 구성하는 방법에 대한 자세한 내용은 다음을 참조하세요.
보안 설정 전체 목록에 대한
spec.security.tls및 관련 필드.cert-manager 통합 설정을 통해
cert-manager으로 인증서를 발급합니다.X.509 클라이언트 인증서 생성을 클릭하여 인증서를 수동으로 발급합니다.
마이그레이션을 위해 해당 문서를 따를 때, 가상 머신 인증서에 서명한 동일한 CA에서 Kubernetes 노드 인증서를 발급받아야 하며, 새 CA에서 발급받아서는 안 됩니다. <resourceName>-ca 이라는 이름의 CA ConfigMap 에는 동일한 CA에서 채워진 ca-pem 키가 포함되어야 합니다.
시작하기 전에
다음이 필요합니다.
가상 머신 배포의 기존 CA 인증서 및 주 자료.
cert-manager또는 동일한 CA에서 Kubernetes 노드 인증서를 발급하는 동등한 도구를 사용합니다.복제본 세트를 Kubernetes로 마이그레이션.에서 생성된
MongoDB사용자 지정 리소스
절차
소스 CA에서 인증서 및 CA 리소스를 생성합니다.
cert-manager 통합 구성 또는 X.509509 클라이언트 인증서 생성 kubernetes.io/tls Secret 을(를) 따라서 <certsSecretPrefix>-<resourceName>-cert 이름의 을(를) 만들고 가상 마신 인증서에 서명한 동일한 CA에서 인증서를 발급합니다.
동일한 CA에서 채워진 ca-pem 키를 사용하여 이름이 <resourceName>-ca 인 CA ConfigMap를 생성합니다.
X.509 에이전트 인증을 사용하는 경우, <certsSecretPrefix>-<resourceName>-agent-certs Secret를 만들고 spec.security.authentication.agents.clientCertificateSecretRef을 설정하여 참조합니다. 이 요구사항은 에이전트 인증에만 적용되며, 내부 클러스터 인증(spec.security.authentication.internalCluster)에는 적용되지 않습니다.
소스 배포서버와 일치하도록 경로 호환성 필드를 설정합니다.
이러한 필드는 Kubernetes 연산자가 파일 경로를 보는 방식과 가상 마신 배포서버가 이미 인증서와 키 파일을 배치하는 방식이 일치하도록 하기 위해서만 존재합니다. 소스 배포서버에 적용되는 것만 설정합니다:
spec.security.tls.caFilePath: Pod 내부에 CA가 투영되는 절대 경로입니다. 기본값은/mongodb-automation/tls/ca/ca-pem입니다. 경로에는 최소 두 개의 경로 세그먼트가 포함되어야 합니다. 이 필드는 애플리케이션 데이터베이스에서 지원되지 않습니다.podTemplate이 이 경로에 다른 볼륨을 마운트하면 해당 마운트가 투영된 CA를 가리고 MongoDB Ops Manager 에이전트가 이를 읽을 수 없습니다.spec.security.authentication.agents.autoPEMKeyFilePath: 데이터베이스 Pod 내 에이전트의 결합된 PEM 파일의 절대 경로입니다. 이 필드는 에이전트 인증만 구성합니다. 이 필드를 설정하면 MongoDB Ops Managertls.autoPEMKeyFilePath값이 설정되고clientCertificateSecretRef에서 참조하는Secret가 해당 경로에 마운트됩니다. 기본값은 해시 파생 에이전트 인증서 마운트 경로이며, 이를 설정하려면spec.security.authentication.agents.clientCertificateSecretRef이 이미 설정되어 있어야 합니다. 가상 머신 배포서버가 기본값이 아닌 에이전트 PEM 경로를 사용하는 경우에만 이 필드를 설정하세요.spec.downloadBase: MongoDB Ops Manager 에이전트 바이너리가 다운로드되는 디렉토리입니다. 기본값은/var/lib/mongodb-mms-automation입니다. Kubernetes Operator는 이 값에서 키 파일 경로를<downloadBase>/keyfile로 파생합니다.
소스 배포서버가 TLS를 사용하지 않는 경우 소스 배포서버에서 TLS를 비활성화합니다.
가상 머신 배포서버에서 TLS를 구성한 적이 없는 경우, 마이그레이션하기 전에 기존 가상 머신 배포서버의 MongoDB Ops Manager 또는 Cloud Manager에서 net.tls.mode을(를) disabled (으)로 설정하십시오. MongoDB 사용자 지정 리소스에서 이 필드를 설정하지 마십시오.
소스 배포서버의 TLS 모드를 설정되지 않은 상태로 두면, Kubernetes 연산자는 소스 자동화 구성과 일치하지 않는 배포서버 변경을 시도합니다. 이는 TLS에 대한 기본값 보기가 TLS를 전혀 구성하지 않은 배포서버와 다르기 때문입니다. 소스 배포서버에서 필드를 disabled (으)로 설정하면 Kubernetes 연산자의 보기가 가상 마신 배포서버와 일치하게 되어 불필요한 변경을 방지할 수 있습니다.
CA가 일치하는지 확인하려면 드라이 런을 실행하세요.
dry-run 주석이 여전히 있는 상태에서 리소스를 적용하고 NetworkConnectivityVerified 조건을 확인합니다. 결과를 읽는 방법과 실패 시 수행할 작업에 대한 학습 내용은 Dry 실행을 통한 마이그레이션 준비 상태 검증을 참조하세요.
샤딩된 클러스터의 경우
샤딩된 클러스터는 config 서버의 경우 <resourceName>-config-*, 각 샤드의 경우 <resourceName>-<shardIndex>-*, mongos 라우터의 경우 <resourceName>-mongos-* 패턴에 따라 구성 요소당 하나의 인증서가 필요합니다.
참고
조화하기 전에 생성된 리소스와 대조하여 곰포넌트별 정확한 Secret 이름을 확인합니다. 샤딩된 클러스터 마이그레이션이 복제본 세트 마이그레이션과 어떻게 다른지 알아보려면 샤딩된 클러스터를 Kubernetes로 마이그레이션을 참조하십시오.