Docs Menu
Docs Home
/ /
MongoDB Atlas Kubernetes Operator
/

AtlasDatabaseUser 사용자 지정 리소스

이 페이지의 내용

  • 연결 비밀
  • 예시
  • 프로젝트 및 클러스터
  • 범위가 없는 데이터베이스 사용자
  • 범위가 있는 데이터베이스 사용자
  • X.509 인증이 있는 데이터베이스 사용자
  • OIDC 인증을 가진 데이터베이스 사용자
  • Database User with AWS IAM Authentication
  • 매개변수

AtlasDatabaseUser 사용자 지정 리소스 는 Atlas 프로젝트 에서 데이터베이스 사용자를 구성합니다. 데이터베이스 사용자는 클러스터 가 아닌 프로젝트 별로 생성합니다. 따라서 AtlasDatabaseUser 사용자 지정 리소스 구성에는 AtlasProject 사용자 지정 리소스 에 대한 참조가 포함됩니다. AtlasProject Custom Resource(사용자 지정 리소스) 를 미리 생성합니다.

중요

Custom Resource(사용자 정의 리소스)는 더 이상 기본적으로 객체를 삭제하지 않음

Atlas Kubernetes Operator는 사용자 지정 리소스 구성 파일을 사용하여 Atlas 구성을 관리합니다. 다만 Atlas Kubernetes Operator 2.0부터는 Kubernetes에서 삭제한 사용자 지정 리소스가 더 이상 Atlas에서 삭제되지 않습니다. 대신 Atlas Kubernetes Operator에서는 이러한 리소스의 관리가 중단될 뿐입니다. 그 예로 Kubernetes에서 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 에서 팀을 삭제 하지 않습니다.

다음 예제는 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
설명
connectionStringStandard
공개 mongodb:// 연결 URI 입니다.
connectionstringStandardSrv
공개 mongodb+srv:// 연결 URI 입니다.
username
데이터베이스 사용자를 식별하는 이름입니다.
password
데이터베이스 사용자의 비밀번호입니다.

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:
roles:
- roleName: readWriteAnyDatabase
databaseName: admin
projectRef:
name: my-project
username: theuser
passwordSecretRef:
name: the-user-password

이 사용자 지정 리소스를 생성하면 Atlas Kubernetes Operator가 다음과 같은 시크릿을 생성합니다.

  • p1-aws-cluster-theuser

  • p1-gcp-cluster-theuser

다음 예는 spec.scopes 가 GCP 클러스터로만 설정된 AtlasDatabaseUser 사용자 지정 리소스 사양을 보여줍니다.

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 인증을 사용하는 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 가 있는 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

The following example shows an AtlasDatabaseUser custom resource specification with AWS IAM.

apiVersion: atlas.mongodb.com/v1
kind: AtlasDatabaseUser
metadata:
name: my-database-user
spec:
username: arn:aws:iam::123456789012:user/johndoe
roles:
- roleName: "readWriteAnyDatabase"
databaseName: "admin"
projectRef:
name: my-project
awsIAMType: USER

이 섹션에서는 사용 가능한 주요 AtlasDatabaseUser 사용자 지정 리소스 매개변수 몇 가지에 대해 설명합니다. 사용 가능한 전체 매개변수 목록은 Atlas 데이터베이스 사용자 API 를 참조하세요. 사양을 사용자 지정하려면 이러한 설명, 사용 가능한 예제, API 설명서를 참조하세요.

spec.awsIAMType

유형: 문자열

옵션

Label that indicates whether the database user authenticates with the AWS IAM credentials associated with the user, or the user's role. If you don't specify a value, Atlas uses the default value of NONE.

이 매개 변수는 다음을 허용합니다.

none
User who doesn't use AWS IAM authentication.
사용자
User who authenticates with the AWS IAM credentials associated with the user.
ROLE
User who authenticates with the AWS IAM credentials associated with the user's role.
spec.connectionSecret.name

유형: 문자열

조건부

불투명한 시크릿 의 이름 Atlas Kubernetes Operator 가 Atlas 에 연결 하는 데 사용하는 조직 ID 및 API 키 가 포함되어 있습니다. 지정되지 않은 경우 Atlas Kubernetes Operator 는 다음 중 하나로 대체됩니다.

  • 상위 atlasProjectspec.connectionSecretRef.name 매개 변수

  • 기본값 global 시크릿(상위 atlasProject에 대해 spec.connectionSecretRef.name 이 정의되지 않은 경우)

이 매개변수는 독립적인 CRD의 경우 필수입니다.

Atlas Kubernetes Operator는 불필요한 시크릿 을 감시하지 atlas.mongodb.com/type=credentials 않기 위해 레이블이 있는 시크릿 만 감시합니다. .

다음 예시에서는 시크릿에 레이블을 지정합니다.

kubectl label secret the-user-password atlas.mongodb.com/type=credentials
spec.databaseName

유형: 문자열

필수 사항

데이터베이스 사용자가 인증하는 데이터베이스입니다. 데이터베이스 사용자는 사용자 이름과 인증 데이터베이스를 모두 제공해야 MongoDB에 로그인할 수 있습니다.

데이터베이스 사용자가 SCRAM-SHA 로 인증하는 경우 이 값은 admin 이어야 합니다.

데이터베이스 사용자가 X.509 로 인증하는 경우 이 값은 \$external 이어야 합니다.

spec.externalProjectRef.id

유형: 문자열

조건부

데이터베이스 사용자가 속한 프로젝트 의 ID 입니다. 기존 Atlas 프로젝트 의 프로젝트 ID 를 지정해야 합니다. 이 매개변수는 다음 중 하나에서 managed 되는 프로젝트에 속한 데이터베이스 사용자에게 필요합니다.

  • Atlas Kubernetes Operator 의 다른 인스턴스

  • Atlas Kubernetes Operator 이외의 도구

동일한 Atlas Kubernetes Operator 인스턴스 에서 managed 하는 프로젝트에 속한 데이터베이스 사용자의 경우, spec.externalProjectRef.id 을(를) 사용하지 않으면 spec.projectRef.name 을(를) 사용하세요.

spec.oidcAuthType

유형: 문자열

조건부

데이터베이스가 제공된 을(를) 인증하는 데 사용하는OIDC spec.username 메서드입니다.

데이터베이스 사용자가 OpenID Connect 로 인증하는 경우 이 값은 IDP_GROUP 이어야 합니다.

spec.passwordSecretRef

유형: 문자열

조건부

시크릿 참조 에 비밀번호가 포함되어 있습니다. SCRAM-SHA 인증 방법에는 이 매개 변수가 필요합니다.

spec.projectRef.name

유형: 문자열

조건부

데이터베이스 사용자가 속한 프로젝트 의 이름입니다. 기존 AtlasProject Custom Resource(사용자 지정 리소스) 를 지정해야 합니다. 이 매개변수는 동일한 인스턴스 Atlas Kubernetes Operator 에서 managed 하는 프로젝트에 속한 데이터베이스 사용자에게만 적용됩니다.

다음 중 하나에서 managed 되는 프로젝트에 속한 데이터베이스 사용자의 경우:

  • Atlas Kubernetes Operator 의 다른 인스턴스

  • Atlas Kubernetes Operator 이외의 도구

spec.externalProjectRef.name 을(를) 사용하세요.

spec.roles

유형: 배열

필수 사항

사용자의 역할과 역할이 적용되는 데이터베이스 또는 컬렉션이 포함된 목록입니다. 사용 가능한 매개변수의 전체 목록은 Atlas 데이터베이스 사용자 API를 참조하세요.

spec.scopes

유형: 배열

옵션

사용자가 생성되는 cluster가 포함된 목록입니다.

spec.scopes.name

유형: 문자열

조건부

데이터베이스 사용자가 액세스 할 수 있는 클러스터 를 식별하는 사람이 읽을 수 있는 레이블입니다. spec.scopes 를 지정한 경우 이 매개변수를 지정해야 합니다.

spec.scopes.type

유형: 문자열

조건부

데이터베이스 사용자가 액세스할 수 있는 리소스 유형을 식별하는 사람이 읽을 수 있는 레이블입니다. Atlas Kubernetes Operator는 현재 CLUSTER 만 지원합니다. spec.scopes 를 지정한 경우 이 매개변수를 지정해야 합니다.

spec.username

유형: 문자열

필수 사항

MongoDB database 또는 컬렉션에 인증하는 데 필요한 사용자를 식별하는 사람이 읽을 수 있는 레이블입니다.

데이터베이스 사용자가 OpenID Connect 로 인증하는 경우 이 값은 Atlas OIDC IdP 뒤에 슬래시 /IdP 그룹 이름이 와야 합니다.

데이터베이스 사용자가 Amazon Web Services IAM 자격 증명 으로 인증하는 경우, 이 값은 Amazon Web Services IAM 자격 증명 으로 인증하는 사용자 또는 Amazon 리소스 이름 Amazon Web Services 형식 의 IAM 자격증명 으로 인증하는 사용자의 역할 이어야 합니다.

spec.x509Type

유형: 문자열

옵션

X.509 데이터베이스가 제공된 spec.username 를 인증하는 메서드입니다. 값을 지정하지 않으면 Atlas는 기본값인 NONE 를 사용합니다.

이 매개 변수는 다음을 허용합니다.

none
X.509 인증을 사용하지 않는 사용자입니다.
MANAGED

Atlas managed X.509를 사용하는 사용자입니다.

spec.databaseName 매개변수에 \$external 를 지정해야 합니다.

CUSTOMER

자체 관리형 X를 사용하는 사용자입니다.509. 이 x509Type 로 생성된 사용자는 spec.username 매개변수에 CN(일반 이름)이 필요합니다. 자세한 내용은 RFC 2253 를 참조하세요.

spec.databaseName 매개변수에 \$external 를 지정해야 합니다.

API 에서 사용할 수 있는 구성 매개변수는 Atlas 데이터베이스 사용자 API 를 참조하세요.

현재 Atlas Kubernetes Operator는 Atlas 데이터베이스 사용자 API에서 사용할 수 있는 다음 매개변수를 지원하지 않습니다.

  • ldapAuthType

다음 매개변수를 지정하지 마세요.

돌아가기

AtlasDeployment