Nasazení do Azure Container Apps pomocí nástroje GitHub Actions
Azure Container Apps umožňuje použít GitHub Actions k publikování revizí do vaší aplikace kontejneru. Při odesílání potvrzení do úložiště GitHub se aktivuje pracovní postup, který aktualizuje image kontejneru v registru kontejneru. Azure Container Apps vytvoří novou revizi na základě aktualizované image kontejneru.
Pracovní postup GitHub Actions se aktivuje potvrzením do konkrétní větve ve vašem úložišti. Při vytváření pracovního postupu se rozhodnete, která větev pracovní postup aktivuje.
V tomto článku se dozvíte, jak vytvořit plně přizpůsobitelný pracovní postup. Pokud chcete vygenerovat úvodní pracovní postup GitHub Actions pomocí Azure CLI, přečtěte si téma Generování pracovního postupu GitHub Actions pomocí Azure CLI.
Akce GitHubu pro Azure Container Apps
Pokud chcete sestavit a nasadit aplikaci kontejneru, přidejte azure/container-apps-deploy-action
akci do pracovního postupu GitHub Actions.
Akce podporuje následující scénáře:
- Sestavení ze souboru Dockerfile a nasazení do kontejnerových aplikací
- Sestavte ze zdrojového kódu bez souboru Dockerfile a nasaďte je do Container Apps. Mezi podporované jazyky patří .NET, Java, Node.js, PHP a Python.
- Nasazení existující image kontejneru do Container Apps
Příklady použití
Tady jsou některé běžné scénáře použití akce. Další informace najdete na stránce GitHub Marketplace akce.
Sestavení a nasazení do kontejnerových aplikací
Následující fragment kódu ukazuje, jak sestavit image kontejneru ze zdrojového kódu a nasadit ji do Container Apps.
steps:
- name: Log in to Azure
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Build and deploy Container App
uses: azure/container-apps-deploy-action@v1
with:
appSourcePath: ${{ github.workspace }}/src
acrName: myregistry
containerAppName: my-container-app
resourceGroup: my-rg
Akce používá k sestavení image kontejneru soubor Dockerfile appSourcePath
. Pokud se nenajde žádný soubor Dockerfile, akce se pokusí sestavit image kontejneru ze zdrojového kódu v appSourcePath
souboru .
Nasazení existující image kontejneru do Container Apps
Následující fragment kódu ukazuje, jak nasadit existující image kontejneru do Container Apps.
steps:
- name: Log in to Azure
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Build and deploy Container App
uses: azure/container-apps-deploy-action@v1
with:
acrName: myregistry
containerAppName: my-container-app
resourceGroup: my-rg
imageToDeploy: myregistry.azurecr.io/app:${{ github.sha }}
Důležité
Pokud vytváříte image kontejneru v samostatném kroku, ujistěte se, že používáte jedinečnou značku, jako je sha potvrzení, místo stabilní značky, jako je latest
. Další informace najdete v tématu Osvědčené postupy pro značky obrázků.
Ověřování pomocí služby Azure Container Registry
Aby se image kontejneru odeslala, musí se akce Azure Container Apps ověřit ve službě Azure Container Registry. Aplikace kontejneru se také musí ověřit ve službě Azure Container Registry, aby si stáhla image kontejneru.
Pokud chcete nasdílit image, akce se automaticky ověří v registru kontejneru zadaném pomocí acrName
přihlašovacích údajů zadaných pro danou azure/login
akci.
K vyžádání imagí používá Služba Azure Container Apps k ověření ve službě Azure Container Registry spravovanou identitu (doporučeno) nebo přihlašovací údaje správce. Pokud chcete použít spravovanou identitu, musí být aplikace kontejneru, na které se akce nasazuje, nakonfigurovaná tak, aby používala spravovanou identitu. Pokud se chcete ověřit pomocí přihlašovacích údajů správce registru, nastavte acrUsername
vstupy a acrPassword
akce.
Konfigurace
Pomocí následujících kroků nakonfigurujete pracovní postup GitHub Actions pro nasazení do Azure Container Apps.
- Vytvoření úložiště GitHub pro vaši aplikaci
- Vytvoření aplikace kontejneru s povolenou spravovanou identitou
AcrPull
Přiřazení role služby Azure Container Registry ke spravované identitě aplikace kontejneru- Konfigurace tajných kódů v úložišti GitHub
- Vytvoření pracovního postupu GitHub Actions
Požadavky
Požadavek | Pokyny |
---|---|
Účet Azure | Pokud ho nemáte, vytvořte si účet zdarma. K pokračování potřebujete oprávnění přispěvatele nebo vlastníka předplatného Azure. Podrobnosti najdete v tématu Přiřazení rolí Azure pomocí webu Azure Portal . |
Účet GitHubu | Zaregistrujte se zdarma. |
Azure CLI | Nainstalujte rozhraní příkazového řádku Azure CLI. |
Vytvoření úložiště GitHub a klonování zdrojového kódu
Před vytvořením pracovního postupu musí být zdrojový kód aplikace v úložišti GitHub.
Přihlaste se k Azure pomocí Azure CLI.
az login
Dále nainstalujte nejnovější rozšíření Azure Container Apps pro rozhraní příkazového řádku.
az extension add --name containerapp --upgrade
Pokud nemáte vlastní úložiště GitHub, vytvořte si ho z ukázky.
- Přejděte do následujícího umístění a vytvořte nové úložiště:
- Pojmenujte své úložiště
my-container-app
.
Naklonujte si úložiště na místní počítač.
git clone https://github.com/<YOUR_GITHUB_ACCOUNT_NAME>/my-container-app.git
Vytvoření aplikace kontejneru s povolenou spravovanou identitou
Pomocí příkazu v následujícím postupu vytvořte aplikaci az containerapp up
kontejneru. Tento příkaz vytvoří prostředky Azure, sestaví image kontejneru, uloží image do registru a nasadí do aplikace kontejneru.
Po vytvoření aplikace můžete do aplikace přidat spravovanou identitu a přiřadit jí identitu AcrPull
, aby identita mohla načítat image z registru.
Přejděte do složky src klonovaného úložiště.
cd my-container-app cd src
Vytvořte prostředky Azure a pomocí příkazu nasaďte aplikaci kontejneru.
az containerapp up
az containerapp up \ --name my-container-app \ --source . \ --ingress external
Ve výstupu příkazu si poznamenejte název služby Azure Container Registry.
Získejte úplné ID prostředku registru kontejneru.
az acr show --name <ACR_NAME> --query id --output tsv
<ACR_NAME>
nahraďte názvem vašeho registru.Povolte spravovanou identitu pro aplikaci kontejneru.
az containerapp identity assign \ --name my-container-app \ --resource-group my-container-app-rg \ --system-assigned
Poznamenejte si ID objektu zabezpečení spravované identity ve výstupu příkazu.
AcrPull
Přiřaďte roli služby Azure Container Registry spravované identitě aplikace kontejneru.az role assignment create \ --assignee <MANAGED_IDENTITY_PRINCIPAL_ID> \ --role AcrPull \ --scope <ACR_RESOURCE_ID>
Nahraďte
<MANAGED_IDENTITY_PRINCIPAL_ID>
ID objektu zabezpečení spravované identity a<ACR_RESOURCE_ID>
ID prostředku služby Azure Container Registry.Nakonfigurujte aplikaci kontejneru tak, aby používala spravovanou identitu k načtení imagí ze služby Azure Container Registry.
az containerapp registry set \ --name my-container-app \ --resource-group my-container-app-rg \ --server <ACR_NAME>.azurecr.io \ --identity system
Nahraďte
<ACR_NAME>
názvem služby Azure Container Registry.
Konfigurace tajných kódů v úložišti GitHub
Pracovní postup GitHubu vyžaduje tajný kód pojmenovaný AZURE_CREDENTIALS
k ověření v Azure. Tajný klíč obsahuje přihlašovací údaje pro instanční objekt s rolí Přispěvatel ve skupině prostředků obsahující aplikaci kontejneru a registr kontejneru.
Vytvořte instanční objekt s rolí Přispěvatel ve skupině prostředků, která obsahuje aplikaci kontejneru a registr kontejneru.
az ad sp create-for-rbac \ --name my-app-credentials \ --role contributor \ --scopes /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/my-container-app-rg \ --json-auth \ --output json
Nahraďte
<SUBSCRIPTION_ID>
ID vašeho předplatného Azure. Pokud je registr kontejneru v jiné skupině prostředků, zadejte obě skupiny prostředků v parametru--scopes
.Zkopírujte výstup JSON z příkazu.
V úložišti GitHub přejděte do Části Akce tajných kódů> nastavení>a vyberte Nový tajný klíč úložiště.
Jako název zadejte
AZURE_CREDENTIALS
název a jako hodnotu vložte obsah výstupu JSON.Vyberte Add secret (Přidat tajný kód).
Vytvoření pracovního postupu GitHub Actions
V úložišti GitHub přejděte na Akce a vyberte Nový pracovní postup.
Vyberte Nastavit pracovní postup sami.
Do editoru vložte následující YAML.
name: Azure Container Apps Deploy on: push: branches: - main jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Log in to Azure uses: azure/login@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - name: Build and deploy Container App uses: azure/container-apps-deploy-action@v1 with: appSourcePath: ${{ github.workspace }}/src acrName: <ACR_NAME> containerAppName: my-container-app resourceGroup: my-container-app-rg
Nahraďte
<ACR_NAME>
názvem služby Azure Container Registry. Potvrďte, že název větve v částibranches
a hodnoty proappSourcePath
,containerAppName
aresourceGroup
odpovídá hodnotám pro vaše úložiště a prostředky Azure.Potvrďte změny do hlavní větve.
Spuštění pracovního postupu GitHub Actions by mělo začít sestavovat a nasazovat aplikaci kontejneru. Pokud chcete zkontrolovat jeho průběh, přejděte na Akce.
Pokud chcete nasadit novou revizi aplikace, nasdílejte do hlavní větve nové potvrzení.