Sdílet prostřednictvím


Kurz: Nasazení do vlastního kontejneru služby App Service pomocí GitHub Actions a připojení k databázi

Tento kurz vás provede nastavením pracovního postupu GitHub Actions pro nasazení kontejnerizované aplikace ASP.NET Core s back-endem azure SQL Database . Až budete hotovi, máte spuštěnou ASP.NET aplikaci v Azure a připojenou k SQL Database. Nejprve vytvoříte prostředky Azure pomocí pracovního postupu GitHub Actions šablony ARM.

V tomto kurzu se naučíte:

  • Použití pracovního postupu GitHub Actions k přidání prostředků do Azure pomocí šablony Azure Resource Manageru (šablona ARM)
  • Vytvoření kontejneru s nejnovějšími změnami webové aplikace pomocí pracovního postupu GitHub Actions

Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.

Požadavky

K dokončení tohoto kurzu budete potřebovat:

Stažení ukázky

Vytvoření forku ukázkového projektu v úložišti Ukázek Azure

https://github.com/Azure-Samples/dotnetcore-containerized-sqldb-ghactions/

Vytvoření skupiny prostředků

Otevřete Azure Cloud Shell na adrese https://shell.azure.com. Pokud jste ho nainstalovali místně, můžete alternativně použít Azure CLI. (Další informace o Cloud Shellu najdete v přehledu Cloud Shellu.)

    az group create --name {resource-group-name} --location {resource-group-location}

Generování přihlašovacích údajů pro nasazení

OpenID Připojení je metoda ověřování, která používá krátkodobé tokeny. Nastavení OpenID Připojení pomocí GitHub Actions je složitější proces, který nabízí posílené zabezpečení.

  1. Pokud nemáte existující aplikaci, zaregistrujte novou aplikaci Microsoft Entra a instanční objekt, který má přístup k prostředkům.

    az ad app create --display-name myApp
    

    Tento příkaz vypíše JSON s vaším kódem appIdclient-id. APPLICATION-OBJECT-ID Slouží objectId k vytváření federovaných přihlašovacích údajů s voláními rozhraní Graph API. Uložte hodnotu, kterou chcete použít jako tajný kód GitHubu AZURE_CLIENT_ID později.

  2. Vytvořte instanční objekt. $appID Nahraďte id aplikace z výstupu JSON. Tento příkaz vygeneruje výstup JSON s jiným objectId příkazem, který se použije v dalším kroku. Nový objectId je assignee-object-id.

    Tento příkaz vygeneruje výstup JSON s jiným objectId kódem a použije se v dalším kroku. Nový objectId je assignee-object-id.

    Zkopírujte soubor, který appOwnerTenantId chcete použít jako tajný kód GitHubu pro AZURE_TENANT_ID pozdější použití.

     az ad sp create --id $appId
    
  3. Vytvořte nové přiřazení role podle předplatného a objektu. Ve výchozím nastavení bude přiřazení role svázané s vaším výchozím předplatným. Nahraďte $subscriptionId ID předplatného, $resourceGroupName názvem vaší skupiny prostředků a $assigneeObjectId vygenerovanými assignee-object-id (id nově vytvořeného objektu instančního objektu).

    az role assignment create --role contributor --subscription $subscriptionId --assignee-object-id  $assigneeObjectId --assignee-principal-type ServicePrincipal --scope /subscriptions/$subscriptionId/resourceGroups/$resourceGroupName
    
  4. Spuštěním následujícího příkazu vytvořte nové přihlašovací údaje federované identity pro vaši aplikaci Microsoft Entra.

    • Nahraďte APPLICATION-OBJECT-ID objectId (vygenerovaný při vytváření aplikace) pro vaši aplikaci Microsoft Entra.
    • Nastavte hodnotu pro CREDENTIAL-NAME pozdější odkaz.
    • Nastavte .subject Hodnota je definována GitHubem v závislosti na vašem pracovním postupu:
      • Úlohy v prostředí GitHub Actions: repo:< Organization/Repository >:environment:< Name >
      • Pro úlohy, které nejsou svázané s prostředím, zahrňte cestu odkaz pro větev nebo značku na základě cesty odkazu použité k aktivaci pracovního postupu: repo:< Organization/Repository >:ref:< ref path>. Například repo:n-username/ node_express:ref:refs/heads/my-branch nebo repo:n-username/ node_express:ref:refs/tags/my-tag.
      • Pro pracovní postupy aktivované událostí žádosti o přijetí změn: repo:< Organization/Repository >:pull_request.
    az ad app federated-credential create --id <APPLICATION-OBJECT-ID> --parameters credential.json
    ("credential.json" contains the following content)
    {
        "name": "<CREDENTIAL-NAME>",
        "issuer": "https://token.actions.githubusercontent.com",
        "subject": "repo:octo-org/octo-repo:environment:Production",
        "description": "Testing",
        "audiences": [
            "api://AzureADTokenExchange"
        ]
    }
    

Informace o vytvoření aplikace active directory, instančního objektu a federovaných přihlašovacích údajů na webu Azure Portal najdete v tématu Připojení GitHubu a Azure.

Konfigurace tajného kódu GitHubu pro ověřování

K akci přihlášení musíte zadat ID klienta, ID tenanta a ID předplatného vaší aplikace. Tyto hodnoty je možné zadat buď přímo v pracovním postupu, nebo je můžete uložit v tajných kódech GitHubu a odkazovat na je ve vašem pracovním postupu. Uložením hodnot jako tajných kódů GitHubu je bezpečnější možnost.

  1. Na GitHubu přejděte do svého úložiště.

  2. V navigační nabídce přejděte na Nastavení.

  3. Vyberte Akce tajných kódů zabezpečení > a proměnných>.

    Snímek obrazovky s přidáním tajného kódu

  4. Vyberte Nový tajný klíč úložiště.

  5. Vytváření tajných kódů pro AZURE_CLIENT_ID, AZURE_TENANT_IDa AZURE_SUBSCRIPTION_ID. Pro tajné kódy GitHubu použijte tyto hodnoty z vaší aplikace Microsoft Entra:

    Tajný kód GitHubu Aplikace Microsoft Entra
    AZURE_CLIENT_ID ID aplikace (klienta)
    AZURE_TENANT_ID ID adresáře (klienta)
    AZURE_SUBSCRIPTION_ID Subscription ID
  6. Uložte každý tajný kód výběrem možnosti Přidat tajný kód.

Přidání tajného kódu SQL Serveru

Vytvořte v úložišti nový tajný kód pro SQL_SERVER_ADMIN_PASSWORD. Tento tajný klíč může být jakékoli heslo, které splňuje standardy Azure pro zabezpečení hesel. K tomuto heslu nebudete moct znovu přistupovat, takže ho uložte samostatně.

Vytvoření zdrojů Azure

Pracovní postup vytvoření prostředků Azure spustí šablonu ARM pro nasazení prostředků do Azure. Pracovní postup:

  • Zkontroluje zdrojový kód pomocí akce Rezervace.
  • Přihlásí se k Azure pomocí akce Přihlášení k Azure a shromáždí informace o prostředí a prostředcích Azure.
  • Nasadí prostředky pomocí akce Nasazení Azure Resource Manageru.

Spuštění pracovního postupu vytvoření prostředků Azure:

  1. azuredeploy.yaml Otevřete soubor v .github/workflows úložišti.

  2. Aktualizujte hodnotu AZURE_RESOURCE_GROUP názvu vaší skupiny prostředků.

  3. Aktualizujte hodnoty WEB_APP_NAME názvu webové aplikace a SQL_SERVER_NAME názvu serveru SQL.

  4. Přejděte na Akce a vyberte Spustit pracovní postup.

    Spuštěním pracovního postupu GitHub Actions přidejte prostředky.

  5. Ověřte, že se vaše akce úspěšně spustila, a to tak, že na stránce Akce vyhledáte zelenou značku zaškrtnutí.

    Úspěšné spuštění prostředků.

Přidání registru kontejneru a tajných kódů SQL

  1. Na webu Azure Portal otevřete nově vytvořenou službu Azure Container Registry ve vaší skupině prostředků.

  2. Přejděte na Přístupové klíče a zkopírujte hodnoty uživatelského jména a hesla.

  3. Vytvořte nové tajné kódy GitHubu pro ACR_USERNAME úložiště a ACR_PASSWORD heslo.

  4. Na webu Azure Portal otevřete databázi Azure SQL. Otevřete Připojení ionové řetězce a zkopírujte hodnotu.

  5. Vytvořte nový tajný kód pro SQL_CONNECTION_STRING. Nahraďte {your_password} ho vaším SQL_SERVER_ADMIN_PASSWORD.

Sestavení, nasdílení změn a nasazení image

Pracovní postup sestavení, nabízení a nasazení sestaví kontejner s nejnovějšími změnami aplikace, odešle kontejner do služby Azure Container Registry a aktualizuje přípravný slot webové aplikace tak, aby odkazoval na nejnovější vložený kontejner. Pracovní postup kontejneruje úlohu sestavení a nasazení:

  • Úloha sestavení zkontroluje zdrojový kód pomocí akce Rezervace. Úloha pak použije akci přihlášení Dockeru a vlastní skript k ověření ve službě Azure Container Registry, sestavení image kontejneru a jeho nasazení do služby Azure Container Registry.
  • Úloha nasazení se přihlásí do Azure pomocí akce Přihlášení k Azure a shromáždí informace o prostředí a prostředcích Azure. Úloha pak aktualizuje Nastavení webové aplikace akcí Aplikace Azure Service Nastavení a nasadí ji do přípravného slotu služby App Service pomocí akce Nasazení webu Azure. Nakonec úloha spustí vlastní skript pro aktualizaci databáze SQL a prohodí přípravný slot do produkčního prostředí.

Spuštění sestavení, nasdílení změn a nasazení pracovního postupu:

  1. build-deploy.yaml Otevřete soubor v .github/workflows úložišti.

  2. Ověřte, že proměnné prostředí odpovídají AZURE_RESOURCE_GROUPWEB_APP_NAME proměnným prostředí v souboru azuredeploy.yaml.

  3. Aktualizujte hodnotu přihlašovacího ACR_LOGIN_SERVER serveru služby Azure Container Registry.

Další kroky