Atlas Kubernetes Operator를 사용하면 Kubernetes를 종료하지 않고도 Atlas로 리소스를 관리할 수 있습니다. 이 튜토리얼에서는 Atlas Kubernetes Operator를 사용하여 Kubernetes 구성 파일로부터 Atlas의 첫 클러스터를 생성하는 방법을 설명합니다.
참고
Helm으로 시작하는 것을 선호하시나요?
Atlas Kubernetes Operator 를 사용하여 Helm Charts 에서 Atlas 의 첫 번째 클러스터 를 만들려면 Helm Charts 빠른 시작을 참조하세요.
전제 조건
이 튜토리얼에는 다음이 필요합니다.
- 실행 중인 Kubernetes 클러스터의 x86노드에서 -64, AMD64 또는 ARM64 아키텍처 내장 프로세서를 구동합니다. 
- jq1.6 이상
GitHub에서 Atlas Kubernetes Operator 프로젝트에 액세스할 수 있습니다.
Atlas CLI를 사용하여 Atlas Kubernetes Operator를 설치하려면 다음 명령을 실행하세요.
atlas kubernetes operator install [options] 
명령 구문 및 매개변수에 관한 자세한 사항은 Atlas Kubernetes Operator 설치에 대한 Atlas CLI 문서를 참조하십시오.
절차
중요
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 
Atlas 계정에 등록하거나 로그인하세요.
새 Atlas 계정을 등록 하거나 Atlas 계정 에 로그인합니다.
조직을 위한 API 키를 생성합니다.
참고
Atlas에 대한 Atlas Kubernetes Operator 액세스 권한을 구성하려면 다음의 공개 API 키, 비공개 API 키 및 조직 ID 정보가 필요합니다.
조직에 프로그래밍 방식 액세스 권한을 부여하고 를 API Access List 구성합니다.
Atlas에 대한 Atlas Kubernetes Operator 액세스 권한을 구성하려면 다음의 공개 API 키, 비공개 API 키 및 조직 ID 정보가 필요합니다.
- Atlas Kubernetes Operator 가 새 Atlas 프로젝트 를 생성하도록 하려면Grant Programmatic Access to an Organization(조직에 프로그래밍 방식 액세스 권한을 부여합니다)을 클릭합니다. 조직 에서 Atlas 관리 API 에 대한 IP 액세스 목록 이 필요한 경우 API 액세스 목록도 구성해야 합니다. - 중요- API 키를 Organization Project Creator 조직 역할 이상으로 할당해야 합니다. 
- 기존 Atlas 프로젝트 로 작업하려면 프로젝트에서 프로젝트액세스를 추가합니다. 조직 에서 Atlas 관리 API 에 대한 IP 액세스 목록 이 필요한 경우 API 액세스 목록도 구성해야 합니다. - 중요- API 키에 Project Owner 프로젝트 역할을 할당해야 합니다. 
Atlas Kubernetes Operator를 배포하세요.
다음 시나리오 중 하나에서 <version> 을 최신 릴리스 번호로 바꿉니다.
- Atlas Kubernetes Operator로 Kubernetes 클러스터의 모든 네임스페이스를 감시하려면 다음 명령을 실행하세요. - kubectl apply -f https://raw.githubusercontent.com/mongodb/mongodb-atlas-kubernetes/v<version>/deploy/all-in-one.yaml 
- Atlas Kubernetes Operator 해당 - deploy/namespaced네임스페이스 만 감시하도록 하려면 디렉토리 에서 구성 파일을 설치해야 합니다.- kubectl apply -f https://raw.githubusercontent.com/mongodb/mongodb-atlas-kubernetes/v<version>/deploy/namespaced/crds.yaml - kubectl apply -f https://raw.githubusercontent.com/mongodb/mongodb-atlas-kubernetes/v<version>/deploy/namespaced/namespaced-config.yaml 
API 키와 조직 ID를 사용하여 시크릿을 생성합니다.
시크릿을 생성하고 레이블을 지정하려면 API 키와 조직 ID 사용하여 다음 명령을 실행 .
kubectl create secret generic mongodb-atlas-operator-api-key \     --from-literal="orgId=<atlas_organization_id>" \     --from-literal="publicApiKey=<atlas_api_public_key>" \     --from-literal="privateApiKey=<atlas_api_private_key>" \     -n mongodb-atlas-system 
kubectl label secret mongodb-atlas-operator-api-key atlas.mongodb.com/type=credentials -n mongodb-atlas-system 
외부 시크릿 저장 사용하는 경우 민감한 정보를 Kubernetes 시크릿에 직접 넣을 필요가 없습니다. 자세한 학습 은 시크릿 스토리지 구성을 참조하세요.
AtlasProject 사용자 지정 리소스 를 만듭니다.
다음 명령을 실행하여 AtlasProject 사용자 지정 리소스를 생성합니다.
참고
다음 예시 spec.connectionSecretRef.name을(를) 지정하지 않습니다. 지정하지 않으면 Atlas Kubernetes Operator 이전에 API 키 및 조직 ID 로 설정하다 기본값 연결 비밀을 사용합니다.
Atlas Kubernetes Operator 사용자 지정 리소스 를 배포합니다.
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasProject metadata:   name: my-project spec:   name: Test Atlas Operator Project   projectIpAccessList:     - ipAddress: <your-ip-address-range>       comment: "Adding your IP to Atlas access list" EOF 
AtlasDeployment 사용자 지정 리소스 를 만듭니다.
다음 명령 중 하나를 실행하여 AtlasDeployment 사용자 지정 리소스 를 생성하고 클러스터 를 생성합니다.
유료 계층:
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasDeployment metadata:   name: my-atlas-cluster spec:   projectRef:     name: my-project   deploymentSpec:     clusterType: REPLICASET     name: "Test-cluster"     tags:       - key: "environment"         value: "production"     replicationSpecs:       - zoneName: US-Zone         regionConfigs:           - electableSpecs:               instanceSize: M10               nodeCount: 3             providerName: AWS             regionName: US_EAST_1             priority: 7 EOF 
무료 계층:
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasDeployment metadata:   name: my-atlas-cluster spec:   projectRef:     name: my-project   deploymentSpec:     clusterType: REPLICASET     name: "Test-cluster"     replicationSpecs:       - regionConfigs:           - regionName: US_EAST_1             providerName: TENANT             backingProviderName: AWS             electableSpecs:               instanceSize: M0               nodeCount: 3 EOF 
서버리스 인스턴스 만들려면 서버리스 인스턴스 예시 참조하세요.
비밀번호로 시크릿을 생성하여 Atlas cluster 데이터베이스에 로그인하세요.
P@@ssword% 을(를) 비밀번호로 바꾸고 다음 명령을 실행합니다.
kubectl create secret generic the-user-password --from-literal="password=P@@sword%" 
kubectl label secret the-user-password atlas.mongodb.com/type=credentials 
외부 시크릿 저장 사용하는 경우 민감한 정보를 Kubernetes 시크릿에 직접 넣을 필요가 없습니다. 자세한 학습 은 시크릿 스토리지 구성을 참조하세요.
AtlasDatabaseUser 사용자 지정 리소스 를 만듭니다.
다음 명령을 실행하여 AtlasDatabaseUser 사용자 지정 리소스를 생성합니다.
참고
spec.passwordSecretRef 은(는) 이전에 생성된 비밀번호를
참조해야 합니다.
cat <<EOF | kubectl apply -f - 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 EOF 
데이터베이스 사용자의 상태를 확인합니다.
데이터베이스 사용자가 준비되었음을 나타내는 True 응답을 받을 때까지 다음 명령을 실행합니다.
참고
AtlasDatabaseUser 사용자 지정 리소스 는 클러스터가 준비될 때까지 기다립니다. 새 cluster를 만드는 데 최대 10분이 걸릴 수 있습니다.
kubectl get atlasdatabaseusers my-database-user -o=jsonpath='{.status.conditions[?(@.type=="Ready")].status}' 
Atlas Kubernetes Operator가 클러스터에 연결하기 위해 생성한 비밀을 조회하세요.
- 다음 명령을 복사합니다. - 중요- 다음 명령을 실행하려면 - jq1.6 이상이 필요합니다.- kubectl get secret {my-project}-{my-atlas-cluster}-{my-database-user} -o json | jq -r '.data | with_entries(.value |= @base64d)'; 
- 다음 자리 표시자를 원하는 사용자 지정 리소스의 세부 정보로 바꾸세요. - my-project- AtlasProject사용자 지정 리소스의- metadata필드 값을 지정합니다.- my-atlas-cluster- AtlasDeployment사용자 지정 리소스의- metadata필드 값을 지정합니다.- my-database-user- AtlasDatabaseUser사용자 지정 리소스의- metadata필드 값을 지정합니다.
- 명령을 실행합니다. - 참고- 연결 문자열은 다음 예제와 다를 수 있습니다. - { - "connectionStringStandard": "mongodb://theuser:P%40%40sword%25@test-cluster-shard-00-00.peqtm.mongodb.net:27017,test-cluster-shard-00-01.peqtm.mongodb.net:27017,test-cluster-shard-00-02.peqtm.mongodb.net:27017/?ssl=true&authSource=admin&replicaSet=atlas-pk82fl-shard-0", - "connectionStringStandardSrv": "mongodb+srv://theuser:P%40%40sword%25@test-cluster.peqtm.mongodb.net", - "password": "P@@sword%", - "username": "theuser" - } - 애플리케이션 에서 이 시크릿을 사용할 수 있습니다. - containers: - - name: test-app - env: - - name: "CONNECTION_STRING" - valueFrom: - secretKeyRef: - name: test-atlas-operator-project-test-cluster-theuser - key: connectionStringStandardSrv