AtlasDatabaseUser 사용자 지정 리소스 는 Atlas 프로젝트 에서 데이터베이스 사용자를 구성합니다. 데이터베이스 사용자는 클러스터 가 아닌 프로젝트 별로 생성합니다. 따라서 AtlasDatabaseUser 사용자 지정 리소스 구성에는 AtlasProject 사용자 지정 리소스 에 대한 참조가 포함됩니다. AtlasProject Custom Resource(사용자 지정 리소스) 를 미리 생성합니다.
중요
Custom Resource(사용자 정의 리소스)는 더 이상 기본적으로 객체를 삭제하지 않음
Atlas Kubernetes Operator 사용자 지정 리소스 구성 파일을 사용하여 Atlas 구성을 관리 하지만, Atlas Kubernetes Operator 부터는 Kubernetes 에서 삭제 사용자 지정 2.0 리소스가 더 이상 ( 기본값) Atlas 에서 삭제되지 않습니다. 대신 Atlas Kubernetes Operator Atlas 에서 해당 리소스 관리를 중지할 뿐입니다. 예시 들어, Kubernetes 에서 Custom Resource(사용자
AtlasProject지정 리소스)를 삭제 하면 기본값 으로 Atlas Kubernetes Operator 더 이상 Atlas 에서 해당 프로젝트 자동으로 삭제하지 않습니다. 이러한 동작 변경은 우발적이거나 예기치 않은 삭제를 방지하기 위한 것입니다. 이 동작을 Atlas Kubernetes Operator 이전에 사용된 기본값 으로 되돌리는 2 방법0 등 자세한 학습 새 기본값: Atlas Kubernetes Operator 2 의 삭제0 보호 기능을 참조하세요.마찬가지로, Atlas Kubernetes Operator 를 사용하여 Kubernetes 의 Atlas 프로젝트 에서 팀을 제거 하는 경우 Atlas Kubernetes Atlas Kubernetes Operator 는 Atlas 에서 팀을 삭제 하지 않습니다.
기본값 Atlas 구성 값을 암시적으로 사용하지 않으려면 원하는 구성 세부 정보를 명시적으로 정의하세요. 경우에 따라 Atlas 기본값을 상속하면 조정 루프가 발생하여 사용자 지정 리소스
READY상태 달성하지 못할 수 있습니다. 예시 들어AtlasDeployment사용자 지정 리소스 에 원하는 자동 확장 동작을 명시적으로 정의하면 포함된 예시 와 같이 사용자 지정 리소스 의 정적 인스턴스 크기가 자동 확장이 활성화된 Atlas 배포서버 에 반복적으로 적용되지 않도록 할 수 있습니다.autoScaling: diskGB: enabled: true compute: enabled: true scaleDownEnabled: true minInstanceSize: M30 maxInstanceSize: M40
다음 예제는 AtlasProject 사용자 지정 리소스에 대한 참고를 보여줍니다.
spec: projectRef: name: my-project
Atlas Kubernetes Operator는 Atlas의 데이터베이스 사용자 구성이 Kubernetes의 구성과 일치하도록 합니다.
Atlas Kubernetes Operator 는 Atlas 데이터베이스 사용자 API 를 사용하여 다음 작업 중 하나를 수행합니다.
새 데이터베이스 사용자를 생성합니다.
기존 사용자를 업데이트합니다.
데이터베이스 사용자를 생성하기 전에 단일 password 필드 있는 불투명 시크릿 을 생성하여 Atlas cluster 데이터베이스에 로그 해야 합니다.
참고
AtlasDatabaseUser 사용자 지정 리소스 있는 동일한 네임스페이스 에 시크릿을 생성해야 합니다.
다음 예시에서는 시크릿을 생성합니다.
kubectl create secret generic the-user-password --from-literal="password=P@@sword%"
Atlas Kubernetes Operator atlas.mongodb.com/type=credentials 불필요한 시크릿을 감시하지 않기 위해 레이블이 있는 시크릿만 감시합니다.
다음 예시에서는 시크릿에 레이블을 지정합니다.
kubectl label secret the-user-password atlas.mongodb.com/type=credentials
연결 비밀
Atlas Kubernetes Operator가 Atlas에서 데이터베이스 사용자를 성공적으로 만들거나 업데이트한 후에는 Atlas Kubernetes Operator가 AtlasDatabaseUser 사용자 지정 리소스가 있는 네임스페이스와 동일한 네임스페이스에 연결 비밀을 만들거나 업데이트합니다.
연결 비밀에는 다음 매개변수를 포함하여 Atlas cluster에 연결하는 데 필요한 모든 정보가 포함되어 있습니다.
Parameter | 설명 |
|---|---|
| 공개 |
| 공개 |
| 데이터베이스 사용자를 식별하는 이름입니다. |
| 데이터베이스 사용자의 비밀번호입니다. |
Kubernetes에서 실행되는 애플리케이션은 이 정보를 사용하여 Atlas cluster에 연결할 수 있습니다. 애플리케이션 포드에 시크릿을 파일로 마운트할 수 있으며, 애플리케이션 프로세스는 이러한 파일을 읽어 데이터를 가져올 수 있습니다.
다음 예시에서는 시크릿을 환경 변수로 마운트하는 방법을 보여줍니다.
spec: containers: - name: test-app env: - name: "CONNECTIONSTRING" valueFrom: secretKeyRef: name: project-cluster-basic-theuser key: connectionStringStandardSrv
다음 예시에서는 시크릿을 파일로 마운트하는 방법을 보여줍니다.
spec: containers: - name: test-app volumeMounts: - mountPath: /var/secrets/ name: theuser-connection volumes: - name: theuser-connection secret: secretName: project-cluster-basic-theuser
기본값 으로 Atlas Kubernetes Operator 가 참조하는 동일한 프로젝트 의 각 클러스터 에 대한 데이터베이스 사용자 연결 AtlasDatabaseUser 비밀을 생성합니다.spec.scopes 매개변수를 사용하여 이 동작을 변경할 수 있습니다. 이 매개변수는 데이터베이스 사용자가 생성되는 클러스터를 제한합니다. 연결 암호의 이름은 형식을 사용합니다. <project_name>-<cluster_name>-<db_user_name>
예시
프로젝트 및 클러스터
다음 예시는 Atlas 프로젝트와 이를 참고하는 cluster를 보여줍니다.
apiVersion: atlas.mongodb.com/v1 kind: AtlasProject metadata: name: my-project spec: name: p1 projectIpAccessList: - ipAddress: "192.0.2.15" comment: "IP address for Application Server A" apiVersion: atlas.mongodb.com/v1 kind: AtlasDeployment metadata: name: my-aws-cluster spec: name: aws-cluster projectRef: name: my-project providerSettings: instanceSizeName: M10 providerName: AWS regionName: US_EAST_1 apiVersion: atlas.mongodb.com/v1 kind: AtlasDeployment metadata: name: my-gcp-cluster spec: name: gcp-cluster projectRef: name: my-project providerSettings: instanceSizeName: M10 providerName: GCP regionName: EASTERN_US
범위가 없는 데이터베이스 사용자
다음 예시 spec.scopes 가 생략된 AtlasDatabaseUser 사용자 지정 리소스 사양을 보여줍니다.
apiVersion: atlas.mongodb.com/v1 kind: AtlasDatabaseUser metadata: name: my-database-user spec: description: "User for the reporting application." roles: - roleName: readWriteAnyDatabase databaseName: admin projectRef: name: my-project username: theuser passwordSecretRef: name: the-user-password
이 사용자 지정 리소스를 생성하면 Atlas Kubernetes Operator가 다음과 같은 시크릿을 생성합니다.
p1-aws-cluster-theuserp1-gcp-cluster-theuser
범위가 있는 데이터베이스 사용자
다음 예시 AtlasDatabaseUser spec.scopes가 Google Cloud 클러스터 로만 설정하다 사용자 지정 리소스 사양을 보여줍니다.
apiVersion: atlas.mongodb.com/v1 kind: AtlasDatabaseUser metadata: name: my-database-user spec: roles: - roleName: "readWriteAnyDatabase" databaseName: "admin" projectRef: name: my-project username: theuser passwordSecretRef: name: the-user-password scopes: - type: CLUSTER name: gcp-cluster
이 사용자 지정 리소스를 업데이트하면 Atlas Kubernetes Operator가 aws-cluster 에서 theuser 을(를) 제거합니다. 또한 Kubernetes cluster에서 p1-aws-cluster-theuser 시크릿을 제거합니다.
X.509 인증이 있는 데이터베이스 사용자
다음 예제에서는 X.509 인증을 사용하는 AtlasDatabaseUser 사용자 지정 리소스 사양을 보여줍니다.
apiVersion: atlas.mongodb.com/v1 kind: AtlasDatabaseUser metadata: name: my-database-user spec: username: CN=my-x509-authenticated-user,OU=organizationalunit,O=organization databaseName: "\$external" x509Type: "CUSTOMER" roles: - roleName: "readWriteAnyDatabase" databaseName: "admin" projectRef: name: my-project
OIDC 인증이 있는 데이터베이스 사용자
다음 예는 OIDC 가 있는 AtlasDatabaseUser 사용자 지정 리소스 사양을 보여줍니다.
apiVersion: atlas.mongodb.com/v1 kind: AtlasDatabaseUser metadata: name: my-database-user spec: roles: - roleName: "readWriteAnyDatabase" databaseName: "admin" projectRef: name: my-project username: my-oidc-group-id/my-idp-group-name oidcAuthType: IDP_GROUP
Amazon Web Services Amazon Web Services IAM 인증을 사용하는 데이터베이스 사용자
다음 예시 는 AtlasDatabaseUser Amazon Amazon Web Services Web Services IAM을 사용하는 사용자 지정 리소스 사양을 보여줍니다.
apiVersion: atlas.mongodb.com/v1 kind: AtlasDatabaseUser metadata: name: my-database-user spec: username: arn:aws:iam::123456789012:user/johndoe databaseName: "$external" roles: - roleName: "readWriteAnyDatabase" databaseName: "admin" projectRef: name: my-project awsIamType: USER
매개변수
AtlasDatabaseUser
AtlasDatabaseUser는 Atlas 데이터베이스 사용자 API 의 스키마입니다.
Name | 유형 | 설명 | 필수 사항 |
|---|---|---|---|
| 문자열 | atlas.mongodb.com/v1 | true |
| 문자열 |
| true |
| 객체 |
| true |
| 객체 |
| 거짓 |
| 객체 |
| 거짓 |
AtlasDatabaseUser.spec
AtlasDatabaseUserSpec은 Atlas 에서 데이터베이스 사용자의 대상 상태 정의합니다.
Name | 유형 | 설명 | 필수 사항 |
|---|---|---|---|
| [] 객체 | 역할은 이 사용자의 | true |
| 문자열 | 사용자 이름은 | true |
| 열거형 | 새 데이터베이스 사용자가 Amazon Web Services ()로 인증하는지 여부를 나타내는 사람이 | 거짓 |
| 객체 | Atlas | 거짓 |
| 문자열 |
| 거짓 |
| 문자열 |
| 거짓 |
| 문자열 | 이 데이터베이스 사용자에 대한 설명입니다. 최대 100 자입니다. | 거짓 |
| 객체 |
| 거짓 |
| [] 객체 | 레이블은 데이터베이스 사용자를 태그를 지정하다 하고 분류하는 키-값 쌍을 포함하는 배열 입니다. 각 키와 값의 최대 길이는 255 자입니다. | 거짓 |
| 열거형 | 새 데이터베이스 사용자 | 거짓 |
| 객체 |
| 거짓 |
| 객체 |
| 거짓 |
| [] 객체 | 범위는 이 사용자가 액세스 할 수 있는 클러스터 및 Atlas Data Lake의 배열 입니다. | 거짓 |
| 열거형 | X509Type is X. 메서드를509 통해 데이터베이스 제공된 사용자 이름 인증합니다. | 거짓 |
AtlasDatabaseUser.spec.roles
RoleSpec을 사용하면 사용자가 지정된 데이터베이스 에서 특정 조치를 수행할 수 있습니다. 관리 데이터베이스 의 역할 에는 다른 데이터베이스에도 적용 권한이 포함될 수 있습니다.
Name | 유형 | 설명 | 필수 사항 |
|---|---|---|---|
| 문자열 |
| true |
| 문자열 |
| true |
| 문자열 |
| 거짓 |
AtlasDatabaseUser.spec.connectionSecret
Atlas API 비공개 및 공개 키가 포함된 시크릿의 이름입니다.
Name | 유형 | 설명 | 필수 사항 |
|---|---|---|---|
| 문자열 | 참조되는 리소스 의 이름 추가 정보: https://kubernetes.io/docs/concepts/overview/Working-with-objects/names/#names | true |
AtlasDatabaseUser.spec.externalProjectRef
externalProjectRef는 상위 Atlas 프로젝트 ID 보유합니다. "projectRef" 필드 와 상호 배타적입니다.
Name | 유형 | 설명 | 필수 사항 |
|---|---|---|---|
| 문자열 |
| true |
AtlasDatabaseUser.spec.labels
LabelSpec에는 Cluster/DBUser를 태그를 지정하다 하고 분류하는 키-값 쌍이 포함되어 있습니다.
Name | 유형 | 설명 | 필수 사항 |
|---|---|---|---|
| 문자열 | 이 구성 요소에 태그를 지정하다 하고 분류하는 데 적용되는 키입니다. | true |
| 문자열 | 이 구성 요소에 태그를 지정하다 하고 분류하는 데 적용된 키에 설정하다 값입니다. | true |
AtlasDatabaseUser.spec.passwordSecretRef
PasswordSecret은 사용자 비밀번호를 보관하는 Secret에 대한 참조입니다.
Name | 유형 | 설명 | 필수 사항 |
|---|---|---|---|
| 문자열 | 이름은 Kubernetes 리소스의 | true |
AtlasDatabaseUser.spec.projectRef
projectRef는 상위 AtlasProject 리소스 에 대한 참조입니다. "externalProjectRef" 필드 와 상호 배타적입니다.
Name | 유형 | 설명 | 필수 사항 |
|---|---|---|---|
| 문자열 | Kubernetes 리소스의 이름 | true |
| 문자열 | Kubernetes 리소스의 네임스페이스 | 거짓 |
AtlasDatabaseUser.spec.scopes
ScopeSpec이 있는 경우 데이터베이스 사용자는 표시된 리소스 (Cluster 또는 Atlas Data Lake )에 대한 액세스 권한만 있고, 지정된 리소스가 없는 경우에는 모두에 액세스 할 수 있습니다. 데이터베이스 사용자의 액세스 제한된 리소스 설정하다 로만 제한하는 것이 좋습니다.
Name | 유형 | 설명 | 필수 사항 |
|---|---|---|---|
| 문자열 | 이름은 사용자가 액세스 할 수 있는 클러스터 또는 Atlas Data Lake 의 | true |
| 열거형 | 유형은 | true |
AtlasDatabaseUser.status
AtlasDatabaseUserStatus는 AtlasProject의 관찰된 상태 정의합니다.
Name | 유형 | 설명 | 필수 사항 |
|---|---|---|---|
| [] 객체 | 조건은 Atlas Custom Resource(사용자 지정 리소스)의 현재 상태 보여주는 상태 목록입니다. | true |
| 문자열 |
| 거짓 |
| integer |
| 거짓 |
| 문자열 |
| 거짓 |
AtlasDatabaseUser.status.conditions
조건은 특정 점 의 Atlas Custom Resource(사용자 지정 리소스) 상태 를 설명합니다.
Name | 유형 | 설명 | 필수 사항 |
|---|---|---|---|
| 문자열 | 조건의 상태입니다. 참, 거짓, 알 수 없음 중 하나입니다. | true |
| 문자열 | Atlas Custom Resource(사용자 지정 리소스) 조건 유형입니다. | true |
| 문자열 | 마지막으로 조건이 한 상태에서 다른 상태로 전환된 시간입니다. 형식으로 | 거짓 |
| 문자열 | 전환에 대한 세부 정보를 제공하는 | 거짓 |
| 문자열 | 조건의 마지막 전환에 대한 | 거짓 |