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 이상인지 확인합니다. 이전 버전을 사용하는 경우 최신 버전을 설치하세요.
  • 클러스터에 대한 수신을 제한하는 경우 포트 98088095가 열려 있는지 확인합니다.
  • 권장되는 최소 Kubernetes 버전은 롤링 Kubernetes 버전 지원 창을 기반으로 합니다. 버전 N-2 이상을 실행하고 있는지 확인합니다.

비밀 저장소 CSI 드라이버용 Azure Key Vault 공급자 지원을 사용하여 AKS 클러스터 만들기

  1. az group create 명령을 사용하여 Azure 리소스 그룹을 만듭니다.

    az group create -n myResourceGroup -l eastus2
    
  2. az aks create 명령을 사용하여 비밀 저장소 CSI 드라이버용 Azure Key Vault 공급자 기능으로 AKS 클러스터를 만들고 azure-keyvault-secrets-provider 추가 기능을 사용하도록 설정합니다.

    참고 항목

    Microsoft Entra 워크로드 ID를 사용하려면 다음 예제와 같이 --enable-oidc-issuer--enable-workload-identity 매개 변수도 사용해야 합니다.

    az aks create -n myAKSCluster -g myResourceGroup --enable-addons azure-keyvault-secrets-provider --enable-oidc-issuer --enable-workload-identity
    
    az aks create -n myAKSCluster -g myResourceGroup --enable-addons azure-keyvault-secrets-provider
    
  3. 추가 기능은 Azure 리소스에 액세스하기 위해 사용자가 할당한 관리 ID azureKeyvaultSecretsProvider를 만듭니다. 다음 예제에서는 이 ID를 사용하여 비밀을 저장할 키 자격 증명 모음에 연결하지만 다른 ID 액세스 메서드를 사용할 수도 있습니다. 출력에 있는 ID의 clientId를 적어 둡니다.

    ...,
     "addonProfiles": {
        "azureKeyvaultSecretsProvider": {
          ...,
          "identity": {
            "clientId": "<client-id>",
            ...
          }
        }
    

참고 항목

이 기능을 사용하도록 설정하면 AKS는 노드 리소스 그룹에 관리 identity named azurekeyvaultsecretsprovider-xxx를 만들고 자동으로 VMSS(Virtual Machine Scale Sets)에 할당합니다. 이 관리 ID 또는 사용자 고유의 관리 ID를 사용하여 키 자격 증명 모음에 액세스할 수 있습니다. ID 생성을 방지할 수는 없습니다.

비밀 저장소 CSI 드라이버용 Azure Key Vault 공급자 지원으로 기존 AKS 클러스터 업그레이드

  • 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는 노드 리소스 그룹에 관리 identity named azurekeyvaultsecretsprovider-xxx를 만들고 자동으로 VMSS(Virtual Machine Scale Sets)에 할당합니다. 이 관리 ID 또는 사용자 고유의 관리 ID를 사용하여 키 자격 증명 모음에 액세스할 수 있습니다. ID 생성을 방지할 수는 없습니다.

비밀 저장소 CSI 드라이버용 Azure Key Vault 공급자 설치 확인

  1. kube-system 네임스페이스에 secrets-store-csi-driversecrets-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
    
  2. 클러스터의 노드 풀에 있는 각 노드에 비밀 저장소 CSI 드라이버 Pod 및 비밀 저장소 공급자 Azure Pod가 실행 중인지 확인합니다.

Azure Key Vault 만들기 또는 기존 Azure Key Vault 사용

  1. 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 -n <keyvault-name> -g myResourceGroup -l eastus2 --enable-rbac-authorization
    
    ## Update an existing Azure key vault
    az keyvault update -n <keyvault-name> -g myResourceGroup -l eastus2 --enable-rbac-authorization
    
  2. 키 자격 증명 모음에는 키, 비밀 및 인증서를 저장할 수 있습니다. 이 예제에서는 az keyvault secret set 명령을 사용하여 ExampleSecret이라는 일반 텍스트 암호를 설정합니다.

    az keyvault secret set --vault-name <keyvault-name> -n ExampleSecret --value MyAKSExampleSecret
    
  3. 나중에 사용할 수 있도록 다음 속성을 기록해 둡니다.

    • 키 자격 증명 모음에 있는 비밀 개체의 이름
    • 개체 형식(비밀, 키 또는 인증서)
    • 키 자격 증명 모음 리소스의 이름
    • 구독의 Azure 테넌트 ID

다음 단계

이 문서에서는 AKS 클러스터에서 비밀 저장소 CSI 드라이버용 Azure Key Vault 공급자를 사용하는 방법을 알아보았습니다. 이제 Azure Key Vault에 액세스하기 위한 ID를 제공해야 합니다. 방법을 알아보려면 계속해서 다음 문서를 진행하세요.