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:
- Účet Azure s aktivním předplatným. Vytvoření účtu zdarma
- Účet GitHub. Pokud ho nemáte, zdarma se zaregistrujte.
- Úložiště GitHub pro ukládání šablon Resource Manageru a souborů pracovního postupu. Pokud ho chcete vytvořit, přečtěte si téma Vytvoření nového úložiště.
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í.
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
appId
client-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 GitHubuAZURE_CLIENT_ID
později.Vytvořte instanční objekt.
$appID
Nahraďte id aplikace z výstupu JSON. Tento příkaz vygeneruje výstup JSON s jinýmobjectId
příkazem, který se použije v dalším kroku. NovýobjectId
jeassignee-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
jeassignee-object-id
.Zkopírujte soubor, který
appOwnerTenantId
chcete použít jako tajný kód GitHubu proAZURE_TENANT_ID
pozdější použití.az ad sp create --id $appId
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ýmiassignee-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
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říkladrepo:n-username/ node_express:ref:refs/heads/my-branch
neborepo: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
.
- Úlohy v prostředí GitHub Actions:
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" ] }
- Nahraďte
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.
Na GitHubu přejděte do svého úložiště.
V navigační nabídce přejděte na Nastavení.
Vyberte Akce tajných kódů zabezpečení > a proměnných>.
Vyberte Nový tajný klíč úložiště.
Vytváření tajných kódů pro
AZURE_CLIENT_ID
,AZURE_TENANT_ID
aAZURE_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 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:
azuredeploy.yaml
Otevřete soubor v.github/workflows
úložišti.Aktualizujte hodnotu
AZURE_RESOURCE_GROUP
názvu vaší skupiny prostředků.Aktualizujte hodnoty
WEB_APP_NAME
názvu webové aplikace aSQL_SERVER_NAME
názvu serveru SQL.Přejděte na Akce a vyberte Spustit pracovní postup.
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í.
Přidání registru kontejneru a tajných kódů SQL
Na webu Azure Portal otevřete nově vytvořenou službu Azure Container Registry ve vaší skupině prostředků.
Přejděte na Přístupové klíče a zkopírujte hodnoty uživatelského jména a hesla.
Vytvořte nové tajné kódy GitHubu pro
ACR_USERNAME
úložiště aACR_PASSWORD
heslo.Na webu Azure Portal otevřete databázi Azure SQL. Otevřete Připojení ionové řetězce a zkopírujte hodnotu.
Vytvořte nový tajný kód pro
SQL_CONNECTION_STRING
. Nahraďte{your_password}
ho vašímSQL_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:
build-deploy.yaml
Otevřete soubor v.github/workflows
úložišti.Ověřte, že proměnné prostředí odpovídají
AZURE_RESOURCE_GROUP
WEB_APP_NAME
proměnným prostředí v souboruazuredeploy.yaml
.Aktualizujte hodnotu přihlašovacího
ACR_LOGIN_SERVER
serveru služby Azure Container Registry.