다음을 통해 공유


자습서: 워크로드 ID를 사용하여 AKS에서 Azure OpenAI Service에 연결(미리 보기)

이 자습서에서는 워크로드 ID와 서비스 커넥터를 사용하여 Azure OpenAI Service와 통신하는 AKS(Azure Kubernetes) 클러스터에서 Pod를 만드는 방법을 알아봅니다. 이 자습서에서는 다음 작업을 완료합니다.

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

필수 조건

Azure 리소스 만들기

여러 Azure 리소스를 만들어 이 자습서를 시작합니다.

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

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

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

    az aks get-credentials \
        --resource-group MyResourceGroup \
        --name MyAKSCluster
    
  4. az cognitiveservices account create 명령을 사용하여 Azure OpenAI Service 리소스를 만듭니다. 선택적으로 자세한 지침을 보려면 이 자습서을 참조하세요. Azure OpenAI Service는 AKS 클러스터에 연결할 대상 서비스입니다.

    az cognitiveservices account create \
        --resource-group MyResourceGroup \
        --name MyOpenAIService \
        --location eastus \
        --kind OpenAI \
        --sku s0 \
        --custom-domain myopenaiservice \
        --subscription <SubscriptionID>
    
  5. az cognitiveservices deployment create 명령을 사용하여 모델을 배포합니다. 모델은 샘플 애플리케이션에서 연결을 테스트하는 데 사용됩니다.

    az cognitiveservices account deployment create \
        --resource-group MyResourceGroup \
        --name MyOpenAIService
        --deployment-name MyModel \
        --model-name gpt-4 \
        --model-version 0613 \
        --model-format OpenAI \
        --sku-name "Standard"
        --capacity 1
    
  6. az acr create 명령을 사용하거나 이 자습서를 참조하여 ACR(Azure Container Registry) 리소스를 만듭니다. 레지스트리는 AKS Pod 정의가 사용하는 샘플 애플리케이션의 컨테이너 이미지를 호스팅합니다.

    az acr create \
        --resource-group MyResourceGroup \
        --name myregistry \
        --sku Standard
    
  7. AKS 클러스터가 레지스트리의 이미지를 사용할 수 있도록 az acr update 명령을 사용하여 익명 끌어오기를 사용하도록 설정합니다.

    az acr update \
        --resource-group MyResourceGroup \
        --name MyRegistry \
        --anonymous-pull-enabled
    
  8. az identity create 명령을 사용하거나 이 자습서를 참조하여 사용자 할당 관리 ID를 만듭니다. 연결이 만들어지면 사용자가 할당한 관리 ID를 사용하여 AKS 워크로드에 대한 워크로드 ID를 사용하도록 설정합니다.

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

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

Azure Portal 또는 Azure CLI에서 AKS 클러스터와 Azure OpenAI Service 간의 서비스 연결을 만듭니다.

새 연결을 만들고 다음 표의 예를 참조하여 설정을 입력하는 방법은 AKS 서비스 연결 빠른 시작을 참조하세요. 다른 모든 설정은 기본값으로 둡니다.

  1. 기본 사항 탭:

    설정 예제 값 설명
    Kubernetes 네임스페이스 default Kubernetes 네임스페이스입니다.
    서비스 종류 OpenAI Service 대상 서비스 유형입니다.
    연결 이름 openai_conn 서비스 커넥터에서 제공하는 연결 이름을 사용하거나 사용자 고유의 연결 이름을 선택합니다.
    구독 <MySubscription> Azure OpenAI Service에 사용되는 구독입니다.
    OpenAI <MyOpenAIService> 연결하려는 대상 Azure OpenAI Service입니다.
    클라이언트 유형 Python 대상 서비스에 연결하는 데 사용하는 코드 언어 또는 프레임워크입니다.
  2. [인증] 탭:

    인증 설정 예제 값 설명
    인증 유형 워크로드 ID 서비스 커넥터 인증 유형입니다.
    구독 <MySubscription> 사용자가 할당한 관리 ID가 포함된 구독입니다.
    사용자가 할당한 관리 ID <MyIdentity> 워크로드 ID를 사용하려면 사용자가 할당한 관리 ID가 필요합니다.

연결이 만들어지면 서비스 커넥터 창에서 세부 정보를 볼 수 있습니다.

샘플 애플리케이션 복제

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

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

    cd serviceconnector-aks-samples/azure-openai-workload-identity
    
  3. app.py 파일의 <MyModel> 자리 표시자를 배포한 모델 이름으로 바꿉니다.

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

  1. Azure CLI az acr build 명령을 사용하여 이미지를 빌드하고 ACR에 푸시합니다.

    az acr build --registry <MyRegistry> --image sc-demo-openai-identity:latest ./
    
  2. az acr repository list 명령을 사용하여 ACR 인스턴스의 이미지를 봅니다.

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

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

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

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

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

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

    kubectl logs pod/sc-demo-openai-identity
    

리소스 정리

이 자습서에서 만들어진 리소스가 더 이상 필요하지 않으면 리소스 그룹을 삭제하여 정리합니다.

az group delete \
    --resource-group MyResourceGroup

다음 단계

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