다음을 통해 공유


자습서: AZURE OpenAI에 AKS 연결

이 자습서에서는 워크로드 ID 인증을 통해 서비스 커넥터를 사용하여 AKS(Azure Kubernetes Service) 애플리케이션을 Azure OpenAI에 연결하는 방법을 보여 줍니다. Azure OpenAI와 통신하는 샘플 Python 애플리케이션을 배포하여 자격 증명 없는 연결을 설정합니다.

다음 작업을 완료합니다.

  • GPT-4 모델을 사용하여 AKS 클러스터 및 Azure OpenAI 리소스 만들기
  • 워크로드 ID와의 연결을 설정하도록 서비스 커넥터 구성
  • 샘플 애플리케이션 복제
  • Azure Container Registry에 컨테이너 이미지 빌드 및 푸시
  • AKS에 애플리케이션 배포 및 연결 확인
  • 리소스 정리

필수 조건

Azure OpenAI 및 AKS 리소스 만들기

여러 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 리소스를 만듭니다. 선택적으로 자세한 지침을 보려면 이 자습서을 참조하세요. Azure OpenAI는 AKS 클러스터가 연결할 대상 서비스입니다.

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

    az cognitiveservices account deployment create \
        --resource-group MyResourceGroup \
        --name MyOpenAI \
        --deployment-name MyModel \
        --model-name gpt-4 \
        --model-version 0613 \
        --model-format OpenAI \
        --sku-name "Standard" \
        --capacity 1
    
  6. 컨테이너화된 샘플 애플리케이션을 저장할 ACR(Azure Container Registry)을 만듭니다. az acr create 명령을 사용하거나 이 자습서를 참조하세요.

    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를 만듭니다. 연결이 만들어지면 AKS 워크로드에 대한 워크로드 ID 를 사용하도록 설정하는 데 사용자 할당 관리 ID가 사용됩니다.

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

AKS에서 Azure OpenAI로 서비스 연결 만들기

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

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

  1. 기본 사항 탭:

    설정 예제 값 설명
    Kubernetes 네임스페이스 default Kubernetes 네임스페이스입니다.
    서비스 종류 OpenAI 서비스 대상 서비스 유형입니다.
    연결 이름 openai_conn 서비스 커넥터에서 제공하는 연결 이름을 사용하거나 사용자 고유의 연결 이름을 선택합니다.
    구독 내 구독 Azure OpenAI 리소스를 포함하는 Azure 구독입니다.
    OpenAI MyOpenAI 연결하려는 대상 Azure OpenAI 리소스입니다.
    클라이언트 유형 Python 연결 구성에 대한 프로그래밍 언어 또는 프레임워크입니다.
  2. [인증] 탭:

인증 설정 예제 값 설명
인증 유형 워크로드 ID Azure OpenAI에 앱을 연결하는 인증 방법입니다. 보안 강화를 위해 워크로드 ID를 사용하는 것이 좋습니다. 다른 방법은 연결 문자열 및 서비스 주체를 포함하며 자격 증명 관리 고려 사항이 필요합니다.
구독 내 구독 사용자 할당 관리 ID를 포함하는 구독입니다.
사용자가 할당한 관리 ID myidentity AKS 클러스터에 대한 워크로드 ID 인증을 사용하도록 설정하는 사용자 할당 관리 ID입니다.

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

Python 샘플 애플리케이션 복제

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

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

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

Azure Container Registry에 컨테이너 이미지 빌드 및 푸시

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

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

    az acr repository list --name myregistry --output table
    

Azure OpenAI 연결에 AKS 배포 및 테스트

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

    • 이전에 빌드한 이미지의 이름으로 바꿉 <YourContainerImage> 습니다. (예: <myregistry>.azurecr.io/<sc-demo-openai-identity>:<latest>)
    • 서비스 계정 이름으로 바꿉 <ServiceAccountCreatedByServiceConnector> 다. Azure Portal의 서비스 커넥터 창에서 찾을 수 있습니다.
    • 비밀 이름으로 바꿉니다 <SecretCreatedByServiceConnector> . Azure Portal의 서비스 커넥터 창에서 찾을 수 있습니다.
  2. AKS 클러스터의 기본 네임스페이스에 kubectl apply라는 Pod를 만드는 sc-demo-openai-identity 명령을 사용하여 클러스터에 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