--- title: "Secret Manager 연동 예제" slug: "secret-manager-use-example" updated: 2026-09-17T09:07:38Z published: 2026-09-17T09:07:38Z canonical: "guide.ncloud-docs.com/secret-manager-use-example" 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와 연동하여 Secret을 사용할 수 있습니다. ## Secret Manager에서 Secret 생성 [Secret Manager 사용 가이드](https://guide.ncloud-docs.com/release-20260917/docs/secretmanager-use)를 참고해서 my-secret Secret을 생성하고 id, password를 Key로 가지는 Value를 등록합니다. ## Secret Manager 에 등록 된 Secret 전체를 마운트해서 사용 1. SecretProviderClass 생성 ``` apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: my-secret namespace: default spec: provider: ncp parameters: objects: | - objectName: "my-secret" objectType: "secretmanager" path: "my-secret.txt" ``` 1. SecretProviderClass를 마운트해서 사용하는 Pod 생성 ``` apiVersion: v1 kind: Pod metadata: name: my-pod namespace: default spec: containers: - name: my-pod command: [ "sleep", "1000000" ] image: busybox imagePullPolicy: IfNotPresent volumeMounts: - mountPath: "/var/secrets" name: my-secret volumes: - name: my-secret csi: driver: secrets-store.csi.k8s.io readOnly: true volumeAttributes: secretProviderClass: "my-secret" ``` 1. Pod에 접근해서 Secret이 정상적으로 마운트 되었는지 확인 ``` $ kubectl exec my-pod -- ls /var/secrets my-secret.txt $ kubectl exec my-pod -- cat /var/secrets/my-secret.txt {"id": "my-id", "password": "my-password"} ``` ## Secret Manager에 등록된 Secret의 특정 Key를 사용해서 마운트 1. SecretProviderClass 생성 ``` apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: my-secret namespace: default spec: provider: ncp parameters: objects: | - objectName: "my-secret" objectType: "secretmanager" secretKey: "id" path: "id.txt" - objectName: "my-secret" objectType: "secretmanager" secretKey: "password" path: "password.txt" ``` 1. SecretProviderClass를 마운트해서 사용하는 Pod 생성 ``` apiVersion: v1 kind: Pod metadata: name: my-pod namespace: default spec: containers: - name: my-pod command: [ "sleep", "1000000" ] image: busybox imagePullPolicy: IfNotPresent volumeMounts: - mountPath: "/var/secrets" name: my-secret volumes: - name: my-secret csi: driver: secrets-store.csi.k8s.io readOnly: true volumeAttributes: secretProviderClass: "my-secret" ``` 1. Pod에 접근해서 Secret이 정상적으로 마운트 되었는지 확인 ``` $ kubectl exec my-pod -- ls /var/secrets id.txt password.txt $ kubectl exec my-pod -- cat /var/secrets/id.txt my-id $ kubectl exec my-pod -- cat /var/secrets/password.txt my-password ``` ## Secret Manager에 등록된 Secret을 Kubernetes Secret과 동기화 Secret Manager에 등록된 Secret을 Kubernetes Secret과 동기화하려면 반드시 해당 Secret이 Pod에 마운트 되어 있어야 합니다. 1. SecretProviderClass 생성 ``` apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: my-secret namespace: default spec: provider: ncp parameters: objects: | - objectName: "my-secret" objectType: "secretmanager" path: "my-secret.txt" secretObjects: - secretName: my-secret type: Opaque data: - objectName: my-secret.txt key: my-key ``` 1. SecretProviderClass를 마운트해서 사용하는 Pod 생성 ``` apiVersion: v1 kind: Pod metadata: name: my-pod namespace: default spec: containers: - name: my-pod command: [ "sleep", "1000000" ] image: busybox imagePullPolicy: IfNotPresent volumeMounts: - mountPath: "/var/secrets" name: my-secret volumes: - name: my-secret csi: driver: secrets-store.csi.k8s.io readOnly: true volumeAttributes: secretProviderClass: "my-secret" ``` 1. 해당 Secret이 정상적으로 생성되었는지 확인 ``` $ kubectl get secret my-secret -o yaml apiVersion: v1 data: my-key: eyJpZCI6ICJteS1pZCIsICJwYXNzd29yZCI6ICJteS1wYXNzd29yZCJ9 kind: Secret metadata: labels: secrets-store.csi.k8s.io/managed: "true" name: my-secret namespace: default ownerReferences: - apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClassPodStatus name: my-pod-default-my-secret type: Opaque ```