Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Usługa Azure Container Apps umożliwia publikowanie poprawek w aplikacji kontenera przy użyciu funkcji GitHub Actions. Gdy zatwierdzenia są wypychane do repozytorium GitHub, wyzwalany jest przepływ pracy, który aktualizuje obraz kontenera w rejestrze kontenerów. Usługa Azure Container Apps tworzy nową poprawkę na podstawie zaktualizowanego obrazu kontenera.
Przepływ pracy w GitHub Actions jest wyzwalany, gdy zatwierdzisz zmiany do określonej gałęzi w swoim repozytorium. Podczas tworzenia przepływu pracy decydujesz, która gałąź wyzwala przepływ pracy.
W tym artykule pokazano, jak utworzyć w pełni dostosowywany przepływ pracy. Aby wygenerować początkowy przepływ pracy funkcji GitHub Actions za pomocą interfejsu wiersza polecenia platformy Azure, zobacz Generowanie przepływu pracy funkcji GitHub Actions za pomocą interfejsu wiersza polecenia platformy Azure.
Akcja usługi GitHub usługi Azure Container Apps
Aby skompilować i wdrożyć aplikację kontenera, należy dodać azure/container-apps-deploy-action akcję do przepływu pracy funkcji GitHub Actions.
Akcja obsługuje następujące scenariusze:
- Kompilowanie z pliku Dockerfile i wdrażanie w usłudze Container Apps
- Kompiluj z kodu źródłowego bez pliku Dockerfile i wdrażaj je w usłudze Container Apps. Obsługiwane języki to .NET, Java, Node.js, PHP i Python
- Wdrażanie istniejącego obrazu kontenera w usłudze Container Apps
Przykłady użycia
Poniżej przedstawiono kilka typowych scenariuszy użycia akcji. Aby uzyskać więcej informacji, zobacz stronę witryny GitHub Marketplace akcji.
Kompilowanie i wdrażanie w usłudze Container Apps
Poniższy fragment kodu pokazuje, jak utworzyć obraz kontenera z kodu źródłowego i wdrożyć go w usłudze 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
Akcja używa pliku Dockerfile w pliku appSourcePath , aby skompilować obraz kontenera. Jeśli nie zostanie znaleziony plik Dockerfile, akcja próbuje skompilować obraz kontenera na podstawie kodu źródłowego w pliku appSourcePath.
Wdrażanie istniejącego obrazu kontenera w usłudze Container Apps
Poniższy fragment kodu przedstawia sposób wdrażania istniejącego obrazu kontenera w usłudze 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 }}
Ważne
Jeśli tworzysz obraz kontenera w osobnym kroku, upewnij się, że używasz unikatowego tagu, takiego jak zatwierdzanie algorytmu SHA zamiast stabilnego tagu, takiego jak latest. Aby uzyskać więcej informacji, zobacz Najlepsze rozwiązania dotyczące tagów obrazów.
Uwierzytelnianie za pomocą usługi Azure Container Registry
Akcja usługi Azure Container Apps musi uwierzytelniać się w usłudze Azure Container Registry, aby wypchnąć obraz kontenera. Aplikacja kontenera musi również uwierzytelniać się w usłudze Azure Container Registry, aby ściągnąć obraz kontenera.
Aby wypchnąć obrazy, akcja automatycznie uwierzytelnia się za pomocą rejestru kontenerów określonego acrName w azure/login przy użyciu poświadczeń dostarczonych do akcji.
Aby ściągnąć obrazy, usługa Azure Container Apps używa tożsamości zarządzanej (zalecane) lub poświadczeń administratora do uwierzytelniania w usłudze Azure Container Registry. Aby korzystać z tożsamości zarządzanej, aplikacja kontenera, która jest wdrażana, musi być skonfigurowana do używania tożsamości zarządzanej. Aby uwierzytelnić się przy użyciu poświadczeń administratora rejestru, ustaw akcję acrUsername i acrPassword dane wejściowe.
Wdrażanie obrazów z rejestrów innych niż ACR
Oprócz usługi Azure Container Registry (ACR) usługa Azure Container Apps obsługuje obrazy kontenerów hostowane w innych rejestrach, takich jak GitHub Container Registry (GHCR). W tej sekcji pokazano, jak wdrażać obrazy kontenerów z usługi GHCR, w tym obrazy publiczne i prywatne.
Uwaga / Notatka
W przypadku korzystania z rejestru innego niż ACR, takiego jak GHCR, należy skonfigurować aplikację kontenera do uwierzytelniania w rejestrze, nawet jeśli obraz jest publiczny.
Wdrażanie obrazu publicznego z usługi GHCR
Jeśli obraz kontenera jest publiczny, można go wdrożyć bez określania poświadczeń uwierzytelniania. Na poniższym przykładzie pokazano, jak wdrożyć publiczny obraz z usługi GHCR przy użyciu czynności wdrażania.
Przed uruchomieniem tego polecenia zastąp <YOUR-GITHUB-USERNAME> rzeczywistą nazwą użytkownika usługi GitHub.
- name: Deploy public GHCR image to Container App
uses: azure/container-apps-deploy-action@v1
with:
containerAppName: my-container-app
resourceGroup: my-container-app-rg
imageToDeploy: ghcr.io/<YOUR-GITHUB-USERNAME>/myimage:latest
registryServer: ghcr.io
Przed wdrożeniem skonfiguruj aplikację kontenera do ściągania z usługi GHCR:
az containerapp registry set \
--name my-container-app \
--resource-group my-container-app-rg \
--server ghcr.io
Wdrażanie obrazu prywatnego z usługi GHCR
Jeśli obraz jest prywatny, musisz podać dane uwierzytelniające w przepływie pracy GitHub Actions. Użyj osobistego tokenu dostępu (PAT) usługi GitHub z zakresem read:packages . Zapisz token i nazwę użytkownika jako wpisy tajne w repozytorium GitHub.
- name: Deploy private GHCR image to Container App
uses: azure/container-apps-deploy-action@v1
with:
containerAppName: my-container-app
resourceGroup: my-container-app-rg
imageToDeploy: ghcr.io/<YOUR-GITHUB-USERNAME>/myimage:${{ github.sha }}
registryServer: ghcr.io
registryUsername: ${{ secrets.GHCR_USERNAME }}
registryPassword: ${{ secrets.GHCR_TOKEN }}
Skonfiguruj aplikację kontenera, aby ściągnąć obraz przy użyciu poświadczeń GHCR:
az containerapp registry set \
--name my-container-app \
--resource-group my-container-app-rg \
--server ghcr.io \
--username <GHCR_USERNAME> \
--password <GHCR_TOKEN>
Zastąp <GHCR_USERNAME> swoją nazwą użytkownika na GitHub i <GHCR_TOKEN> swoim osobistym tokenem dostępu.
Uwaga / Notatka
Użyj unikatowego tagu, takiego jak SHA zatwierdzenia w Git (${{ github.sha }}), zamiast tagu ogólnego, takiego jak najnowszy. Pomaga to uniknąć problemów z buforowaniem i zapewnia niezawodne tworzenie nowych poprawek.
Konfigurowanie
Wykonaj następujące kroki, aby skonfigurować przepływ pracy funkcji GitHub Actions w celu wdrożenia w usłudze Azure Container Apps.
- Tworzenie repozytorium GitHub dla aplikacji
- Tworzenie aplikacji kontenera z włączoną tożsamością zarządzaną
-
AcrPullPrzypisywanie roli usługi Azure Container Registry do tożsamości zarządzanej aplikacji kontenera - Konfigurowanie wpisów tajnych w repozytorium GitHub
- Tworzenie przepływu pracy funkcji GitHub Actions
Wymagania wstępne
| Wymaganie | Instrukcje |
|---|---|
| Konto platformy Azure | Jeśli go nie masz, utwórz bezpłatne konto. Aby kontynuować, musisz mieć uprawnienie Współautor lub Właściciel w subskrypcji platformy Azure. Aby uzyskać szczegółowe informacje, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal . |
| Konto usługi GitHub | Zarejestruj się bezpłatnie. |
| Interfejs wiersza polecenia platformy Azure | Zainstaluj interfejs wiersza polecenia platformy Azure. |
Tworzenie repozytorium GitHub i klonowanie kodu źródłowego
Przed utworzeniem przepływu pracy kod źródłowy aplikacji musi znajdować się w repozytorium GitHub.
Zaloguj się na platformie Azure przy użyciu interfejsu wiersza polecenia platformy Azure.
az loginNastępnie zainstaluj najnowsze rozszerzenie usługi Azure Container Apps dla interfejsu wiersza polecenia.
az extension add --name containerapp --upgradeJeśli nie masz własnego repozytorium GitHub, utwórz je na podstawie przykładu.
- Przejdź do następującej lokalizacji, aby utworzyć nowe repozytorium:
- Nadaj repozytorium
my-container-appnazwę .
Sklonuj repozytorium na komputerze lokalnym.
git clone https://github.com/<YOUR_GITHUB_ACCOUNT_NAME>/my-container-app.git
Tworzenie aplikacji kontenera z włączoną tożsamością zarządzaną
Utwórz aplikację kontenera az containerapp up przy użyciu polecenia w poniższych krokach. To polecenie tworzy zasoby platformy Azure, kompiluje obraz kontenera, przechowuje obraz w rejestrze i wdraża go w aplikacji kontenera.
Po utworzeniu aplikacji możesz dodać tożsamość zarządzaną do aplikacji i przypisać tożsamość AcrPull roli, aby umożliwić tożsamości ściąganie obrazów z rejestru.
Przejdź do folderu src sklonowanego repozytorium.
cd my-container-app cd srcUtwórz zasoby platformy Azure i wdróż aplikację kontenera za
az containerapp uppomocą polecenia .az containerapp up \ --name my-container-app \ --source . \ --ingress externalW danych wyjściowych polecenia zanotuj nazwę usługi Azure Container Registry.
Pobierz pełny identyfikator zasobu rejestru kontenerów.
az acr show --name <ACR_NAME> --query id --output tsvZastąp ciąg
<ACR_NAME>nazwą rejestru.Włącz tożsamość zarządzaną dla aplikacji kontenera.
az containerapp identity assign \ --name my-container-app \ --resource-group my-container-app-rg \ --system-assignedZanotuj identyfikator podmiotu zabezpieczeń tożsamości zarządzanej w danych wyjściowych polecenia.
AcrPullPrzypisz rolę usługi Azure Container Registry do tożsamości zarządzanej aplikacji kontenera.az role assignment create \ --assignee <MANAGED_IDENTITY_PRINCIPAL_ID> \ --role AcrPull \ --scope <ACR_RESOURCE_ID>Zastąp
<MANAGED_IDENTITY_PRINCIPAL_ID>element identyfikatorem podmiotu zabezpieczeń tożsamości zarządzanej i<ACR_RESOURCE_ID>identyfikatorem zasobu usługi Azure Container Registry.Skonfiguruj aplikację kontenera, aby używała tożsamości zarządzanej do ściągania obrazów z usługi Azure Container Registry.
az containerapp registry set \ --name my-container-app \ --resource-group my-container-app-rg \ --server <ACR_NAME>.azurecr.io \ --identity systemZastąp
<ACR_NAME>ciąg nazwą usługi Azure Container Registry.
Konfigurowanie wpisów tajnych w repozytorium GitHub
Przepływ pracy usługi GitHub wymaga wpisu tajnego o nazwie AZURE_CREDENTIALS do uwierzytelniania na platformie Azure. Wpis tajny zawiera poświadczenia jednostki usługi z rolą Współautor w grupie zasobów zawierającej aplikację kontenera i rejestr kontenerów.
Utwórz jednostkę usługi z rolą Współautor w grupie zasobów, która zawiera aplikację kontenera i rejestr kontenerów.
az ad sp create-for-rbac \ --name my-app-credentials \ --role contributor \ --scopes /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/my-container-app-rg \ --json-auth \ --output jsonZastąp ciąg
<SUBSCRIPTION_ID>identyfikatorem subskrypcji platformy Azure. Jeśli rejestr kontenerów znajduje się w innej grupie zasobów, określ obie grupy zasobów w parametrze--scopes.Skopiuj dane wyjściowe JSON z polecenia .
W repozytorium GitHub przejdź do pozycji UstawieniaAkcje>i wybierz pozycję > repozytorium.
Wprowadź
AZURE_CREDENTIALSjako nazwę i wklej zawartość danych wyjściowych JSON jako wartość.Wybierz przycisk Add secret (Dodaj wpis tajny).
Tworzenie przepływu pracy funkcji GitHub Actions
W repozytorium GitHub przejdź do pozycji Akcje i wybierz pozycję Nowy przepływ pracy.
Wybierz pozycję Skonfiguruj przepływ pracy samodzielnie.
Wklej następujący kod YAML do edytora.
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-rgZastąp
<ACR_NAME>ciąg nazwą usługi Azure Container Registry. Upewnij się, że nazwa gałęzi w obszarzebranchesi wartości dlaappSourcePathcontainerAppName, iresourceGroupjest zgodna z wartościami repozytorium i zasobów platformy Azure.Zatwierdź zmiany w gałęzi głównej.
Uruchomienie przepływu pracy funkcji GitHub Actions powinno rozpocząć tworzenie i wdrażanie aplikacji kontenera. Aby sprawdzić postęp, przejdź do pozycji Akcje.
Aby wdrożyć nową wersję aplikacji, wypchnij nowe zatwierdzenie do gałęzi głównej.