다음을 통해 공유


자습서: 워크로드 ID를 사용하여 서비스 커넥터를 사용하여 AKS(Azure Kubernetes Service)에서 Azure Storage 계정에 연결

서비스 커넥터의 도움으로 워크로드 ID를 사용하여 Azure Storage 계정과 통신하는 AKS 클러스터에서 Pod를 만드는 방법을 알아봅니다. 이 자습서에서는 다음 작업을 완료합니다.

  • AKS 클러스터와 Azure Storage 계정을 만듭니다.
  • 서비스 커넥터를 사용하여 AKS 클러스터와 Azure Storage 계정 간의 연결을 만듭니다.
  • AKS 클러스터에서 Azure Storage 계정과 통신하는 샘플 애플리케이션을 복제합니다.
  • AKS 클러스터의 Pod에 애플리케이션을 배포하고 연결을 테스트합니다.
  • 리소스를 정리합니다.

Important

AKS 내의 Service Connect는 현재 미리 보기 상태입니다. 베타, 미리 보기로 제공되거나 아직 일반 공급으로 릴리스되지 않은 Azure 기능에 적용되는 약관은 Microsoft Azure 미리 보기에 대한 추가 사용 약관을 참조하세요.

필수 조건

Azure 리소스 만들기

  1. 이 자습서에 대한 리소스 그룹을 만듭니다.

    az group create \
        --name MyResourceGroup \
        --location eastus
    
  2. 다음 명령을 사용하거나 자습서를 참조하여 AKS 클러스터를 만듭니다. 서비스 연결, Pod 정의를 만들고 샘플 애플리케이션을 이 클러스터에 배포합니다.

    az aks create \
        --resource-group MyResourceGroup \
        --name MyAKSCluster \
        --enable-managed-identity \
        --node-count 1
    
  3. 다음 명령을 사용하여 클러스터에 연결합니다.

    az aks get-credentials \
        --resource-group MyResourceGroup \
        --name MyAKSCluster
    
  4. 다음 명령을 사용하거나 자습서를 참조하여 Azure Storage 계정을 만듭니다. 이는 AKS 클러스터에 연결되고 샘플 애플리케이션이 상호 작용하는 대상 서비스입니다.

    az storage account create \
        --resource-group MyResourceGroup \
        --name MyStorageAccount \
        --location eastus \
        --sku Standard_LRS
    
  5. 다음 명령을 사용하거나 자습서를 참조하여 Azure Container Registry를 만듭니다. 레지스트리는 AKS Pod 정의에서 사용되는 샘플 애플리케이션의 컨테이너 이미지를 호스팅합니다.

    az acr create \
        --resource-group MyResourceGroup \
        --name MyRegistry \
        --sku Standard
    

    그리고 AKS 클러스터가 레지스트리의 이미지를 사용할 수 있도록 익명 끌어오기를 사용하도록 설정합니다.

    az acr update \
        --resource-group MyResourceGroup \
        --name MyRegistry \
        --anonymous-pull-enabled
    
  6. 다음 명령을 사용하거나 자습서를 참조하여 사용자 할당 관리 ID를 만듭니다. 사용자 할당 관리 ID는 AKS 워크로드에 대한 워크로드 ID를 사용하도록 설정하기 위해 서비스 연결 만들기에 사용됩니다.

    az identity create \
        --resource-group MyResourceGroup \
        --name MyIdentity
    

서비스 커넥터를 사용하여 서비스 연결 만들기(미리 보기)

Azure Portal 또는 Azure CLI를 사용하여 AKS 클러스터와 Azure Storage 계정 간의 서비스 연결을 만듭니다.

  1. Azure Portal에서 Kubernetes Service를 열고 왼쪽 메뉴에서 서비스 커넥터를 선택합니다.

  2. 만들기를 선택하고 아래와 같이 설정을 입력합니다. 다른 설정은 기본값으로 그대로 둡니다.

    기본 사항 탭:

    설정 선택 설명
    Kubernetes 네임스페이스 default 클러스터에서 연결이 필요한 네임스페이스
    서비스 종류 Storage - Blob 대상 서비스 유형입니다.
    연결 이름 storage_conn 서비스 커넥터에서 제공하는 연결 이름을 사용하거나 사용자 고유의 연결 이름을 선택합니다.
    구독 <MySubscription> Azure Blob Storage 대상 서비스에 대한 구독입니다.
    스토리지 계정 <MyStorageAccount> 연결하려는 대상 스토리지 계정입니다.
    클라이언트 유형 Python 대상 서비스에 연결하는 데 사용하는 코드 언어 또는 프레임워크입니다.

    [인증] 탭:

    인증 설정 선택 설명
    인증 유형 워크로드 ID 서비스 커넥터 인증 유형입니다.
    사용자가 할당한 관리 ID <MyIdentity> 워크로드 ID를 사용하려면 사용자가 할당한 관리 ID가 필요합니다.
  3. 연결이 만들어지면 서비스 커넥터 페이지에 새 연결에 대한 정보가 표시됩니다. 서비스 커넥터에서 만들어진 kubernetes 리소스를 보여 주는 Azure Portal의 스크린샷.

샘플 애플리케이션 복제

  1. 샘플 리포지토리를 복제합니다.

    git clone https://github.com/Azure-Samples/serviceconnector-aks-samples.git
    
  2. Azure Storage에 대한 리포지토리의 샘플 폴더로 이동합니다.

    cd serviceconnector-aks-samples/azure-storage-workload-identity
    

컨테이너 이미지 빌드 및 푸시

  1. Azure CLI az acr build 명령을 사용하여 이미지를 빌드하고 컨테이너 레지스트리에 푸시합니다.

    az acr build --registry <MyRegistry> --image sc-demo-storage-identity:latest ./
    
  2. az acr repository list 명령을 사용하여 컨테이너 레지스트리의 이미지를 봅니다.

    az acr repository list --name <MyRegistry> --output table
    

애플리케이션 실행 및 연결 테스트

  1. azure-storage-identity 폴더에 있는 pod.yaml 파일의 자리 표시자를 바꿉니다.

    • <YourContainerImage>를 마지막 단계에서 빌드한 이미지 이름(예: <MyRegistry>.azurecr.io/sc-demo-storage-identity:latest)으로 바꿉니다.
    • <ServiceAccountCreatedByServiceConnector>를 연결 만들기 후 서비스 커넥터에서 만들어진 서비스 계정으로 바꿉니다. 서비스 커넥터의 Azure Portal에서 서비스 계정 이름을 확인할 수 있습니다.
    • <SecretCreatedByServiceConnector>를 연결 만들기 후 서비스 커넥터에서 만들어진 비밀로 바꿉니다. 서비스 커넥터의 Azure Portal에서 비밀 이름을 확인할 수 있습니다.
  2. kubectl apply 명령을 사용하여 클러스터에 Pod를 배포합니다. kubectl이 설치되지 않은 경우 az aks install-cli 명령을 사용하여 로컬로 설치합니다. 이 명령은 AKS 클러스터의 기본 네임스페이스에 sc-demo-storage-identity라는 Pod를 만듭니다.

    kubectl apply -f pod.yaml
    
  3. kubectl을 사용하여 Pod를 확인하여 배포가 성공했는지 확인합니다.

    kubectl get pod/sc-demo-storage-identity.
    
  4. kubectl로 로그를 확인하여 연결이 설정되었는지 확인합니다.

    kubectl logs pod/sc-demo-storage-identity
    

리소스 정리

이 자습서에서 만든 리소스를 재사용할 필요가 없는 경우 리소스 그룹을 삭제하여 만든 모든 리소스를 삭제합니다.

az group delete \
    --resource-group MyResourceGroup

다음 단계

서비스 커넥터 개념과 AKS가 서비스에 연결하는 데 어떻게 도움이 되는지 자세히 알아보려면 다음 문서를 참조하세요.