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:
- Podstawowa wiedza na temat pojęć związanych z platformą Kubernetes.
- Klaster usługi AKS, który jest uruchomiony.
- Zainstalowany interfejs wiersza polecenia platformy Azure.
- Środowisko lokalne
kubectl
skonfigurowane tak, aby wskazywało klaster usługi AKS. Możesz użyć polecenia Get-AksHciCredential programu PowerShell, aby skonfigurować klaster pod kątem dostępu przy użyciu poleceniakubectl
.
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: