AKS(Azure Kubernetes Service) 클러스터의 비밀 저장소 CSI 드라이버에 대한 Azure Key Vault 공급자 사용
비밀 저장소 CSI 드라이버용 Azure Key Vault 공급자를 사용하면 Azure Key Vault를 CSI 볼륨을 통해 AKS(Azure Kubernetes Service) 클러스터와 비밀 저장소로 통합할 수 있습니다.
- CSI 볼륨을 사용하여 Pod에 비밀, 키 및 인증서를 탑재합니다.
- CSI 인라인 볼륨을 지원합니다.
- 단일 볼륨으로 여러 비밀 저장소 개체 탑재를 지원합니다.
SecretProviderClass
CRD를 사용하여 Pod 이식성을 지원합니다.- Windows 컨테이너를 지원합니다.
- Kubernetes 비밀과 동기화합니다.
- 탑재된 콘텐츠 및 동기화된 Kubernetes 비밀의 자동 순환을 지원합니다.
subPath 볼륨 탑재를 사용하는 컨테이너는 순환될 때 비밀 업데이트를 수신하지 않습니다. 자세한 내용은 비밀 저장소 CSI 드라이버의 알려진 제한 사항을 참조하세요.
- Azure 구독이 없는 경우 시작하기 전에 체험 계정을 만듭니다.
- Azure CLI 버전이 2.30.0 이상인지 확인합니다. 이전 버전을 사용하는 경우 최신 버전을 설치하세요.
- 클러스터에 대한 수신을 제한하는 경우 포트 9808 및 8095가 열려 있는지 확인합니다.
- 권장되는 최소 Kubernetes 버전은 롤링 Kubernetes 버전 지원 창을 기반으로 합니다. 버전 N-2 이상을 실행하고 있는지 확인합니다.
az group create
명령을 사용하여 Azure 리소스 그룹을 만듭니다.az group create --name myResourceGroup --location eastus2
--enable-addons azure-keyvault-secrets-provider
매개 변수와 함께az aks create
명령을 사용하여 비밀 저장소 CSI 드라이버 기능에 대한 Azure Key Vault 공급자를 사용하여 AKS 클러스터를 만듭니다. 추가 기능은 키 자격 증명 모음에서 인증을 받는 데 사용할 수 있는 사용자가 할당한 관리 ID를 만듭니다. 다음 예제에서는 비밀 저장소 CSI 드라이버용 Azure Key Vault 공급자를 사용하는 AKS 클러스터를 만듭니다.참고
Microsoft Entra 워크로드 ID를 사용하려면 다음 예제와 같이
--enable-oidc-issuer
및--enable-workload-identity
매개 변수도 사용해야 합니다.az aks create --name myAKSCluster --resource-group myResourceGroup --enable-addons azure-keyvault-secrets-provider --enable-oidc-issuer --enable-workload-identity --generate-ssh-keys
az aks create \ --name myAKSCluster \ --resource-group myResourceGroup \ --enable-addons azure-keyvault-secrets-provider \ --generate-ssh-keys
이전 명령은 Azure 리소스에 액세스하기 위해
azureKeyvaultSecretsProvider
사용자가 할당한 관리 ID를 만듭니다. 다음 예제에서는 이 ID를 사용하여 비밀을 저장할 키 자격 증명 모음에 연결하지만 다른 ID 액세스 메서드를 사용할 수도 있습니다. 출력에 있는 ID의clientId
를 적어 둡니다...., "addonProfiles": { "azureKeyvaultSecretsProvider": { ..., "identity": { "clientId": "<client-id>", ... } }
참고
이 기능을 사용하도록 설정하면 AKS는 노드 리소스 그룹에 명명된 azurekeyvaultsecretsprovider-xxx
관리 ID를 만들고 VMSS(Virtual Machine Scale Sets)에 자동으로 할당합니다. 이 관리 ID 또는 사용자 고유의 관리 ID를 사용하여 키 자격 증명 모음에 액세스할 수 있습니다. ID 생성을 방지할 수는 없습니다.
az aks enable-addons
명령을 사용하여 비밀 저장소 CSI 드라이버 기능을 위한 Azure Key Vault 공급자로 기존 AKS 클러스터를 업그레이드하고azure-keyvault-secrets-provider
추가 기능을 사용하도록 설정합니다. 추가 기능은 키 자격 증명 모음에서 인증을 받는 데 사용할 수 있는 사용자가 할당한 관리 ID를 만듭니다.az aks enable-addons --addons azure-keyvault-secrets-provider --name myAKSCluster --resource-group myResourceGroup
참고
이 기능을 사용하도록 설정하면 AKS는 노드 리소스 그룹에 명명된 azurekeyvaultsecretsprovider-xxx
관리 ID를 만들고 VMSS(Virtual Machine Scale Sets)에 자동으로 할당합니다. 이 관리 ID 또는 사용자 고유의 관리 ID를 사용하여 키 자격 증명 모음에 액세스할 수 있습니다. ID 생성을 방지할 수는 없습니다.
[
az aks get-credentials
][az-aks-get-credentials] 명령을 사용하여 AKS 클러스터 자격 증명을 가져옵니다.az aks get-credentials --name myAKSCluster --resource-group myResourceGroup
kube-system 네임스페이스에
secrets-store-csi-driver
및secrets-store-provider-azure
레이블이 있는 모든 Pod를 나열하는kubectl get pods
명령을 사용하여 설치가 완료되었는지 확인합니다.kubectl get pods -n kube-system -l 'app in (secrets-store-csi-driver,secrets-store-provider-azure)'
출력은 다음 예제 출력과 비슷하게 됩니다.
NAME READY STATUS RESTARTS AGE aks-secrets-store-csi-driver-4vpkj 3/3 Running 2 4m25s aks-secrets-store-csi-driver-ctjq6 3/3 Running 2 4m21s aks-secrets-store-csi-driver-tlvlq 3/3 Running 2 4m24s aks-secrets-store-provider-azure-5p4nb 1/1 Running 0 4m21s aks-secrets-store-provider-azure-6pqmv 1/1 Running 0 4m24s aks-secrets-store-provider-azure-f5qlm 1/1 Running 0 4m25s
클러스터의 노드 풀에 있는 각 노드에 비밀 저장소 CSI 드라이버 Pod 및 비밀 저장소 공급자 Azure Pod가 실행 중인지 확인합니다.
az keyvault create
명령 또는az keyvault update
명령을--enable-rbac-authorization
플래그와 함께 사용하여 Azure RBAC(Azure 역할 기반 액세스 제어)를 사용하는 키 자격 증명 모음을 만들거나 업데이트합니다. Key Vault의 이름은 전역적으로 고유해야 합니다. 키 자격 증명 모음 사용 권한 모델 및 Azure RBAC에 대한 자세한 내용은 Azure 역할 기반 액세스 제어를 사용하여 Key Vault 키, 인증서 및 비밀에 대한 액세스 제공을 참조하세요.## Create a new Azure key vault az keyvault create --name <keyvault-name> --resource-group myResourceGroup --location eastus2 --enable-rbac-authorization ## Update an existing Azure key vault az keyvault update --name <keyvault-name> --resource-group myResourceGroup --location eastus2 --enable-rbac-authorization
키 자격 증명 모음에는 키, 비밀 및 인증서를 저장할 수 있습니다. 이 예제에서는
az keyvault secret set
명령을 사용하여ExampleSecret
이라는 일반 텍스트 암호를 설정합니다.az keyvault secret set --vault-name <keyvault-name> --name ExampleSecret --value MyAKSExampleSecret
나중에 사용할 수 있도록 다음 속성을 기록해 둡니다.
- 키 자격 증명 모음에 있는 비밀 개체의 이름
- 개체 형식(비밀, 키 또는 인증서)
- 키 자격 증명 모음 리소스의 이름
- 구독의 Azure 테넌트 ID
이 문서에서는 AKS 클러스터에서 비밀 저장소 CSI 드라이버용 Azure Key Vault 공급자를 사용하는 방법을 알아보았습니다. 이제 Azure Key Vault에 액세스하기 위한 ID를 제공해야 합니다. 방법을 알아보려면 계속해서 다음 문서를 진행하세요.
Azure Kubernetes Service 피드백
Azure Kubernetes Service은(는) 오픈 소스 프로젝트입니다. 다음 링크를 선택하여 피드백을 제공해 주세요.