--- title: "Secret Manager 연동" slug: "k8s-k8suse-secret-manager" updated: 2026-09-17T09:07:38Z published: 2026-09-17T09:07:38Z canonical: "guide.ncloud-docs.com/k8s-k8suse-secret-manager" stale: true --- > ## Documentation Index > Fetch the complete documentation index at: https://guide.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # Secret Manager 연동 VPC 환경에서 이용 가능합니다. Ncloud Kubernetes Service에서는 [Secret Manager](https://guide.ncloud-docs.com/release-20260917/docs/secretmanager-overview)에 저장된 Secret을 연동하여 사용할 수 있습니다. 해당 기능은 Kubernetes에서 제공하는 [Secrets Store CSI Driver](https://secrets-store-csi-driver.sigs.k8s.io/)와 Ncloud Kubernetes Service에서 제공하는 secrets-store-csi-drvier-provider-ncp를 통해 제공됩니다. ## 제약 사항 - Secret Manager는 한국, 일본 리전에서만 제공됩니다. ## 요구 사항 - Secret Manager를 사용하고 있어야 합니다. - Secret Manager 조회를 위해 서브계정 일 경우 NCP_SECRETMANAGER_USER 권한이 필요합니다. ## 기능 - Secret Manager에 저장된 Secret을 Pod에 볼륨으로 마운트하여 사용할 수 있습니다. - Secret Manager에 저장된 Secret이 교체될 경우 Pod에 마운트 된 Secret도 자동으로 교체할 수 있습니다. - Secret Manager에 저장된 Secret을 Kubernetes의 Secret과 동기화할 수 있습니다. ## 설치 Secret Manager 연동을 위해 secrets-store-csi-driver와 secrets-store-csi-driver-provider-ncp를 설치해야 합니다. 1. 아래 명령어를 통해 secrets-store-csi-driver를 설치해 주십시오. ``` $ helm repo add secrets-store-csi-driver https://kubernetes-sigs.github.io/secrets-store-csi-driver/charts $ helm install csi-secrets-store secrets-store-csi-driver/secrets-store-csi-driver --namespace kube-system ``` - Secret 교체 기능을 사용하려면 `--set enableSecretRotation=true` 설정을 추가해 주십시오. - Kubernetes Secret 동기화 기능을 사용하려면 `--set syncSecret.enabled=true` 설정을 추가해 주십시오. 2. Secret Manager API 호출을 위한 인증 정보를 생성해 주십시오. ``` $ vi configure ncloud_access_key_id= ncloud_secret_access_key= secretmanager_api_url= ``` - ncloud_access_key_id: Ncloud AcessKey - ncloud_secret_access_key: Ncloud SecretKey - secretmanager_api_url - 한국: https://ocapi-kr.ncloud.com/secretmanager/api/v1 - 일본: https://ocapi-jp.ncloud.com/secretmanager/api/v1 3. 아래 명령어를 통해 인증정보를 Kubernetes Secret으로 생성해 주십시오. ``` $ kubectl -n kube-system create secret generic ncp-secrets-store-credentials --from-file=./configure ``` 4. 아래 명령어를 통해 해당하는 리전의 secrets-store-csi-driver-provider-ncp를 설치해 주십시오. ``` # 한국 리전 $ kubectl --kubeconfig=$KUBE_CONFIG apply -f https://kr.object.ncloudstorage.com/nks-download/secrets-store-csi-driver-provider-ncp/pub/kr/v0.1.0/provider-ncp.yaml # 일본 리전 $ kubectl --kubeconfig=$KUBE_CONFIG apply -f https://kr.object.ncloudstorage.com/nks-download/secrets-store-csi-driver-provider-ncp/pub/jp/v0.1.0/provider-ncp.yaml ``` 5. 아래 명령어를 통해 설치된 Pod 들이 정상적으로 동작하는지 확인해 주십시오. ``` $ kubectl -n kube-system get po -l app.kubernetes.io/instance=csi-secrets-store $ kubectl -n kube-system get po -l app=secrets-store-csi-driver-provider-ncp ``` ## 사용 ### SecretProviderClass 정의 SecretProviderClass를 정의하여 Secret Manager와 연동된 Secret을 사용할 수 있습니다. ``` apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: my-secret namespace: my-namespace spec: provider: ncp parameters: objects: | - objectName: "my-secret" objectType: "secretmanager" path: "my-secret.txt" - objectName: "my-secret" objectType: "secretmanager" secretKey: "id" path: "id.txt" - objectName: "my-secret" objectType: "secretmanager" secretKey: "password" path: "password.txt" secretObjects: - secretName: my-secret type: Opaque data: - objectName: my-secret.txt key: my-key ``` - provider: ncp - objects: 파일로 마운트 할 Secret 을 정의합니다. - objectName: SecretManager에 생성 한 Secret 이름 - objectType: secretmanager - path: Pod에 마운트 될 파일 이름 - secretKey(선택사항): SecretManager에 저장된 Secret 중 해당 Key의 Value만 사용. 정의하지 않으면 해당 Secret에 저장된 모든 Key/Value를 JSON 형태로 사용 - secretObjects(선택사항): Kubernetes Secret과 동기화를 할 경우 설정 - secretName: 생성 될 Kubernetes Secret - data.objectName: Pod에 마운트 된 파일 이름(path) - data.key: 생성 된 Secret data의 key 이름 ### Pod 마운트 설정 Pod의 volumes에 secretProviderClass를 설정하여 사용할 수 있습니다. ``` volumes: - name: my-secret csi: driver: secrets-store.csi.k8s.io readOnly: true volumeAttributes: secretProviderClass: "my-secret" ``` ### Secret 마운트 상태 확인 SecretProviderClassPodStatus를 조회해서 현재 Pod에 마운트 된 Secret의 상태를 확인할 수 있습니다. ``` $ kubectl get secretproviderclasspodstatuses -- -o yaml ... status: mounted: true objects: - id: secretmanager/my-secret version: "1" podName: my-pod secretProviderClassName: my-secret targetPath: /var/lib/kubelet/pods/1d401b1a-9a16-4335-b015-59e11e87b349/volumes/kubernetes.io~csi/my-secret/mount ``` ### Secret 교체 기능 사용 Secret Manager의 [Secret 교체 설정](https://guide.ncloud-docs.com/release-20260917/docs/secretmanager-rotate-action)을 참고해서 Secret 교체를 진행하실 수 있습니다. Secret Manager의 Secret이 교체되면 해당 Secret이 마운트 된 파일 또한 자동으로 동기화됩니다. 해당 기능은 secrets-store-csi-driver의 알파 버전으로 제공되고 있으며 사용 전에 [공식 가이드](https://secrets-store-csi-driver.sigs.k8s.io/topics/secret-auto-rotation) 참고 바랍니다.