다음을 통해 공유


Azure에 EDW(이벤트 기반 워크플로) 워크로드 배포 준비

AWS 워크로드 샘플은 Bash, CloudFormation 및 AWS CLI를 사용하여 배포됩니다. 소비자 Python 앱은 컨테이너로 배포됩니다. 다음 섹션에서는 Azure 워크플로가 어떻게 다른지 설명합니다. AKS(Azure Kubernetes Service) 클러스터 및 지원 인프라를 배포하는 데 사용되는 Bash 스크립트에 변경 내용이 있습니다. 또한 Amazon SQS(Simple Queue Service) 배율 조정기 대신 Azure Storage Queue 배율 조정기를 사용하도록 KEDA를 구성하기 위해 Kubernetes 배포 매니페스트가 수정되었습니다.

Azure 워크플로는 Karpenter를 기반으로 하는 AKS NAP(노드 자동 프로비전) 기능을 사용합니다. 이 기능은 Karpenter를 명시적으로 배포하기 위해 Helm을 사용할 필요가 없도록 하여 AKS에서 Karpenter의 배포 및 사용을 크게 간소화합니다. 그러나 Karpenter를 직접 배포해야 하는 경우에는 AKS GitHub의 Karpenter 공급자를 사용하면 됩니다.

Kubernetes 배포 매니페스트 구성

AWS는 Kubernetes 배포 YAML 매니페스트를 사용하여 워크로드를 EKS에 배포합니다. AWS 배포 YAML에는 KEDA 배율 조정기에 대한 SQS 및 DynamoDB를 참조하므로 Azure 배율 조정기가 Azure 인프라에 연결하는 데 사용할 KEDA와 동등한 값을 지정하도록 이를 변경해야 합니다. 이렇게 하려면 Azure Storage Queue KEDA 배율 조정기를 구성합니다.

다음 코드 조각은 AWS 및 Azure 구현에 대한 예 YAML 매니페스트를 보여 줍니다.

AWS 구현

    spec:
      serviceAccountName: $SERVICE_ACCOUNT
      containers:
      - name: <sqs app name>
        image: <name of Python app container>
        imagePullPolicy: Always
        env:
        - name: SQS_QUEUE_URL
          value: https://<Url To SQS>/<region>/<QueueName>.fifo
        - name: DYNAMODB_TABLE
          value: <table name>
        - name: AWS_REGION
          value: <region>

Azure 구현

    spec:
      serviceAccountName: $SERVICE_ACCOUNT
      containers:
      - name: keda-queue-reader
        image: ${AZURE_CONTAINER_REGISTRY_NAME}.azurecr.io/aws2azure/aqs-consumer
        imagePullPolicy: Always
        env:
        - name: AZURE_QUEUE_NAME
          value: $AZURE_QUEUE_NAME
        - name: AZURE_STORAGE_ACCOUNT_NAME
          value: $AZURE_STORAGE_ACCOUNT_NAME
        - name: AZURE_TABLE_NAME
          value: $AZURE_TABLE_NAME

환경 변수 설정

배포 단계를 실행하기 전에 다음 환경 변수를 사용하여 일부 구성 정보를 설정해야 합니다.

  • K8sversion: AKS 클러스터에 배포된 Kubernetes 버전입니다.
  • KARPENTER_VERSION: AKS 클러스터에 배포된 Karpenter 버전입니다.
  • SERVICE_ACCOUNT: 관리 ID와 연결된 서비스 계정의 이름입니다.
  • AQS_TARGET_DEPLOYMENT: 소비자 앱 컨테이너 배포의 이름입니다.
  • AQS_TARGET_NAMESPACE: 소비자 앱이 배포되는 네임스페이스입니다.
  • AZURE_QUEUE_NAME: Azure Storage 큐의 이름입니다.
  • AZURE_TABLE_NAME: 처리된 메시지를 저장하는 Azure Storage 테이블의 이름입니다.
  • LOCAL_NAME: 배포 스크립트에 구성된 리소스 이름의 단순 루트입니다.
  • LOCATION: 배포가 위치한 Azure 지역입니다.
  • TAGS: 연관된 값과 함께 사용자 정의 태그입니다.
  • STORAGE_ACCOUNT_SKU: Azure Storage 계정 SKU입니다.
  • ACR_SKU: Azure Container Registry SKU입니다.
  • AKS_NODE_COUNT: 노드 수입니다.

GitHub 리포지토리deployment 디렉터리에서 environmentVariables.sh Bash 스크립트를 검토할 수 있습니다. 이러한 환경 변수에는 기본값이 설정되어 있으므로 기본값을 변경하려는 경우가 아니면 파일을 업데이트할 필요가 없습니다. Azure 리소스의 이름은 deploy.sh 스크립트에서 동적으로 만들어지고 deploy.state 파일에 저장됩니다. deploy.state 파일을 사용하여 Azure 리소스 이름에 대한 환경 변수를 만들 수 있습니다.

다음 단계

참가자

Microsoft는 이 문서를 유지 관리합니다. 다음 기여자는 원래 그것을 썼다:

  • Ken Kilty | 수석 TPM
  • Russell de Pina | 수석 TPM
  • Jenny Hayes | 선임 콘텐츠 개발자
  • Carol Smith | 선임 콘텐츠 개발자
  • Erin Schaffer | 콘텐츠 개발자 2