Příprava na nasazení úlohy pracovního postupu řízeného událostmi (EDW) do Azure

Ukázka úlohy AWS se nasadí pomocí Bash, CloudFormation a AWS CLI. Spotřebitelská aplikace v Pythonu se nasadí jako kontejner. Následující části popisují, jak se pracovní postup Azure liší. Ve skriptech Bash se mění nasazení clusteru Azure Kubernetes Service (AKS) a podpůrné infrastruktury. Kromě toho se manifesty nasazení Kubernetes upraví tak, aby konfigurovaly KEDA tak, aby používaly škálovací nástroj fronty Azure Storage místo škálovací služby Amazon Simple Queue Service (SQS).

Pracovní postup Azure používá funkci automatického zřizování uzlů AKS (NAP), která je založená na Karpenteru. Tato funkce výrazně zjednodušuje nasazení a použití Karpenteru v AKS tím, že eliminuje potřebu použití Nástroje Helm k explicitnímu nasazení Karpenteru. Pokud ale potřebujete Karpenter nasadit přímo, můžete to udělat pomocí poskytovatele AKS Karpenter na GitHubu.

Konfigurace manifestu nasazení Kubernetes

AWS používá manifest YAML nasazení Kubernetes k nasazení úlohy do EKS. YAML nasazení AWS obsahuje odkazy na SQS a DynamoDB pro škálovací nástroje KEDA, takže je musíme změnit tak, aby určily ekvivalentní hodnoty KEDA pro škálovací nástroje Azure, které se mají použít pro připojení k infrastruktuře Azure. Provedete to tak, že nakonfigurujete škálovací nástroj KEDA fronty Azure Storage.

Následující fragmenty kódu ukazují ukázkové manifesty YAML pro implementace AWS a Azure.

Implementace 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>

Implementace 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

Nastavení proměnných prostředí

Před provedením některého z kroků nasazení je potřeba nastavit některé informace o konfiguraci pomocí následujících proměnných prostředí:

  • K8sversion: Verze Kubernetes nasazená v clusteru AKS.
  • KARPENTER_VERSION: Verze Karpenteru nasazená v clusteru AKS.
  • SERVICE_ACCOUNT: Název účtu služby přidruženého ke spravované identitě.
  • AQS_TARGET_DEPLOYMENT: Název nasazení kontejneru aplikace příjemce.
  • AQS_TARGET_NAMESPACE: Obor názvů, do kterého je aplikace příjemce nasazená.
  • AZURE_QUEUE_NAME: Název fronty služby Azure Storage.
  • AZURE_TABLE_NAME: Název tabulky Azure Storage, která ukládá zpracovávané zprávy.
  • LOCAL_NAME: Jednoduchý kořenový adresář pro názvy prostředků vytvořený ve skriptech nasazení.
  • LOCATION: Oblast Azure, ve které se nasazení nachází.
  • TAGS: Všechny uživatelem definované značky spolu s přidruženými hodnotami.
  • STORAGE_ACCOUNT_SKU: Skladová položka účtu úložiště Azure.
  • ACR_SKU: Skladová položka služby Azure Container Registry.
  • AKS_NODE_COUNT: Počet uzlů.

Skript Bash si můžete prohlédnout environmentVariables.sh v deployment adresáři našeho úložiště GitHub. Tyto proměnné prostředí mají nastavené výchozí hodnoty, takže soubor nemusíte aktualizovat, pokud nechcete výchozí hodnoty měnit. Názvy prostředků Azure se vytvářejí dynamicky ve deploy.sh skriptu a ukládají se do deploy.state souboru. Soubor můžete použít deploy.state k vytvoření proměnných prostředí pro názvy prostředků Azure.

Další kroky

Přispěvatelé

Microsoft udržuje tento článek. Následující přispěvatelé ho původně napsali:

  • Ken Kilty | Hlavní čip TPM
  • Russell de Pina | Hlavní čip TPM
  • Jenny Hayes | Vedoucí vývojář obsahu
  • Carol Smith | Vedoucí vývojář obsahu
  • Erin Schaffer | Content Developer 2