Udostępnij za pośrednictwem


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

Dotyczy: AKS na Azure Local 22H2, AKS na Windows Server

W tym artykule opisano sposób wdrażania obrazów kontenerów z prywatnego rejestru kontenerów przy użyciu usługi Azure Container Registry, które można uruchamiać we własnym centrum danych w usłudze AKS z włączonymi wdrożeniami usługi Azure 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 do lokalnego klastra Kubernetes hostowanego w usłudze AKS włączonej przez usługę Arc.

Aby uzyskać więcej informacji na temat usługi Container Registry na platformie Azure, zobacz dokumentację usługi 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 programu PowerShell. 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 kątem kosztów punkt wejścia na potrzeby programowania, 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>

Usługa 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 element appId i password do 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ą Container Registry, zobacz Azure Container Registry authentication with service principals (Uwierzytelnianie usługi Azure Container Registry za pomocą 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 interfejsu wiersza polecenia platformy Docker

Aby uzyskać dostęp do rejestru kontenerów przy użyciu 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>

Z jedną z opcji polecenie powinno zwrócić komunikat "Zaloguj się pomyślnie" po zakończeniu.

Wypychanie obrazu do rejestru kontenerów

Po pomyślnym zalogowaniu możesz rozpocząć wypychanie obrazu do rejestru kontenerów. Najpierw uruchom docker images polecenie , 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ąć, oznacz obraz za pomocą docker tag polecenia , a następnie użyj polecenia 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 oznaczony, uruchamiając docker images ponownie polecenie. Po potwierdzeniu uruchom polecenie docker push , aby wypchnąć do rejestru kontenerów, jak pokazano poniżej:

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ągania 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>

gdzie:

Wartość Opis
secret-name Nazwa obrazu ściąga wpis tajny, na przykład acr-secret.
namespace Przestrzeń nazw platformy Kubernetes w celu wprowadzenia wpisu tajnego. 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 imagePullSecrets w 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 ściągnięcia z rejestru kontenerów i acr-secret nazwą utworzonego wpisu tajnego ściągania w celu uzyskania dostępu do rejestru. Podczas wdrażania zasobnika platforma Kubernetes automatycznie ściąga obraz z rejestru, jeśli obraz nie jest jeszcze obecny w klastrze.

Powyższa konfiguracja zasobnika można zapisać w pliku, takim jak pod-example.yaml , a następnie wdrożyć ją na platformie 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óre powinno wyświetlić obraz kontenera użyty do utworzenia zasobnika.

Następne kroki

W tym artykule przedstawiono sposób wdrażania obrazu kontenera z usługi Azure Container Registry w usłudze AKS Arc. Następnie możesz wykonać następujące czynności: