Kubernetes Operator는 TLS 및 X.509 내부 클러스터 인증 활성화된 상태에서 실행 배포에 대한 데이터베이스 사용자 관리를 지원합니다.
지원되는 인증 메커니즘
Kubernetes Operator는 생성하는 배포에서 SCRAM, LDAP, OpenID Connect 및 X.509 인증 메커니즘을 지원합니다. Kubernetes 연산자가 생성한 배포서버 에서는 MongoDB Ops Manager 사용하여 다음을 수행할 수 없습니다.
배포를 위한 다른 인증 메커니즘을 구성합니다.
SCRAM, LDAP 또는 X.509 인증을 사용 하지 않는 사용자를 managed합니다.
X.509 인증 활성화한 후 MongoDB Ops Manager 인터페이스 또는 CustomResourceDefinition을 사용하여 X.509 사용자를 추가할 수 있습니다.
전제 조건
데이터베이스 사용자를 관리하기 전에 TLS 및 X.509가 활성화된 복제본 세트 또는 샤딩된 클러스터 배포 해야 합니다.
MongoDB 사용자를 위한 X.509 인증서를 생성해야 하는 경우 X.509 클라이언트 인증서 생성을 참조하세요.
데이터베이스 사용자 추가
네임스페이스 를 기본값 으로 kubectl 구성합니다.
아직 실행하지 않았다면 다음 명령을 실행하여 생성한 네임스페이스에서 kubectl 명령을 모두 실행합니다.
참고
다중 Kubernetes 클러스터 MongoDB deployment에서 MongoDB Ops Manager 리소스를 배포하는 경우:
context를 연산자 클러스터 의 이름으로 설정합니다(예:kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME").--namespace를 다중 Kubernetes 클러스터 MongoDB 배포에 사용한 것과 동일한 범위 (예:kubectl config --namespace "mongodb"로 설정합니다.
kubectl config set-context $(kubectl config current-context) --namespace=<metadata.namespace>
다음 예시 CustomResourceDefinition을 복사합니다.
apiVersion: mongodb.com/v1 kind: MongoDBUser metadata: name: <resource-name> spec: username: <rfc2253-subject> db: "$external" mongodbResourceRef: name: '<MongoDB-Resource-name>' roles: - db: <database-name> name: <role-name> ...
원하는 텍스트 편집기를 열고 예시 CustomResourceDefinition을 새 텍스트 파일 에 붙여넣습니다.
필요에 따라 다음 매개변수의 줄을 변경합니다.
다음 표를 사용하여 MongoDB 사용자 리소스 사양의 관련 줄을 변경하는 방법을 안내합니다.
키 | 유형 | 설명 | 예시 | |||
|---|---|---|---|---|---|---|
| 문자열 | 데이터베이스 사용자 리소스의 이름입니다. 리소스 이름은 44자 이내여야 합니다. |
| |||
| 문자열 | Kubernetes CA(Kuber CA)가 서명한 x509 클라이언트 인증서의 제목 줄입니다. 중요: 사용자 이름 RFC 2253 LDAPv 고유3 이름 표준을 준수해야 합니다. X.509 인증서의 제목 줄을 가져오려면 다음 명령을 실행합니다. |
| |||
| 문자열 | 사용자를 추가할 MongoDB database가 포함된 프로젝트의 이름입니다. |
| |||
| 문자열 | 역할 이 작동할 수 있는 데이터베이스입니다. |
| |||
| 문자열 | 이 사용자가 연결된 MongoDB 리소스 의 이름입니다. |
| |||
| 문자열 | The name of the role to grant the database user. The role name can be any built-in MongoDB role or custom role that exists in Cloud Manager or Ops Manager. |
|
Add any additional roles for the user to the CustomResourceDefinition.
다음 예제에 정의된 형식을 사용하여 이 사용자에게 추가 역할을 부여할 수 있습니다.
apiVersion: mongodb.com/v1 kind: MongoDBUser metadata: name: mms-user-1 spec: username: CN=mms-user,U=My Organizational Unit,O=My Org,L=New York,ST=New York,C=US project: my-project db: "$external" roles: - db: admin name: backup - db: admin name: restore ...
사용자를 만듭니다.
다음 Kubernetes 명령을 호출하여 데이터베이스 사용자를 생성합니다.
kubectl apply -f <database-user-conf>.yaml
When you create a new MongoDB database user, Kubernetes Operator automatically creates a new Kubernetes secret. The Kubernetes secret contains the following information about the new database user:
username: 데이터베이스 사용자의 사용자 이름password: 데이터베이스 사용자의 비밀번호connectionString.standard: 이 데이터베이스 사용자로 데이터베이스에 연결할 수 있는 표준 연결 string 입니다.connectionString.standardSrv: 이 데이터베이스 사용자로 데이터베이스에 연결할 수 있는 DNS 시드 목록 연결 string 입니다.
참고
또는 MongoDB 사용자 리소스 사양 에 선택 사항인 spec.connectionStringSecretName 필드를 지정하여 Kubernetes 연산자가 생성하는 연결 문자열 시크릿의 이름을 지정할 수 있습니다.
By default, both connection strings omit the database from the URI path, so the database that clients use depends on the client. To set the database in the URI path, specify the optional spec.connectionStringDatabase field.
You can use these credentials to Connect to a MongoDB Resource from Inside Kubernetes.
데이터베이스 사용자 삭제
데이터베이스 사용자를 삭제하려면 metadata.name 사용자 ConfigMap 에서 를 전달합니다. 다음 명령에 추가합니다.
kubectl delete mdbu <metadata.name>