자습서: AKS(Azure Kubernetes Service) 클러스터의 비밀 저장소 CSI 드라이버에 대한 Azure Key Vault 공급자 사용
서비스 커넥터의 도움으로 AKS(Azure Kubernetes Service) 클러스터에서 CSI 드라이버를 사용하여 Azure Key Vault에 연결하는 방법을 알아봅니다. 이 자습서에서는 다음 작업을 완료합니다.
- AKS 클러스터 및 Azure Key Vault를 만듭니다.
- 서비스 커넥터를 사용하여 AKS 클러스터와 Azure Key Vault 간의 연결을 만듭니다.
- 연결을 테스트하기 위해 CSI 공급자를 사용하는
SecretProviderClass
CRD 및pod
를 만듭니다. - 리소스를 정리합니다.
Important
AKS 내의 Service Connect는 현재 미리 보기 상태입니다. 베타, 미리 보기로 제공되거나 아직 일반 공급으로 릴리스되지 않은 Azure 기능에 적용되는 약관은 Microsoft Azure 미리 보기에 대한 추가 사용 약관을 참조하세요.
Warning
사용 가능한 가장 안전한 인증 흐름을 사용하는 것이 권장됩니다. 이 절차에서 설명된 인증 흐름은 다른 흐름에는 없는 위험을 전달하며, 애플리케이션에서 매우 높은 신뢰 수준을 요구합니다. 이 흐름은 관리 ID와 같은 보다 안전한 다른 흐름을 실행할 수 없는 경우에만 사용되어야 합니다.
필수 조건
- 활성 구독이 있는 Azure 계정. 체험 계정을 만듭니다.
- Azure CLI를 설치하고 az login 명령을 사용하여 Azure CLI에 로그인합니다.
- 컨테이너 이미지와 Kubernetes 리소스를 관리하려면 Docker와 kubectl을 설치합니다.
- 컨테이너 및 AKS에 대한 기본 이해. AKS용 애플리케이션 준비부터 시작해 보세요.
Azure 리소스 만들기
이 자습서에 대한 리소스 그룹을 만듭니다.
az group create \ --name MyResourceGroup \ --location eastus
다음 명령을 사용하거나 자습서를 참조하여 AKS 클러스터를 만듭니다. 이는 서비스 연결, Pod 정의를 만들고 샘플 애플리케이션을 배포하는 클러스터입니다.
az aks create \ --resource-group MyResourceGroup \ --name MyAKSCluster \ --enable-managed-identity \ --node-count 1
다음 명령을 사용하여 클러스터에 연결합니다.
az aks get-credentials \ --resource-group MyResourceGroup \ --name MyAKSCluster
다음 명령을 사용하거나 자습서를 참조하여 Azure Key Vault를 만듭니다. 이는 AKS 클러스터에 연결된 대상 서비스이며 CSI 드라이버는 비밀을 동기화합니다.
az keyvault create \ --resource-group MyResourceGroup \ --name MyKeyVault \ --location EastUS
다음 명령을 사용하여 Key Vault에 비밀을 만듭니다.
az keyvault secret set \ --vault-name MyKeyVault \ --name ExampleSecret \ --value MyAKSExampleSecret
서비스 커넥터(미리 보기)를 사용하여 AKS에서 서비스 연결 만들기
Azure Portal 또는 Azure CLI를 사용하여 AKS 클러스터와 Azure Key Vault 간의 서비스 연결을 만듭니다.
Azure Portal에서 Kubernetes Service를 열고 왼쪽 메뉴에서 서비스 커넥터를 선택합니다.
만들기를 선택하고 아래와 같이 설정을 입력합니다. 다른 설정은 기본값으로 그대로 둡니다.
설정 선택 설명 Kubernetes 네임스페이스 default 클러스터에서 연결이 필요한 네임스페이스 서비스 종류 Key Vault(CSI 사용) 대상 서비스 형식으로 Key Vault를 선택하고 CSI를 사용하도록 설정하는 옵션을 선택합니다. 연결 이름 keyvault_conn 서비스 커넥터에서 제공하는 연결 이름을 사용하거나 사용자 고유의 연결 이름을 선택합니다. 구독 <MySubscription>
Azure Key Vault 대상 서비스에 대한 구독. Key vault <MyKeyVault>
연결하려는 대상 키 자격 증명 모음. 클라이언트 유형 Python 대상 서비스에 연결하는 데 사용하는 코드 언어 또는 프레임워크. 연결이 만들어지면 서비스 커넥터 페이지에 새 연결에 대한 정보가 표시됩니다.
연결 테스트
샘플 리포지토리를 복제합니다.
git clone https://github.com/Azure-Samples/serviceconnector-aks-samples.git
Azure Key Vault에 대한 리포지토리의 샘플 폴더로 이동합니다.
cd serviceconnector-aks-samples/azure-keyvault-csi-provider
azure-keyvault-csi-provider
폴더에 있는secret_provider_class.yaml
파일의 자리 표시자를 바꿉니다.<AZURE_KEYVAULT_NAME>
을 만들고 연결한 키 자격 증명 모음의 이름으로 바꿉니다. 서비스 커넥터의 Azure Portal에서 값을 가져올 수 있습니다.<AZURE_KEYVAULT_TENANTID>
를 키 자격 증명 모음의 테넌트 ID로 바꿉니다. 서비스 커넥터의 Azure Portal에서 값을 가져올 수 있습니다.<AZURE_KEYVAULT_CLIENTID>
를azureKeyvaultSecretsProvider
추가 기능의 ID 클라이언트 ID로 바꿉니다. 서비스 커넥터의 Azure Portal에서 값을 가져올 수 있습니다.<KEYVAULT_SECRET_NAME>
을 만든 키 자격 증명 모음 비밀 이름(예:ExampleSecret
)으로 바꾸기
kubectl apply
명령을 사용하여 Kubernetes 리소스를 클러스터에 배포합니다.kubectl
이 설치되지 않은 경우 az aks install-cli 명령을 사용하여 로컬로 설치합니다.SecretProviderClass
CRD를 배포합니다.
kubectl apply -f secret_provider_class.yaml
pod
를 배포합니다. 이 명령은 AKS 클러스터의 기본 네임스페이스에sc-demo-keyvault-csi
라는 Pod를 만듭니다.
kubectl apply -f pod.yaml
kubectl
을 사용하여 Pod를 확인하여 배포가 성공했는지 확인합니다.kubectl get pod/sc-demo-keyvault-csi
Pod가 시작된 후에는 배포 YAML에 지정된 볼륨 경로에 탑재된 콘텐츠를 사용할 수 있습니다. 다음 명령을 사용하여 비밀의 유효성을 검사하고 테스트 비밀을 인쇄합니다.
- 다음 명령을 사용하여 비밀 저장소에 보관된 비밀을 표시합니다.
kubectl exec sc-demo-keyvault-csi -- ls /mnt/secrets-store/
- 다음 명령을 사용하여 저장소에 비밀을 표시합니다. 다음 예제 명령에서는 테스트 비밀
ExampleSecret
을 보여줍니다.
kubectl exec sc-demo-keyvault-csi -- cat /mnt/secrets-store/ExampleSecret
리소스 정리
이 자습서에서 만든 리소스를 재사용할 필요가 없는 경우 리소스 그룹을 삭제하여 만든 모든 리소스를 삭제합니다.
az group delete \
--resource-group MyResourceGroup
다음 단계
서비스 커넥터 개념과 AKS가 서비스에 연결하는 데 어떻게 도움이 되는지 자세히 알아보려면 다음 문서를 참조하세요.