你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

准备将事件驱动的工作流 (EDW) 工作负荷部署到 Azure

AWS 工作负载示例是使用 Bash、CloudFormation 和 AWS CLI 部署的。 使用者 Python 应用部署为容器。 以下部分介绍了 Azure 工作流的不同方式。 用于部署 Azure Kubernetes 服务 (AKS) 群集和支持基础结构的 Bash 脚本发生了更改。 此外,还修改了 Kubernetes 部署清单,以将 KEDA 配置为使用 Azure 存储队列缩放程序代替 Amazon Simple Queue Service (SQS) 缩放程序。

Azure 工作流使用基于 Karpenter 的 AKS 节点自动预配 (NAP) 功能。 此功能无需使用 Helm 显式部署 Karpenter,从而极大地简化了 AKS 上 Karpenter 的部署和使用。 但如果需要直接部署 Karpenter,则可使用 GitHub 上的 AKSKarpenter 提供程序执行此操作。

配置 Kubernetes 部署清单

AWS 使用 Kubernetes 部署 YAML 清单将工作负载部署到 EKS。 AWS 部署 YAML 引用了 KEDA 缩放程序的 SQS 和 DynamoDB,因此我们需要更改它们以指定 Azure 缩放程序用于连接到 Azure 基础结构的 KEDA 等效值。 为此,请配置 Azure 存储队列 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:与托管标识关联的服务帐户的名称。
  • AQS_TARGET_DEPLOYMENT:使用者应用容器部署的名称。
  • AQS_TARGET_NAMESPACE:使用者应用将部署到的命名空间。
  • AZURE_QUEUE_NAME:Azure 存储队列的名称。
  • AZURE_TABLE_NAME:存储已处理消息的 Azure 存储表的名称。
  • LOCAL_NAME:部署脚本中构造的资源名称的简单根目录。
  • LOCATION:部署所在的 Azure 区域。
  • TAGS:任何用户定义的标记及其关联的值。
  • STORAGE_ACCOUNT_SKU:Azure 存储帐户 SKU。
  • ACR_SKU:Azure 容器注册表 SKU。
  • AKS_NODE_COUNT:节点数。

可以在 GitHub 存储库的“deployment”目录中查看 environmentVariables.sh Bash 脚本。 这些环境变量已设置默认值,因此除非想更改默认值,否则无需更新文件。 在 deploy.sh 脚本中动态创建 Azure 资源的名称并将其保存到 deploy.state 文件中。 可以使用 deploy.state 文件为 Azure 资源名称创建环境变量。

后续步骤

供稿人

Microsoft 会维护本文。 本系列文章为以下参与者的原创作品:

  • Ken Kilty | 首席 TPM
  • Russell de Pina | 首席 TPM
  • Jenny Hayes | 高级内容开发人员
  • Carol Smith | 高级内容开发人员
  • Erin Schaffer | 内容开发人员 2