Konfigurowanie obrazu kontenera do wykonywania wdrożeń
Środowiska wdrażania platformy Azure (ADE) obsługują model rozszerzalności, który umożliwia skonfigurowanie definicji środowiska przy użyciu preferowanej struktury szablonów IaC. Obrazy niestandardowe można przechowywać w rejestrze kontenerów, na przykład Azure Container Registry (ACR) lub Docker Hub, a następnie odwoływać się do nich w definicjach środowiska w celu wdrożenia środowisk.
Z tego artykułu dowiesz się, jak tworzyć niestandardowe obrazy kontenerów Bicep w celu wdrożenia definicji środowiska w usłudze ADE. Dowiesz się, jak używać standardowego obrazu dostarczonego przez firmę Microsoft lub jak skonfigurować niestandardową infrastrukturę aprowizacji obrazów przy użyciu platformy Bicep Infrastructure-as-Code (IaC).
Z tego artykułu dowiesz się, jak tworzyć niestandardowe obrazy kontenerów programu Terraform w celu tworzenia środowisk wdrażania za pomocą środowisk wdrażania platformy Azure (ADE). Dowiesz się, jak skonfigurować obraz niestandardowy w celu aprowizacji infrastruktury przy użyciu platformy Terraform Infrastructure-as-Code (IaC).
Z tego artykułu dowiesz się, jak korzystać z aplikacji Pulumi na potrzeby wdrożeń w usłudze ADE. Dowiesz się, jak używać standardowego obrazu dostarczonego przez firmę Pulumi lub jak skonfigurować obraz niestandardowy do aprowizacji infrastruktury przy użyciu platformy IaC (Pulumi Infrastructure-as-Code).
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
- Środowiska wdrażania platformy Azure skonfigurowane w ramach subskrypcji platformy Azure.
- Aby skonfigurować usługę ADE, wykonaj czynności opisane w przewodniku Szybki start: Konfigurowanie środowisk wdrażania platformy Azure.
Używanie obrazów kontenerów z usługą ADE
Możesz użyć jednego z następujących metod używania obrazów kontenerów z usługą ADE:
- Użyj standardowego obrazu kontenera w przypadku prostych scenariuszy, użyj standardowego obrazu kontenera ARM-Bicep dostarczonego przez usługę ADE.
- Utwórz niestandardowy obraz kontenera W przypadku bardziej złożonych scenariuszy utwórz niestandardowy obraz kontenera spełniający określone wymagania.
Używanie standardowego obrazu kontenera
Usługa ADE obsługuje usługę Azure Resource Manager (ARM) i Bicep bez konieczności dodatkowej konfiguracji. Możesz utworzyć definicję środowiska, która wdraża zasoby platformy Azure dla środowiska wdrażania, dodając pliki szablonów (takie jak azuredeploy.json i environment.yaml) do katalogu. Usługa ADE używa następnie standardowego obrazu kontenera ARM-Bicep do utworzenia środowiska wdrażania.
W pliku environment.yaml właściwość określa lokalizację obrazu kontenera, runner
którego chcesz użyć. Aby użyć obrazu standardowego opublikowanego na Rejestr Artefaktów Microsoft, użyj odpowiednich identyfikatorów runner
.
W poniższym przykładzie pokazano, runner
że odwołuje się do standardowego obrazu kontenera ARM-Bicep:
name: WebApp
version: 1.0.0
summary: Azure Web App Environment
description: Deploys a web app in Azure without a datastore
runner: Bicep
templatePath: azuredeploy.json
Standardowy obraz kontenera Bicep można zobaczyć w repozytorium standardowego programu ADE w folderze Runner-Images dla obrazu ARM-Bicep .
Aby uzyskać więcej informacji na temat tworzenia definicji środowiska, które używają obrazów kontenera ADE do wdrażania zasobów platformy Azure, zobacz Dodawanie i konfigurowanie definicji środowiska.
Tworzenie niestandardowego obrazu kontenera
Tworzenie niestandardowego obrazu kontenera przy użyciu skryptu
Utworzenie niestandardowego obrazu kontenera umożliwia dostosowanie wdrożeń do własnych wymagań. Możesz utworzyć i skompilować obraz na podstawie standardowego obrazu usługi ADE i wypchnąć go do rejestru kontenerów przy użyciu skryptu Szybkiego startu dostarczonego przez firmę Microsoft. Skrypt można znaleźć w repozytorium Środowiska wdrażania. Aby użyć skryptu Szybkiego startu, rozwidlenie repozytorium, a następnie uruchom skrypt lokalnie.
Skrypt tworzy obraz i wypycha go do określonej usługi Azure Container Registry (ACR) w repozytorium "ade" i tagu "latest". Ten skrypt wymaga nazwy rejestru i katalogu dla obrazu niestandardowego, mieć zainstalowany interfejs wiersza polecenia platformy Azure i program Docker Desktop oraz w zmiennych PATH i wymaga uprawnień do wypychania do określonego rejestru.
Aby użyć skryptu szybkiego startu, aby szybko skompilować i wypchnąć ten przykładowy obraz do usługi Azure Container Registry, należy wykonać następujące kroki:
- Rozwidlenie tego repozytorium na koncie osobistym.
- Upewnij się, że interfejs wiersza polecenia platformy Azure i aplikacja klasyczna platformy Docker są zainstalowane na komputerze i w zmiennych PATH.
- Upewnij się, że masz uprawnienia do wypychania obrazów do wybranej usługi Azure Container Registry.
Skrypt można wywołać przy użyciu następującego polecenia w programie PowerShell:
.\quickstart-image-build.ps1 -Registry '{YOUR_REGISTRY}' -Directory '{DIRECTORY_TO_YOUR_IMAGE}'
Ponadto jeśli chcesz wypchnąć do określonego repozytorium i nazwy tagu, możesz uruchomić następujące polecenie:
.\quickstart-image.build.ps1 -Registry '{YOUR_REGISTRY}' -Directory '{DIRECTORY_TO_YOUR_IMAGE}' -Repository '{YOUR_REPOSITORY}' -Tag '{YOUR_TAG}'
Aby użyć obrazu we wdrożeniach środowiska, należy dodać lokalizację obrazu do pliku manifestu Połącz obraz z definicją środowiska i może być konieczne skonfigurowanie uprawnień dla usługi ACR, aby obraz niestandardowy był dostępny dla usługi ADE.
Używanie obrazów kontenerów z usługą ADE
Możesz użyć jednego z następujących metod używania obrazów kontenerów z usługą ADE:
- Utwórz niestandardowy obraz kontenera przy użyciu skryptu: użyj opublikowanego skryptu, aby utworzyć obraz specyficzny dla programu Terraform.
- Tworzenie niestandardowego obrazu kontenera korzystającego z przepływu pracy usługi GitHub: użyj opublikowanego przepływu pracy usługi GitHub z repozytorium Wykorzystanie modelu rozszerzalności usługi ADE za pomocą narzędzia Terraform.
- Ręczne tworzenie niestandardowego obrazu kontenera: ręczne tworzenie dostosowanego obrazu specyficznego dla programu Terraform
Tworzenie niestandardowego obrazu kontenera
- Tworzenie obrazu przy użyciu skryptu
- Tworzenie obrazu przy użyciu przepływu pracy usługi GitHub
- Ręczne tworzenie obrazu
Tworzenie niestandardowego obrazu kontenera przy użyciu skryptu
Utworzenie niestandardowego obrazu kontenera umożliwia dostosowanie wdrożeń do własnych wymagań. Obraz można utworzyć na podstawie obrazu standardowego usługi ADE i wypchnąć go do rejestru kontenerów przy użyciu skryptu Szybkiego startu dostarczonego przez firmę Microsoft. Skrypt można znaleźć w repozytorium Terraform w środowiskach wdrażania. Aby użyć skryptu Szybkiego startu, rozwidlenie repozytorium, a następnie uruchom skrypt lokalnie.
Aby użyć skryptu szybkiego startu, aby szybko skompilować i wypchnąć ten przykładowy obraz do usługi Azure Container Registry, należy wykonać następujące kroki:
- Rozwidlenie tego repozytorium na koncie osobistym.
- Upewnij się, że interfejs wiersza polecenia platformy Azure i aplikacja klasyczna platformy Docker są zainstalowane na komputerze i w zmiennych PATH.
- Upewnij się, że masz uprawnienia do wypychania obrazów do wybranej usługi Azure Container Registry.
Skrypt tworzy obraz i wypycha go do określonej usługi Azure Container Registry (ACR) w repozytorium "ade" i tagu "latest". Ten skrypt wymaga nazwy rejestru i katalogu dla obrazu niestandardowego, mieć zainstalowany interfejs wiersza polecenia platformy Azure i program Docker Desktop oraz w zmiennych PATH i wymaga uprawnień do wypychania do określonego rejestru. Skrypt można wywołać przy użyciu następującego polecenia w programie PowerShell:
.\quickstart-image-build.ps1 -Registry '{YOUR_REGISTRY}' -Directory '{DIRECTORY_TO_YOUR_IMAGE}'
Ponadto jeśli chcesz wypchnąć do określonego repozytorium i nazwy tagu, możesz uruchomić następujące polecenie:
.\quickstart-image.build.ps1 -Registry '{YOUR_REGISTRY}' -Directory '{DIRECTORY_TO_YOUR_IMAGE}' -Repository '{YOUR_REPOSITORY}' -Tag '{YOUR_TAG}'
Aby użyć obrazu we wdrożeniach środowiska, należy dodać lokalizację obrazu do pliku manifestu Połącz obraz z definicją środowiska i może być konieczne skonfigurowanie uprawnień dla usługi ACR, aby obraz niestandardowy był dostępny dla usługi ADE.
Używanie standardowego obrazu kontenera dostarczonego przez pulumi
Zespół Pulumi udostępnia wstępnie utworzony obraz umożliwiający rozpoczęcie pracy, który można zobaczyć w folderze Runner-Image . Ten obraz jest publicznie dostępny w usłudze Docker Hub firmy Pulumi jako pulumi/azure-deployment-environments
, więc można go używać bezpośrednio z definicji środowiska ADE.
Oto przykładowy plik environment.yaml , który korzysta ze wstępnie utworzonego obrazu:
name: SampleDefinition
version: 1.0.0
summary: First Pulumi-Enabled Environment
description: Deploys a Storage Account with Pulumi
runner: pulumi/azure-deployment-environments:0.1.0
templatePath: Pulumi.yaml
Kilka przykładowych definicji środowiska można znaleźć w folderze Środowiska.
Tworzenie obrazu niestandardowego
Utworzenie niestandardowego obrazu kontenera umożliwia dostosowanie wdrożeń do własnych wymagań. Obrazy niestandardowe można tworzyć na podstawie standardowych obrazów pulumi i dostosowywać je w celu spełnienia wymagań. Po zakończeniu dostosowywania obrazu należy skompilować obraz i wypchnąć go do rejestru kontenerów.
Aby utworzyć obraz skonfigurowany dla usługi ADE, wykonaj następujące kroki:
- Utwórz obraz niestandardowy na podstawie obrazu standardowego.
- Zainstaluj żądane pakiety.
- Konfigurowanie skryptów powłoki operacji.
- Tworzenie skryptów powłoki operacji korzystających z interfejsu wiersza polecenia programu Pulumi.
1. Tworzenie obrazu niestandardowego na podstawie obrazu standardowego
Utwórz plik DockerFile zawierający instrukcję FROM wskazującą standardowy obraz hostowany na Rejestr Artefaktów Microsoft.
Oto przykładowa instrukcja FROM, odwołując się do standardowego obrazu podstawowego:
FROM mcr.microsoft.com/deployment-environments/runners/core:latest
Ta instrukcja ściąga ostatnio opublikowany obraz podstawowy i sprawia, że stanowi podstawę dla niestandardowego obrazu.
2. Zainstaluj wymagane pakiety
Interfejs wiersza polecenia programu Pulumi można zainstalować w lokalizacji wykonywalnej, aby można było go użyć w skryptach wdrażania i usuwania.
Oto przykład tego procesu, instalując najnowszą wersję interfejsu wiersza polecenia pulumi:
RUN apk add curl
RUN curl -fsSL https://get.pulumi.com | sh
ENV PATH="${PATH}:/root/.pulumi/bin"
W zależności od języka programowania, którego zamierzasz używać dla programów Pulumi, może być konieczne zainstalowanie co najmniej jednego odpowiedniego środowiska uruchomieniowego. Środowisko uruchomieniowe języka Python jest już dostępne w obrazie podstawowym.
Oto przykład instalowania Node.js i języka TypeScript:
# install node.js, npm, and typescript
RUN apk add nodejs npm
RUN npm install typescript -g
Obrazy standardowe programu ADE są oparte na obrazie interfejsu wiersza polecenia platformy Azure i mają wstępnie zainstalowane pakiety JQ i interfejsu wiersza polecenia programu ADE. Możesz dowiedzieć się więcej na temat interfejsu wiersza polecenia platformy Azure i pakietu JQ.
Aby zainstalować więcej pakietów potrzebnych na obrazie, użyj instrukcji RUN.
Istnieją cztery kroki wdrażania infrastruktury za pośrednictwem aplikacji Pulumi:
-
pulumi login
— nawiąż połączenie z magazynem stanu w lokalnym systemie plików lub w usłudze Pulumi Cloud -
pulumi stack select
— tworzenie lub wybieranie stosu do użycia dla określonego środowiska -
pulumi config set
— przekazywanie parametrów wdrożenia jako wartości konfiguracji aplikacji Pulumi -
pulumi up
— uruchamianie wdrożenia w celu utworzenia nowej lub aktualizacji istniejącej infrastruktury na platformie Azure
Podczas punktu wejścia obrazu podstawowego wszystkie istniejące pliki stanu lokalnego są pobierane do kontenera i katalogu zapisanego w zmiennej środowiskowej $ADE_STORAGE
. Aby uzyskać dostęp do istniejącego pliku stanu, uruchom następujące polecenia:
mkdir -p $ADE_STORAGE
export PULUMI_CONFIG_PASSPHRASE=
pulumi login file://$ADE_STORAGE
Aby zalogować się do usługi Pulumi Cloud, ustaw token dostępu pulumi jako zmienną środowiskową i uruchom następujące polecenia:
export PULUMI_ACCESS_TOKEN=YOUR_PULUMI_ACCESS_TOKEN
pulumi login
Wszystkie parametry ustawione dla bieżącego środowiska są przechowywane w zmiennej $ADE_OPERATION_PARAMETERS
. Ponadto wybrana nazwa regionu i grupy zasobów platformy Azure jest przekazywana odpowiednio i ADE_ENVIRONMENT_LOCATION
ADE_RESOURCE_GROUP_NAME
. Aby ustawić konfigurację stosu Pulumi, uruchom następujące polecenia:
# Create or select the stack for the current environment
pulumi stack select $ADE_ENVIRONMENT_NAME --create
# Store configuration values in durable storage
export PULUMI_CONFIG_FILE=$ADE_STORAGE/Pulumi.$ADE_ENVIRONMENT_NAME.yaml
# Set the Pulumi stack config
pulumi config set azure-native:location $ADE_ENVIRONMENT_LOCATION --config-file $PULUMI_CONFIG_FILE
pulumi config set resource-group-name $ADE_RESOURCE_GROUP_NAME --config-file $PULUMI_CONFIG_FILE
echo "$ADE_OPERATION_PARAMETERS" | jq -r 'to_entries|.[]|[.key, .value] | @tsv' |
while IFS=$'\t' read -r key value; do
pulumi config set $key $value --config-file $PULUMI_CONFIG_FILE
done
Ponadto aby można było korzystać z uprawnień usługi ADE do wdrażania infrastruktury w ramach subskrypcji, skrypt musi używać tożsamości usługi zarządzanej (MSI) programu ADE podczas aprowizacji infrastruktury przy użyciu natywnego dla platformy Azure programu Pulumi lub klasycznego dostawcy platformy Azure. Jeśli wdrożenie wymaga specjalnych uprawnień do ukończenia wdrożenia, takich jak określone role, przypisz te uprawnienia do tożsamości typu środowiska projektu, która jest używana na potrzeby wdrożenia środowiska. Program ADE ustawia odpowiednie zmienne środowiskowe, takie jak identyfikatory klienta, dzierżawy i subskrypcji w punkcie wejścia obrazu podstawowego, dlatego uruchom następujące polecenia, aby upewnić się, że dostawca korzysta z tożsamości usługi ADE:
export ARM_USE_MSI=true
export ARM_CLIENT_ID=$ADE_CLIENT_ID
export ARM_TENANT_ID=$ADE_TENANT_ID
export ARM_SUBSCRIPTION_ID=$ADE_SUBSCRIPTION_ID
Teraz możesz uruchomić pulumi up
polecenie , aby wykonać wdrożenie:
pulumi up --refresh --yes --config-file $PULUMI_CONFIG_FILE
Podczas skryptu destroy
usuwania możesz zamiast tego uruchomić polecenie, jak pokazano w poniższym przykładzie:
pulumi destroy --refresh --yes --config-file $PULUMI_CONFIG_FILE
Na koniec, aby dane wyjściowe wdrożenia były przekazywane i dostępne podczas uzyskiwania dostępu do środowiska za pośrednictwem interfejsu wiersza polecenia platformy Azure, przekształć obiekt wyjściowy z aplikacji Pulumi do formatu określonego przez program ADE za pomocą pakietu JQ. Ustaw wartość na zmienną środowiskową $ADE_OUTPUTS, jak pokazano w poniższym przykładzie:
stackout=$(pulumi stack output --json | jq -r 'to_entries|.[]|{(.key): {type: "string", value: (.value)}}')
echo "{\"outputs\": ${stackout:-{\}}}" > $ADE_OUTPUTS
Kompilowanie obrazu niestandardowego
Obraz można utworzyć przy użyciu interfejsu wiersza polecenia platformy Docker. Upewnij się, że aparat platformy Docker jest zainstalowany na komputerze. Następnie przejdź do katalogu pliku Dockerfile i uruchom następujące polecenie:
docker build . -t {YOUR_REGISTRY}.azurecr.io/{YOUR_REPOSITORY}:{YOUR_TAG}
Jeśli na przykład chcesz zapisać obraz w repozytorium w rejestrze o nazwie customImage
, i przekazać go przy użyciu wersji tagu 1.0.0
, uruchom następujące polecenie:
docker build . -t {YOUR_REGISTRY}.azurecr.io/customImage:1.0.0
Udostępnianie obrazu niestandardowego usłudze ADE
Aby można było używać obrazów niestandardowych, należy je przechowywać w rejestrze kontenerów. Można użyć publicznego rejestru kontenerów lub prywatnego rejestru kontenerów. Usługa Azure Container Registry (ACR) jest zdecydowanie zalecana ze względu na ścisłą integrację z usługą ADE, obraz można opublikować bez zezwalania na publiczny anonimowy dostęp do ściągania. Musisz skompilować niestandardowy obraz kontenera i wypchnąć go do rejestru kontenerów, aby udostępnić go do użycia w usłudze ADE.
Można również przechowywać obraz w innym rejestrze kontenerów, takim jak Docker Hub, ale w takim przypadku musi być publicznie dostępny.
Uwaga
Przechowywanie obrazu kontenera w rejestrze z dostępem do ściągnięcia anonimowego (nieuwierzytelnionego) sprawia, że jest on publicznie dostępny. Nie należy tego robić, jeśli obraz zawiera jakiekolwiek poufne informacje. Zamiast tego zapisz go w usłudze Azure Container Registry (ACR) z wyłączonym anonimowym dostępem do ściągania.
Aby użyć obrazu niestandardowego przechowywanego w usłudze ACR, należy upewnić się, że usługa ADE ma odpowiednie uprawnienia dostępu do obrazu. Podczas tworzenia wystąpienia usługi ACR jest ono domyślnie bezpieczne i zezwala tylko uwierzytelnieni użytkownikom na uzyskiwanie dostępu.
Za pomocą aplikacji Pulumi możesz utworzyć usługę Azure Container Registry i opublikować w niej obraz. Zapoznaj się z przykładem aprowizacji/niestandardowego obrazu dla samodzielnego projektu Pulumi, który tworzy wszystkie wymagane zasoby na koncie platformy Azure.
Wybierz odpowiednią kartę, aby dowiedzieć się więcej o każdym podejściu.
Używanie rejestru prywatnego z zabezpieczonym dostępem
Domyślnie dostęp do ściągania lub wypychania zawartości z usługi Azure Container Registry jest dostępny tylko dla uwierzytelnionych użytkowników. Możesz dodatkowo zabezpieczyć dostęp do usługi ACR, ograniczając dostęp z określonych sieci i przypisując określone role.
Aby utworzyć wystąpienie usługi ACR, które można wykonać za pomocą interfejsu wiersza polecenia platformy Azure, witryny Azure Portal, poleceń programu PowerShell i nie tylko, postępuj zgodnie z jednym z przewodników Szybki start.
Ograniczanie dostępu do sieci
Aby zabezpieczyć dostęp sieciowy do usługi ACR, możesz ograniczyć dostęp do własnych sieci lub całkowicie wyłączyć dostęp do sieci publicznej. W przypadku ograniczenia dostępu do sieci należy włączyć wyjątek zapory Zezwalaj na dostęp do tego rejestru kontenerów zaufanym usługi firmy Microsoft.
Aby wyłączyć dostęp z sieci publicznych:
Utwórz wystąpienie usługi ACR lub użyj istniejącego wystąpienia.
W witrynie Azure Portal przejdź do usługi ACR, którą chcesz skonfigurować.
W menu po lewej stronie w obszarze Ustawienia wybierz pozycję Sieć.
Na stronie Sieć na karcie Dostęp publiczny w obszarze Dostęp publiczny wybierz pozycję Wyłączone.
W obszarze Wyjątek zapory zaznacz pole wyboru Zezwalaj na dostęp do tego rejestru kontenerów za pomocą zaufanych usługi firmy Microsoft, a następnie wybierz pozycję Zapisz.
Przypisywanie roli AcrPull
Tworzenie środowisk przy użyciu obrazów kontenerów korzysta z infrastruktury usługi ADE, w tym projektów i typów środowisk. Każdy projekt ma co najmniej jeden typ środowiska projektu, który wymaga dostępu do odczytu do obrazu kontenera, który definiuje środowisko do wdrożenia. Aby bezpiecznie uzyskać dostęp do obrazów w usłudze ACR, przypisz rolę AcrPull do każdego typu środowiska projektu.
Aby przypisać rolę AcrPull do typu środowiska projektu:
W witrynie Azure Portal przejdź do usługi ACR, którą chcesz skonfigurować.
W menu po lewej stronie wybierz pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami).
Wybierz pozycję Dodaj>Dodaj przypisanie roli.
Przypisz następującą rolę. Aby uzyskać szczegółowe instrukcje, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.
Ustawienie Wartość Rola Wybierz pozycję AcrPull. Przypisywanie dostępu do Wybierz pozycję Użytkownik, grupa lub jednostka usługi. Elementy członkowskie Wprowadź nazwę typu środowiska projektu, który musi uzyskać dostęp do obrazu w kontenerze. Typ środowiska projektu jest wyświetlany jak w poniższym przykładzie:
W tej konfiguracji usługa ADE używa tożsamości zarządzanej dla konta PET, niezależnie od tego, czy przypisano system, czy przypisano użytkownika.
Napiwek
To przypisanie roli musi zostać wykonane dla każdego typu środowiska projektu. Można ją zautomatyzować za pomocą interfejsu wiersza polecenia platformy Azure.
Gdy wszystko będzie gotowe do wypchnięcia obrazu do rejestru, uruchom następujące polecenie:
docker push {YOUR_REGISTRY}.azurecr.io/{YOUR_IMAGE_LOCATION}:{YOUR_TAG}
Łączenie obrazu z definicją środowiska
Podczas tworzenia definicji środowiska do używania obrazu niestandardowego we wdrożeniu edytuj runner
właściwość w pliku manifestu (environment.yaml lub manifest.yaml).
runner: "{YOUR_REGISTRY}.azurecr.io/{YOUR_REPOSITORY}:{YOUR_TAG}"
Aby dowiedzieć się więcej na temat tworzenia definicji środowiska, które używają obrazów kontenera usługi ADE do wdrażania zasobów platformy Azure, zobacz Dodawanie i konfigurowanie definicji środowiska.