Atlas Kubernetes Operator 관리하는 구성 요소에 대한 민감한 정보를 저장 위치를 선택할 수 있지만, Atlas Kubernetes Operator 예상하는 Kubernetes 시크릿 을 찾아야 합니다. 다음 방법을 포함하여 여러 가지 방법으로 Atlas Kubernetes Operator 의 시크릿을 저장 수 있습니다.
민감한 정보를 Kubernetes 시크릿에 직접 입력하세요. Atlas Kubernetes Operator 설명서의 모든 튜토리얼은 기본값 으로 Kubernetes 시크릿을 사용합니다. Kubernetes 시크릿을 사용하려면 튜토리얼의 단계를 따르세요.
GitOps 흐름에 따라 민감한 정보를 Github 리포지토리 에 넣습니다. 민감한 데이터를 git에 안전하게 저장 하려면 의도한 대상 클러스터 의 시크릿을 암호화하는 'Sealed Secrets'와 같은 도구를 사용할 수 있습니다.
민감한 정보는 HashiCorp Vault 또는 하이퍼스케일러 네이티브 비밀 관리 솔루션과 같은 외부 비밀 저장 도구에 보관하세요. 중간 시크릿 프로비저닝 도구는 외부 시크릿 저장 도구에서 민감한 정보를 가져와서 민감한 정보로부터 Kubernetes 시크릿을 생성합니다. 시크릿 프로비저닝 도구에 대해 자세히 학습 고려 사항을 참조하세요.
이 튜토리얼에서는 Atlas Kubernetes Operator와 함께 사용할 외부 비밀 저장소 도구를 설정합니다. 이 튜토리얼에서는 Atlas Kubernetes Operator가 시크릿을 Kubernetes 클러스터에 프로비저닝하기 위해 시크릿을 생성하고 저장할 필요가 없는 '시크릿이 없는' 설정에 중점을 둡니다.
고려 사항
다음 튜토리얼에서는 다음 도구 및 옵션을 설치하거나 구성합니다.
시크릿 프로비저닝 도구입니다. 시크릿 프로비저닝 도구는 하나 이상의 인증 메커니즘을 사용하여 시크릿 관리 서비스에서 자격 증명 조회 하고 Atlas Kubernetes Operator 사용할 수 있는 시크릿을 생성합니다. 이 튜토리얼에서는 다음 오픈 소스 시크릿 프로비저닝 도구 중 하나를 설치합니다.
시크릿 액세스 위한 인증. 다양한 방법을 사용하여 HashiCorp Vault의 시크릿 액세스 할 수 있는 서비스 계정 및 네임스페이스를 인증할 수 있습니다.
External Secrets Operator의 경우 이 튜토리얼에서는 OIDC JWT 인증 사용합니다. 자세한 학습 은 JWT/OIDC 인증 참조하세요.
Secrets Store CSI 드라이버 의 경우 이 튜토리얼에서는 Kubernetes 인증 사용합니다.
또는 클라우드 공급자의 KMS 에서 네이티브 IAM 시스템을 사용하여 이러한 인증을 제공할 수 있지만, 이는 이 튜토리얼에서 다루지 않습니다. 인증을 위해 클라우드 공급자의 KMS 를 구성하는 방법을 알아보려면 External Secrets 연산자 설명서에서 다음 리소스를 참조하세요.
전제 조건
이 튜토리얼을 완료하려면 다음 도구와 구성이 필요합니다.
Kubernetes, Atlas Kubernetes Operator, Atlas에 대한 서비스 계정을 실행하고 이를 구성할 수 있는 충분한 권한.
x86-64, AMD64 또는 ARM64 아키텍처의 프로세서를 실행하는 노드가 포함된 실행 중인 Kubernetes cluster가 필요합니다. 이 튜토리얼에서 Kubernetes cluster는 기본 포트(443)에서 수신 대기 중인
https://kube01.internal.io
입니다.GitHub에서 Atlas Kubernetes Operator 프로젝트에 액세스할 수 있습니다.
Atlas CLI를 사용하여 Atlas Kubernetes Operator를 설치하려면 다음 명령을 실행하세요.
atlas kubernetes operator install [options] 명령 구문 및 매개변수에 관한 자세한 사항은 Atlas Kubernetes Operator 설치에 대한 Atlas CLI 문서를 참조하십시오.
Atlas Kubernetes Operator 를 배포 하려면 다음 명령을 실행 합니다.
<version>
를 최신 출시하다 번호로 바꿉니다.kubectl apply -f https://raw.githubusercontent.com/mongodb/mongodb-atlas-kubernetes/<version>/deploy/all-in-one.yaml Atlas 계정을 등록하려면 Atlas 계정 생성을 참조하세요.
API 키. API 키를 생성 하고 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 프로젝트 역할을 할당해야 합니다.
비밀 저장 입니다. 이 튜토리얼에서는 에서 실행 비밀 저장 위한 타사 서비스인 HashiCorp Vault를
https://vault.internal.io
사용합니다.필요에 따라 AWS, Azure 및 Google의 Cloud KMS를 포함하여 Atlas Kubernetes Operator와 함께 다른 비밀 저장소를 사용할 수 있습니다.
내부 액세스 전용 입니다. 공용 인터넷을 통해 민감한 정보가 노출되는 것을 방지하기 위해 비밀 저장소 솔루션의 다음 구성 요소는 내부 액세스만 허용합니다.
HashiCorp Vault 또는 KMS 서비스.
Kubernetes cluster API 서비스입니다.
내부 네트워크. 이 튜토리얼에서는
internal.io
을(를) 사용합니다.
이전 구성 요소는 내부 액세스만 허용했지만, 서로에 대한 액세스를 허용하며 팀이나 조직 내의 모든 사용자가 액세스할 수 있도록 허용합니다. 이는 보안을 위한 권장사항입니다.
공공 CA(인증 기관). 공용 CA를 사용하면 사용자 지정 CA 루트 인증서의 관리 및 배포를 방지할 수 있습니다.
다음 도구 중 하나를 사용하여 CA 인증서 관리 및 갱신을 자동화할 수 있습니다.
이 튜토리얼에서는 다음을 수행합니다.
모든
internal.io
HTTPS 서비스는 내부 주소이지만 HTTPS 사이트는 공용 CA에서 서명한 자동으로 갱신된 인증서를 보유하고 있습니다.서버 측 HTTPS 유효성 검사만 수행하므로 이 통합에는 상호 TLS(mTLS)가 필요하지 않습니다.
클라이언트는 추가 인증서 프로비저닝 없이 이러한 서비스 인증서를 신뢰할 수 있습니다.
절차
다음 단계에 따라 Atlas Kubernetes Operator에 대한 시크릿 스토리지를 구성합니다.
대상 cluster에 시크릿 프로비저닝 도구를 설치합니다.
시크릿 프로비저닝 도구를 선택하여 설치합니다.
External Secrets Operator를 시크릿 프로비저닝 도구로 사용하려면 다음을 수행합니다.
다음 명령을 실행하여 Atlas Charts가 포함된 External Secret 연산자를 설치하고 서비스를 시작합니다.
helm repo add external-secrets https://charts.external-secrets.io helm upgrade -i --atomic \ -n external-secrets --create-namespace --set extraArgs.loglevel=debug \ external-secrets external-secrets/external-secrets` 외부 비밀이 성공적으로 실행되는지 확인합니다.
kubectl get pod -n external-secrets -l app.kubernetes.io/name=external-secrets NAME READY STATUS RESTARTS AGE external-secrets-5779d5d6f6-2lhgd 1/1 Running 0 70s
Secrets Store CSI 드라이버 를 시크릿 프로비저닝 도구로 사용하려면 다음 단계를 따르세요.
다음 명령을 실행하여 Helm Charts 가 포함된 Secret Store CSI 드라이버 를 설치하고 서비스를 시작합니다.
helm repo add secrets-store-csi-driver https://kubernetes-sigs.github.io/secrets-store-csi-driver/charts helm upgrade -i --atomic --set syncSecret.enabled=true \ -n kube-system csi-secrets-store secrets-store-csi-driver/secrets-store-csi-driver 다음 명령을 실행하여 Helm Charts 와 함께 Secrets Store CSI HashiCorp Vault 플러그인을 설치합니다. HashiCorp Vault 서버 나 시크릿 인젝터를 설치할 필요가 없습니다.
helm install vault hashicorp/vault \ --set "server.enabled=false" --set "injector.enabled=false" \ --set "csi.enabled=true" Secret Store CSI가 성공적으로 실행되는지 확인합니다.
kubectl get pod -n kube-system -l app.kubernetes.io/name=secrets-store-csi-driver NAME READY STATUS RESTARTS AGE csi-secrets-store-secrets-store-csi-driver-6dcm8 3/3 Running 0 2m2s HashiCorp Vault CSI 제공자 성공적으로 실행되는지 확인합니다.
kubectl get pods -l app.kubernetes.io/name=vault-csi-provider NAME READY STATUS RESTARTS AGE vault-csi-provider-j7xbr 2/2 Running 0 5m39s
시크릿에 액세스하려면 인증을 설정합니다.
OIDC JSON web token 및 Kubernetes 인증 을 설정하다 하려면 다음을 수행합니다.
다음 명령을 실행하여 마운트 경로에 대해 OIDC JSON 웹 토큰 인증을 활성화합니다. 여러 Kubernetes 클러스터를 설정하는 경우 각 클러스터의 마운트 경로에 대해 OIDC JSON 웹 토큰 인증을 활성화해야 합니다.
vault auth enable -path=jwt-kube01 jwt 다음 명령을 실행하여
kube01.internal.io
클러스터의 OIDC 검색 URL에 대한 인증되지 않은 액세스를 허용합니다.$ kubectl create clusterrolebinding oidc-reviewer \ --clusterrole=system:service-account-issuer-discovery \ --group=system:unauthenticated 다음 명령을 실행하여 HashiCorp Vault가 클러스터 신뢰하도록 지시합니다. 에 있는 클러스터 의 발급자는 에 있는
https://kube01.internal.io/
OIDC 검색 문서 의 URL 일치해야.well-known/openid-configuration
합니다.curl https://kube01.internal.io/.well-known/openid-configuration | jq .issuer https://kube01.internal.io/ vault write auth/jwt-kube01/config jwks_url="https://kube01.internal.io/openid/v1/jwks" cluster에 노출하려는 시크릿에 대한 액세스를 허용하는 정책을 생성합니다.
다음 예에서는 이후 단계에서 지정하는
external-secrets
정책을 만듭니다.echo external-secrets-policy.hcl path "secret/data/kube01/external-secrets/*" { capabilities = ["read"] } 명령을 실행하여 HashiCorp Vault 역할 생성하고 Kubernetes 서비스 계정을 역할 에 바인딩하여 HashiCorp Vault 내에서 서비스 계정의 액세스 제한합니다.
다음 명령은
jwt-kube01-system
대상에 대한 JWT(OIDC) 유형의 역할vault
생성합니다. 이 명령은sub
사용자 클레임과default
네임스페이스 의 Kubernetes 서비스 계정을 바인딩된mongodb-atlas-system
주체로 지정합니다. 이 명령은 역할external-secrets
HashiCorp Vault내의 정책 권한 설정하다 에 연결합니다.vault write auth/jwt-kube01/role/jwt-kube01-system role_type="jwt" bound_audiences=vault \ user_claim="sub" bound_subject="system:serviceaccount:mongodb-atlas-system:default" \ policies="external-secrets" 명령을 실행하여 외부 비밀 연산자가
default
네임스페이스에 액세스할 수 있는 다른 역할을 만듭니다.다음 명령은
jwt-kube01-default
대상에 대한 JWT(OIDC) 유형의 역할vault
생성합니다. 이 명령은sub
사용자 클레임과default
네임스페이스 의 Kubernetes 서비스 계정을 바인딩된default
주체로 지정합니다. 이 명령은 역할external-secrets
HashiCorp Vault내의 정책 권한 설정하다 에 연결합니다.vault write auth/jwt-kube01/role/jwt-kube01-default role_type="jwt" bound_audiences=vault \ user_claim="sub" bound_subject="system:serviceaccount:default:default" \ policies="external-secrets" 시스템 서비스 계정에 대해 OIDC 인증이 성공적으로 실행되는지 확인합니다.
export TEST_JWT_TOKEN=$(kubectl -n mongodb-atlas-system create token default --audience "vault") vault write auth/jwt-kube01/login role=jwt-kube01-system jwt=$(TEST_JWT_TOKEN) Atlas Kubernetes Operator 는 시스템 서비스 계정에 대한 OIDC JSON web token 자격 증명 을 반환합니다.
기본 서비스 계정에 대해 OIDC 인증이 성공적으로 실행되는지 확인합니다.
export TEST_JWT_TOKEN=$(kubectl -n default create token default --audience "vault") vault write auth/jwt-kube01/login role=jwt-kube01-default jwt=$(TEST_JWT_TOKEN) Atlas Kubernetes Operator 는 기본값 서비스 계정에 대한 OIDC JSON web token 자격 증명 을 반환합니다.
Kubernetes 인증 을 설정하다 하려면 다음을 수행합니다.
다음 명령을 실행하여 마운트 경로에 대해 Kubernetes 인증 을 활성화 합니다. 여러 Kubernetes 클러스터를 설정하다 하는 경우 각 클러스터의 마운트 경로에 대해 Kubernetes 인증 을 활성화 해야 합니다.
vault auth enable -path=jwt-kube01 kubernetes Helm과 함께 설치하면 클러스터 역할 바인딩이 자동으로 구성됩니다.
클러스터 에 노출하려는 시크릿에 액세스 를 허용하는 정책을 생성합니다.
다음 예시 이후 단계에서 사용되는 정책을 만듭니다.
vault-secret
vault
Helm Chart CSI 제공자 설정한 HashiCorp Vault 서비스 계정에 바인딩된 Kubernetes 시크릿인 를 사용합니다.echo vault-secret.yaml apiVersion: v1 kind: Secret metadata: name: vault annotations: kubernetes.io/service-account.name: vault type: kubernetes.io/service-account-token $ kubectl apply -f vault-secret.yaml 명령을 실행하여 Kubernetes 클러스터 를 신뢰하고 Kubernetes 인증 을 사용합니다.
export VAULT_JWT ?= $(shell kubectl get secret/vault -o jsonpath='{.data.token}' |base64 -d) vault write auth/k8s-kube01/config kubernetes_host="kube01.internal.io" token_reviewer_jwt=$(VAULT_JWT) 명령을 실행하여 HashiCorp Vault 역할 생성하고 Kubernetes 서비스 계정을 역할 에 바인딩하여 HashiCorp Vault 내에서 서비스 계정의 액세스 제한합니다.
다음 명령은
k8s-kube01
auth/k8s-kube01
또는 네임스페이스의 Kubernetes 서비스 계정에 바인딩된default
에 역할mongodb-atlas-system
생성합니다. 이 역할secrets-store
HashiCorp Vault내의 권한 정책에 연결됩니다.vault write auth/k8s-kube01/role/k8s-kube01-role \ bound_service_account_names=default,mongodb-atlas-operator \ bound_service_account_namespaces=default,mongodb-atlas-system \ policies=secrets-store 정책이 존재하고 시크릿에 액세스 를 허용해야 합니다. 다음 예시 정책은
kube01/secrets-store
경로 아래에 있는 KV v2 시크릿에 액세스 를 허용합니다.path "secret/data/kube01/secrets-store/*" { capabilities = ["read"] } 시스템 서비스 계정에 대해 Kubernetes 인증 이 성공적으로 실행되는지 확인합니다.
export TEST_JWT_TOKEN=$( kubectl create -n mongodb-atlas-system token mongodb-atlas-operator) vault write auth/jwt-kube01/login role=jwt-kube01-system jwt=$(TEST_JWT_TOKEN) 기본값 계정에 대해 Kubernetes 인증 이 성공적으로 실행되는지 확인합니다.
export TEST_JWT_TOKEN=$(kubectl -n default create token default) vault write auth/jwt-kube01/login role=jwt-kube01-default jwt=$(TEST_JWT_TOKEN)
자동 시크릿 프로비저닝을 설정합니다.
External Secret Operator로 시크릿을 프로비저닝하려면 다음을 수행하세요.
mongodb-atlas-system
네임스페이스의default
서비스 계정에 대한SecretStore
사용자 지정 리소스를 배포합니다.$ cat external-secrets/vault-system.yaml apiVersion: external-secrets.io/v1beta1 kind: SecretStore metadata: name: vault-store namespace: mongodb-atlas-system spec: provider: vault: server: "https://vault.internal.io" path: "secret" version: "v2" auth: jwt: path: "jwt-kube01" role: "jwt-kube01-system" kubernetesServiceAccountToken: expirationSeconds: 600 serviceAccountRef: name: "default" audiences: - vault $ kubectl apply -f external-secrets/vault-system.yaml default
네임스페이스의default
서비스 계정에 대한SecretStore
사용자 지정 리소스를 배포합니다.$ cat external-secrets/vault-default.yaml apiVersion: external-secrets.io/v1beta1 kind: SecretStore metadata: name: vault-store namespace: default spec: provider: vault: server: "https://vault.internal.io" path: "secret" version: "v2" auth: jwt: path: "jwt-kube01" role: "jwt-role" kubernetesServiceAccountToken: expirationSeconds: 600 serviceAccountRef: name: "default" audiences: - vault $ kubectl apply -f external-secrets/vault-default.yaml API 키가 포함된 시크릿을 참고하는
ExternalSecret
사용자 지정 리소스를 배포합니다. 외부 Secrets Operator가 생성한 시크릿을 찾으려면 Atlas Kubernetes Operator에 대해 값이credentials
인spec.target.template.metadata.labels
를atlas.mongodb.com/type
로 설정해야 합니다.다음 명령을 실행 전에 HashiCorp Vault의 Kv V 경로 에 다음 속성으로 시크릿이 채워져 있는지2
secret/data/kube01/external-secrets/atlas-account
확인합니다.orgId
publicApiKey
privateApiKey
$ cat external-secrets/atlas.yaml apiVersion: external-secrets.io/v1beta1 kind: ExternalSecret metadata: name: atlas namespace: mongodb-atlas-system spec: refreshInterval: "15s" secretStoreRef: name: vault-store kind: SecretStore target: name: mongodb-atlas-operator-api-key template: metadata: labels: atlas.mongodb.com/type: credentials data: - secretKey: orgId remoteRef: key: secret/data/kube01/external-secrets/atlas-account property: orgId - secretKey: publicApiKey remoteRef: key: secret/data/kube01/external-secrets/atlas-account property: publicApiKey - secretKey: privateApiKey remoteRef: key: secret/data/kube01/external-secrets/atlas-account property: privateApiKey $ kubectl apply -f external-secrets/atlas.yaml 이 명령은 네임스페이스 에 Kubernetes 시크릿 를
mongodb-atlas-operator-api-key
생성합니다.mongodb-atlas-system
데이터베이스 사용자 자격 증명이 포함된 시크릿을 참고하는
ExternalSecret
사용자 지정 리소스를 배포합니다. 외부 Secrets Operator가 생성한 시크릿을 찾으려면 Atlas Kubernetes Operator에 대해 값이credentials
인spec.target.template.metadata.labels
를atlas.mongodb.com/type
로 설정해야 합니다.다음 명령을 실행 전에 HashiCorp Vault의 Kv V 경로2 에
secret/data/kube01/external-secrets/db-user
속성 으로 채워진 시크릿이 있는지password
확인합니다.$ cat external-secrets/dbuser.yaml apiVersion: external-secrets.io/v1beta1 kind: ExternalSecret metadata: name: dbuser namespace: default spec: refreshInterval: "15s" secretStoreRef: name: vault-store kind: SecretStore target: name: dbuser-password template: metadata: labels: atlas.mongodb.com/type: credentials data: - secretKey: password remoteRef: key: secret/data/kube01/external-secrets/db-user property: password $ kubectl apply -f external-secrets/atlas.yaml 다음 명령을 실행할 때 시크릿이 예상대로 반환되는지 확인합니다.
$ kubectl get -n mongodb-atlas-system secrets/mongodb-atlas-operator-api-key $ kubectl get -n default secrets/dbuser-password
Secret Store CSI로 시크릿을 프로비저닝하려면 다음을 수행합니다.
mongodb-atlas-system
네임스페이스 에SecretProviderClass
사용자 지정 리소스 를 배포합니다. Secrets Store CSI가 생성하는 시크릿을 찾으려면 Atlas Kubernetes Operator 에 대해 값이credentials
인spec.secretObjects.labels
를atlas.mongodb.com/type
로 설정하다 해야 합니다.다음 명령을 실행 전에 HashiCorp Vault의 Kv V 경로 에 다음 속성으로 시크릿이 채워져 있는지2
secret/data/kube01/external-secrets/atlas-account
확인합니다.orgId
publicApiKey
privateApiKey
$ cat secrets-store/atlas.yaml apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: atlas namespace: mongodb-atlas-system spec: provider: vault secretObjects: - data: - key: orgId objectName: atlas-org - key: publicApiKey objectName: atlas-pub-key - key: privateApiKey objectName: atlas-secret-key secretName: mongodb-atlas-operator-api-key type: Opaque labels: atlas.mongodb.com/type: credentials parameters: vaultAddress: https://vault.internal.io vaultKubernetesMountPath: k8s-kube01 roleName: k8s-kube01-role objects: | - objectName: atlas-org secretPath: secret/data/kube01/secrets-store/atlas-account secretKey: orgId - objectName: atlas-pub-key secretPath: secret/data/kube01/secrets-store/atlas-account secretKey: publicApiKey - objectName: atlas-secret-key secretPath: secret/data/kube01/secrets-store/atlas-account secretKey: privateApiKey $ kubectl apply -f secrets-store/atlas.yaml 이 명령은 네임스페이스 에 Kubernetes 시크릿 를
mongodb-atlas-operator-api-key
생성합니다.mongodb-atlas-system
다음 명령을 실행하여 필요한 시크릿을 마운트하는 pod를 추가합니다.
$ cat secrets-store/ako-patch.yaml template: spec: containers: - name: system-secret-placeholder image: mongodb/atlas command: ["sleep", "infinity"] volumeMounts: - name: secrets-store-mount mountPath: "/mnt/secrets-store" readOnly: true volumes: - name: secrets-store-mount csi: driver: secrets-store.csi.k8s.io readOnly: true volumeAttributes: secretProviderClass: atlas $ kubectl apply -f secrets-store/ako-patch.yaml 데이터베이스 사용자 자격 증명 이 포함된 시크릿을 참조하는
SecretProviderClass
사용자 지정 리소스 를 배포합니다. Secrets Store CSI가 생성하는 시크릿을 찾으려면 Atlas Kubernetes Operator 에 대한 값으로credentials
spec.target.template.metadata.labels
를atlas.mongodb.com/type
로 설정하다 해야 합니다.다음 명령을 실행 전에 HashiCorp Vault의 Kv V 경로2 에
secret/data/kube01/external-secrets/db-user
속성 으로 채워진 시크릿이 있는지password
확인합니다.$ cat external-secrets/dbuser.yaml apiVersion: external-secrets.io/v1beta1 kind: SecretProviderClass metadata: name: dbuser namespace: default spec: provider: vault secretObjects: - data: - key: password objectName: dbuser secretName: dbuser-password type: Opaque labels: atlas.mongodb.com/type: credentials parameters: vaultAddress: https://vault.internal.io vaultKubernetesMountPath: k8s-kube01 roleName: k8s-kube01-role objects: | - objectName: "dbuser" secretPath: "secret/data/kube01/secrets-store/db-user" secretKey: "password" $ kubectl apply -f secrets-store/dbuser.yaml 다음 명령을 실행하여
secret-placeholder
센티널 포드를 생성하면 Secrets Store CSI 운전자 가dbuser
자격 증명 을 가져와 Kubernetes 에 동기화 합니다.$ cat secrets-store/placeholder.yaml kind: Pod apiVersion: v1 metadata: name: secret-placeholder spec: containers: - image: mongodb/atlas command: ["sleep", "infinity"] name: secret-placeholder volumeMounts: - name: secrets-store-mount mountPath: "/mnt/secrets-store" readOnly: true volumes: - name: secrets-store-mount csi: driver: secrets-store.csi.k8s.io readOnly: true volumeAttributes: secretProviderClass: dbuser $ kubectl apply -f secrets-store/placeholder.yaml 다음 명령을 실행할 때 시크릿이 예상대로 반환되는지 확인합니다.
$ kubectl get -n mongodb-atlas-system secrets/mongodb-atlas-operator-api-key $ kubectl get -n default secrets/dbuser-password
Atlas Kubernetes Operator 사용자 지정 리소스를 배포합니다.
이제 Atlas Kubernetes Operator 사용자 지정 리소스를 배포 할 수 있습니다. Atlas Kubernetes Operator HashiCorp Vault를 참조하는 Kubernetes 시크릿으로 인증합니다.timeout
배포에 필요한 대로 값을 조정합니다.
kubectl apply -f ako/project.yaml kubectl apply -f ako/deployment.yaml kubectl apply -f ako/user.yaml kubectl wait --for=condition=ready atlasdeployment/serverless-deployment --timeout=10m kubectl wait --for=condition=ready atlasdatabaseuser/user --timeout=10m
이러한 사용자 지정 리소스에 대해 자세히 알아보려면 사용자 지정 리소스를 참조하세요 .
Atlas Kubernetes Operator 배포를 테스트합니다.
Atlas Kubernetes Operator 배포를 테스트하려면 다음 명령을 실행합니다.
export ATLAS_DEPLOYMENT_CONN_STR=$(kubectl get secrets/test-atlas-operator-project-test-serverless-deployment-dbuser -o jsonpath='{.data.connectionStringStandardSrv}' |base64 -d) mongosh $(ATLAS_DEPLOYMENT_CONN_STR) --apiVersion 1 --eval "show dbs"
Atlas Kubernetes Operator는 데이터베이스 배포 목록을 반환합니다.