Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Azure DevOps Services
Użyj usługi Azure Pipelines do automatycznego wdrażania w usłudze Azure Kubernetes Service (AKS). Usługa Azure Pipelines umożliwia tworzenie, testowanie i wdrażanie za pomocą ciągłej integracji i ciągłego dostarczania (CD) przy użyciu usługi Azure DevOps.
W tym artykule dowiesz się, jak utworzyć pipeline, który stale kompiluje i wdraża twoją aplikację. Za każdym razem, gdy zmieniasz kod w repozytorium zawierającym plik Dockerfile, obrazy są wypychane do usługi Azure Container Registry, a manifesty są następnie wdrażane w klastrze usługi AKS.
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
- Połączenie usługi Azure Resource Manager. Utwórz połączenie usługi Azure Resource Manager.
- Konto usługi GitHub. Utwórz bezpłatne konto usługi GitHub, jeśli jeszcze go nie masz.
Uzyskiwanie kodu
Forkuj następujące repozytorium zawierające przykładową aplikację i plik Dockerfile:
https://github.com/MicrosoftDocs/pipelines-javascript-docker
Tworzenie zasobów platformy Azure
Zaloguj się do witryny Azure Portal, a następnie wybierz przycisk Cloud Shell w prawym górnym rogu. Użyj interfejsu wiersza polecenia platformy Azure lub programu PowerShell, aby utworzyć klaster usługi AKS.
Tworzenie rejestru kontenerów
- Azure CLI (Interfejs wiersza polecenia)
- PowerShell
# Create a resource group
az group create --name myapp-rg --location eastus
# Create a container registry
az acr create --resource-group myapp-rg --name mycontainerregistry --sku Basic
# Create a Kubernetes cluster
az aks create \
--resource-group myapp-rg \
--name myapp \
--node-count 1 \
--enable-addons monitoring \
--generate-ssh-keys
Logowanie się do usługi Azure Pipelines
Zaloguj się do usługi Azure Pipelines. Po zalogowaniu przeglądarka przejdzie do https://dev.azure.com/my-organization-name
pulpitu nawigacyjnego usługi Azure DevOps i wyświetli go.
W wybranej organizacji utwórz projekt. Jeśli nie masz żadnych projektów w organizacji, zobaczysz ekran Tworzenie projektu, aby rozpocząć pracę . W przeciwnym razie wybierz przycisk Utwórz projekt w prawym górnym rogu pulpitu nawigacyjnego.
Utwórz potok
Połącz się i wybierz swoje repozytorium
Zaloguj się do organizacji usługi Azure DevOps i przejdź do projektu.
Przejdź do obszaru Potoki, a następnie wybierz pozycję Nowy potok.
Wykonaj kroki kreatora, najpierw wybierając GitHub jako lokalizację kodu źródłowego.
Być może nastąpi przekierowanie do usługi GitHub w celu zalogowania się. Jeśli tak, wprowadź poświadczenia GitHub.
Po wyświetleniu listy repozytoriów wybierz repozytorium.
Możesz zostać przekierowany do usługi GitHub, aby zainstalować aplikację Azure Pipelines. Jeśli tak, wybierz pozycję Zatwierdź i zainstaluj.
Wybierz pozycję Wdróż w usłudze Azure Kubernetes Service.
Jeśli zostanie wyświetlony monit, wybierz subskrypcję, w której utworzono rejestr i klaster.
myapp
Wybierz klaster.W polu Przestrzeń nazw wybierz pozycję Istniejąca, a następnie wybierz pozycję domyślną.
Wybierz nazwę rejestru kontenerów.
Możesz pozostawić nazwę obrazu ustawioną na wartość domyślną.
Ustaw port usługi na 8080.
Ustaw pole wyboru Włącz przeglądanie aplikacji dla żądań ściągnięcia, aby przejrzeć konfigurację powiązaną z aplikacją, która ma zostać uwzględniona w potoku automatycznie wygenerowanym w kolejnych krokach.
Wybierz pozycję Zweryfikuj i skonfiguruj.
Podczas tworzenia potoku przez usługę Azure Pipelines proces będzie następujący:
Utwórz połączenie usługi rejestru Docker, aby umożliwić potokowi wypychanie obrazów do twojego rejestru kontenerów.
Utwórz środowisko i zasób Kubernetes w środowisku. W przypadku klastra z obsługą kontroli dostępu opartej na rolach utworzony zasób Kubernetes niejawnie tworzy w klastrze obiekty ServiceAccount i RoleBinding, aby utworzone konto ServiceAccount nie mogło wykonywać operacji poza wybraną przestrzenią nazw.
Wygeneruj plik azure-pipelines.yml, który definiuje pipeline.
Generowanie plików manifestu platformy Kubernetes. Te pliki są generowane przez uzupełnianie szablonów deployment.yml i service.yml na podstawie dokonanych przez ciebie wyborów. Gdy wszystko będzie gotowe, wybierz pozycję Zapisz i uruchom.
Wybierz pozycję Zapisz i uruchom.
Możesz zmienić komunikat zatwierdzenia na coś np. Dodaj potok do naszego repozytorium. Gdy wszystko będzie gotowe, wybierz pozycję Zapisz i uruchom, aby zatwierdzić nową wersję potoku danych w repozytorium, a następnie rozpocznij pierwsze uruchomienie nowego potoku danych.
Zobacz wdrożenie swojej aplikacji
W miarę działania potoku obserwuj, jak etap kompilacji, a potem etap wdrażania, przechodzą od niebieskiego (uruchomionego) do zielonego (ukończonego). Możesz wybrać etapy i zadania, aby obserwować działanie potoku.
Uwaga
Jeśli używasz agenta hostowanego przez firmę Microsoft, to musisz dodać zakres adresów IP agenta hostowanego przez firmę Microsoft do zapory. Pobierz cotygodniową listę zakresów adresów IP z cotygodniowego pliku JSON, który jest publikowany w każdą środę. Nowe zakresy adresów IP zaczynają obowiązywać w najbliższy poniedziałek. Aby uzyskać więcej informacji, zobacz Agenci hostowani przez firmę Microsoft. Aby znaleźć zakresy adresów IP wymagane dla organizacji usługi Azure DevOps, dowiedz się, jak identyfikować możliwe zakresy adresów IP dla agentów hostowanych przez firmę Microsoft.
Po zakończeniu przebiegu potoku sprawdź, co się stało, a następnie przejdź do wdrożonej aplikacji. Z podsumowania potoku:
Wybierz kartę Środowiska.
Wybierz pozycję Wyświetl środowisko.
Wybierz wystąpienie swojej aplikacji dla przestrzeni nazw, do której została wdrożona. Jeśli użyto wartości domyślnych, to aplikacja myapp w domyślnej przestrzeni nazw.
Wybierz kartę Usługi .
Wybierz i skopiuj zewnętrzny adres IP do schowka.
Otwórz nową kartę lub okno przeglądarki i wprowadź <adres> IP:8080.
Jeśli tworzysz naszą przykładową aplikację, w przeglądarce pojawi się komunikat Hello world .
Jak buduje się potok
Po zakończeniu wybierania opcji, przejdź do weryfikacji i konfiguracji, a następnie Azure Pipelines utworzy potok przy użyciu szablonu Deploy to Azure Kubernetes Service.
Etap kompilacji używa zadania platformy Docker do kompilowania i wypychania obrazu do usługi Azure Container Registry.
- stage: Build
displayName: Build stage
jobs:
- job: Build
displayName: Build job
pool:
vmImage: $(vmImageName)
steps:
- task: Docker@2
displayName: Build and push an image to container registry
inputs:
command: buildAndPush
repository: $(imageRepository)
dockerfile: $(dockerfilePath)
containerRegistry: $(dockerRegistryServiceConnection)
tags: |
$(tag)
- task: PublishPipelineArtifact@1
inputs:
artifactName: 'manifests'
path: 'manifests'
Zadanie wdrożenia używa zadania manifestu Kubernetes do utworzenia zasobu potrzebnego węzłom klastra Kubernetes do pobierania z Azure Container Registry. Pliki manifestu są następnie używane przez zadanie manifest Kubernetes do wdrażania w klastrze Kubernetes. Pliki manifestu service.yml
i deployment.yml
zostały wygenerowane podczas korzystania z szablonu Wdrażanie w usłudze Azure Kubernetes Service.
- stage: Deploy
displayName: Deploy stage
dependsOn: Build
jobs:
- deployment: Deploy
displayName: Deploy job
pool:
vmImage: $(vmImageName)
environment: 'myenv.aksnamespace' #customize with your environment
strategy:
runOnce:
deploy:
steps:
- task: DownloadPipelineArtifact@2
inputs:
artifactName: 'manifests'
downloadPath: '$(System.ArtifactsDirectory)/manifests'
- task: KubernetesManifest@1
displayName: Create imagePullSecret
inputs:
action: 'createSecret'
connectionType: 'kubernetesServiceConnection'
kubernetesServiceConnection: 'myapp-default' #customize for your Kubernetes service connection
secretType: 'dockerRegistry'
secretName: '$(imagePullSecret)'
dockerRegistryEndpoint: '$(dockerRegistryServiceConnection)'
- task: KubernetesManifest@1
displayName: Deploy to Kubernetes cluster
inputs:
action: 'deploy'
connectionType: 'kubernetesServiceConnection'
kubernetesServiceConnection: 'myapp-default' #customize for your Kubernetes service connection
manifests: |
$(Pipeline.Workspace)/manifests/deployment.yml
$(Pipeline.Workspace)/manifests/service.yml
containers: '$(containerRegistry)/$(imageRepository):$(tag)'
imagePullSecrets: '$(imagePullSecret)'
Czyszczenie zasobów
Za każdym razem, gdy skończysz z utworzonymi zasobami, możesz użyć następującego polecenia, aby je usunąć:
az group delete --name myapp-rg
Wprowadź y
kiedy zostaniesz o to poproszony.
Azure Kubernetes Service