Wdrażanie z prywatnego rejestru kontenerów w lokalnym rozwiązaniu Kubernetes przy użyciu usług Azure Container Registry i AKS Arc

Dotyczy: Azure Stack HCI, wersja 23H2

W tym artykule opisano sposób wdrażania obrazów kontenerów z prywatnego rejestru kontenerów przy użyciu Azure Container Registry, które można uruchomić we własnym centrum danych we wdrożeniach usługi AKS Arc. Wdrożenie jest wdrażane w lokalnym klastrze Kubernetes hostowanym przez usługę AKS. Usługa Azure Container Registry umożliwia kompilowanie i przechowywanie obrazów kontenerów oraz artefaktów w rejestrze prywatnym dla wszystkich typów wdrożeń kontenerów, a także zarządzanie nimi.

W tym artykule opisano sposób tworzenia prywatnego rejestru kontenerów na platformie Azure i wypychania obrazu kontenera do prywatnego rejestru kontenerów. Następnie można wdrożyć z rejestru prywatnego w lokalnym klastrze Kubernetes hostowanym w usłudze AKS Arc.

Aby uzyskać więcej informacji na temat Azure Container Registry, zobacz dokumentację Azure Container Registry.

Wymagania wstępne

Sprawdź, czy masz następujące wymagania:

Tworzenie prywatnego rejestru kontenerów na platformie Azure

Aby utworzyć rejestr kontenerów, zacznij od grupy zasobów. Grupa zasobów platformy Azure to logiczny kontener przeznaczony do wdrażania zasobów platformy Azure i zarządzania nimi. Utwórz grupę zasobów za pomocą polecenia az group create. Poniższy przykład tworzy grupę zasobów w regionie eastus :

az group create --name <RESOURCE_GROUP_NAME> --location eastus

Utwórz wystąpienie usługi Container Registry za pomocą polecenia az acr create i podaj własną nazwę rejestru. Nazwa rejestru musi być unikatowa na platformie Azure i zawierać od 5 do 50 znaków alfanumerycznych. W pozostałej części tego artykułu <acrName> jest używany jako symbol zastępczy nazwy rejestru kontenerów, ale możesz podać własną unikatową nazwę rejestru. Podstawowa jednostka SKU to zoptymalizowany pod względem kosztów punkt wejścia do celów programistycznych, który zapewnia równowagę magazynu i przepływności:

az acr create --resource-group <RESOURCE_GROUP_NAME> --name <REGISTRY_NAME> --sku Basic

Po utworzeniu rejestru kontenerów użyj następującego polecenia, aby utworzyć jednostkę usługi, aby uzyskać dostęp do rejestru kontenerów z poziomu platformy Kubernetes:

az ad sp create-for-rbac /
--scopes /subscriptions/<SUBSCRIPTION_ID>/resourcegroups/<RG_NAME>/providers/Microsoft.ContainerRegistry/registries/<REGISTRY_NAME> /
--role Contributor /
--name <SERVICE_PRINCIPAL_NAME>

Azure Container Registry obsługuje trzy role dostępu. Rola Współautor jest najczęściej używana przez deweloperów aplikacji. Jednak w rzeczywistych scenariuszach może być konieczne utworzenie wielu jednostek usługi w zależności od wymaganego typu dostępu:

  • Współautor: ta rola oferuje dostęp wypychania i ściągania do repozytorium.
  • Czytelnik: ta rola zezwala tylko na dostęp ściągania do repozytorium.
  • Właściciel: Ta rola umożliwia przypisywanie ról innym użytkownikom oprócz dostępu wypychanego i ściągania do repozytorium.

Poprzednie polecenie powinno wygenerować dane wyjściowe podobne do następującego tekstu:

{
"appId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"displayName": "akshci-service-principal",
"name": "http://akshci-service-principal",
"password": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"tenant": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

Po pomyślnym utworzeniu jednostki usługi skopiuj identyfikator appId i hasło w bezpiecznej lokalizacji, aby użyć jej później we wdrożeniu.

Aby uzyskać więcej informacji na temat pracy z jednostkami usługi i usługą Azure Container Registry, zobacz Uwierzytelnianie w usłudze Azure Container Registry przy użyciu jednostek usługi.

Zaloguj się do prywatnego rejestru kontenerów

Aby użyć wystąpienia usługi Container Registry, musisz najpierw się zalogować. Aby się zalogować, możesz użyć interfejsu wiersza polecenia platformy Azure lub interfejsu wiersza polecenia platformy Docker.

Opcja 1. Logowanie z poziomu interfejsu wiersza polecenia platformy Azure

Użyj polecenia az acr sign in i podaj unikatową nazwę przypisaną do rejestru kontenerów w poprzednim kroku:

az acr login --name <REGISTRY_NAME>

Opcja 2. Logowanie z poziomu interfejsu wiersza polecenia platformy Docker

Aby uzyskać dostęp do rejestru kontenerów za pomocą interfejsu wiersza polecenia platformy Docker, wpisz następujące polecenie w terminalu powłoki Bash lub programu PowerShell:

docker login <REGISTRY_NAME>.azurecr.io -u <appId> -p <password>

W każdej z opcji polecenie powinno zwrócić komunikat o pomyślnym zalogowaniu po zakończeniu.

Wypychanie obrazu do rejestru kontenerów

Po pomyślnym zalogowaniu możesz rozpocząć wypychanie obrazu do rejestru kontenerów. Najpierw uruchom polecenie docker images, aby wyświetlić listę obrazów na komputerze lokalnym:

REPOSITORY TAG IMAGE ID CREATED SIZE

mcr.microsoft.com/azure-functions/dotnet 3.0 9f8ad1bdee67 5 months ago
540MB

poemfinder-app latest 2d9bef425603 6 months ago 208MB

Aby rozpocząć, otaguj obraz za pomocą polecenia platformy Docker tag , a następnie użyj platformy Docker push , aby wypchnąć go do rejestru kontenerów:

docker tag poemfinder-app <REGISTRY_NAME>.azurecr.io/poemfinder-app:v1.0

Sprawdź, czy obraz został poprawnie otagowany, uruchamiając ponownie polecenie docker images. Po potwierdzeniu uruchom polecenie docker push , aby wypchnąć do rejestru kontenerów w następujący sposób:

docker push <REGISTRY_NAME>.azurecr.io/poemfinder-app:v1.0

Aby potwierdzić, że obraz został pomyślnie wypchnięty do rejestru kontenerów, uruchom następujące polecenie:

az acr repository list --name <REGISTRY_NAME>.azurecr.io --output table

Wdrażanie obrazu z rejestru kontenerów w usłudze AKS

Aby wdrożyć obraz kontenera z rejestru kontenerów w klastrze Kubernetes, utwórz wpisy tajne Kubernetes w celu przechowywania poświadczeń rejestru. Platforma Kubernetes używa wpisu tajnego ściągania obrazu do przechowywania informacji potrzebnych do uwierzytelnienia w rejestrze. Aby utworzyć klucz tajny ściągnięcia dla rejestru kontenerów, podaj identyfikator jednostki usługi, hasło i adres URL rejestru:

kubectl create secret docker-registry <secret-name> \
--namespace <namespace> \
--docker-server=<REGISTRY_NAME>.azurecr.io \
--docker-username=<appId> \
--docker-password=<password>

W poniższej tabeli opisano parametry wejściowe:

Wartość Opis
secret-name Nazwa obrazu ściąga wpis tajny; na przykład acr-secret.
namespace Przestrzeń nazw kubernetes, do której należy umieścić wpis tajny. Wymagane tylko wtedy, gdy chcesz umieścić wpis tajny w przestrzeni nazw innej niż domyślna przestrzeń nazw.
<REGISTRY_NAME> Nazwa rejestru kontenerów. Na przykład myregistry. Jest --docker-server to w pełni kwalifikowana nazwa serwera logowania rejestru.
appId Identyfikator jednostki usługi używanej przez platformę Kubernetes do uzyskiwania dostępu do rejestru.
password Hasło jednostki usługi.

Po utworzeniu wpisu tajnego ściągania obrazu można go użyć do tworzenia zasobników i wdrożeń platformy Kubernetes. Podaj nazwę wpisu tajnego w imagePullSecrets pliku wdrożenia, jak pokazano w poniższym przykładzie:

apiVersion: v1
kind: Pod
metadata:
name: poemfinder-app
namespace: mydemoapps
spec:
containers:
 - name: poemfinder-app
   image: <REGISTRY_NAME>.azurecr.io/poemfinder-app:v1.0
   imagePullPolicy: IfNotPresent
 - imagePullSecrets:
   - name: acr-secret

W tym przykładzie jest nazwą obrazu do poemfinder-app:v1.0 pobrania z rejestru kontenerów i acr-secret jest nazwą wpisu tajnego ściągania utworzonego w celu uzyskania dostępu do rejestru. Po wdrożeniu zasobnika platforma Kubernetes automatycznie ściąga obraz z rejestru, jeśli obraz nie jest jeszcze obecny w klastrze.

Powyższej konfiguracji zasobnika można zapisać w pliku, takim jak pod-example.yaml , a następnie wdrożyć go w usłudze Kubernetes w następujący sposób:

kubectl create -f pod-example.yaml

Aby potwierdzić, że zasobnik został pomyślnie utworzony przy użyciu obrazu kontenera z rejestru kontenerów, uruchom polecenie kubectl describe pod <POD_NAME>, który powinien pokazywać obraz kontenera użyty do utworzenia zasobnika.

Następne kroki