Pobieranie zdarzeń w dziennikach kontenerów w witrynie Azure Container Instances
Azure Container Registry to oparta na platformie Azure, zarządzana usługa rejestru kontenerów używana do przechowywania prywatnych obrazów kontenerów platformy Docker. W tym artykule opisano sposób ściągania obrazów kontenerów przechowywanych w rejestrze kontenerów platformy Azure podczas wdrażania w usłudze Azure Container Instances. Jednym ze sposobów konfigurowania dostępu do rejestru jest utworzenie jednostki i hasła usługi Microsoft Entra oraz zapisanie poświadczeń logowania w magazynie kluczy platformy Azure.
Wymagania wstępne
Rejestr kontenerów platformy Azure: potrzebujesz rejestru kontenerów platformy Azure — i co najmniej jednego obrazu kontenera w rejestrze — aby wykonać kroki opisane w tym artykule. Jeśli potrzebujesz rejestru, zobacz Tworzenie rejestru kontenerów przy użyciu interfejsu wiersza polecenia platformy Azure.
Interfejs wiersza polecenia platformy Azure: przykłady wiersza polecenia w tym artykule używają interfejsu wiersza polecenia platformy Azure i są formatowane dla powłoki Bash. Interfejs wiersza polecenia platformy Azure można zainstalować lokalnie lub użyć usługi Azure Cloud Shell.
Ograniczenia
- Kontenery systemu Windows nie obsługują ściągnięcia obrazu uwierzytelnionego przy użyciu usługi ACR przypisanego przez system tożsamości zarządzanej tylko przez użytkownika.
Konfigurowanie uwierzytelniania rejestru
W scenariuszu produkcyjnym, w którym zapewniasz dostęp do "headless" usług i aplikacji, zalecamy skonfigurowanie dostępu do rejestru przy użyciu jednostki usługi. Jednostka usługi umożliwia udostępnianie obrazom kontenerów kontroli dostępu opartej na rolach (RBAC) platformy Azure. Na przykład można skonfigurować jednostkę usługi z dostępem tylko do ściągania do rejestru.
Usługa Azure Container Registry oferuje więcej opcji uwierzytelniania.
W poniższej sekcji utworzysz magazyn kluczy platformy Azure i jednostkę usługi oraz zapiszesz poświadczenia jednostki usługi w magazynie.
Tworzenie magazynu kluczy
Jeśli nie masz jeszcze magazynu w usłudze Azure Key Vault, utwórz go przy użyciu interfejsu wiersza polecenia platformy Azure przy użyciu poniższych poleceń.
Zaktualizuj zmienną RES_GROUP
przy użyciu nazwy istniejącej grupy zasobów, w której ma zostać utworzony magazyn kluczy, oraz ACR_NAME
przy użyciu nazwy rejestru kontenerów. W przypadku zwięzłości polecenia w tym artykule zakładają, że wszystkie wystąpienia rejestru, magazynu kluczy i kontenera są tworzone w tej samej grupie zasobów.
Określ nazwę nowego magazynu kluczy w pliku AKV_NAME
. Nazwa magazynu musi być unikatowa na platformie Azure i musi mieć długość od 3 do 24 znaków alfanumerycznych, zaczynać się literą, kończyć literą lub cyfrą i nie może zawierać kolejnych łączników.
RES_GROUP=myresourcegroup # Resource Group name
ACR_NAME=myregistry # Azure Container Registry registry name
AKV_NAME=mykeyvault # Azure Key Vault vault name
az keyvault create -g $RES_GROUP -n $AKV_NAME
Tworzenie jednostki usługi i poświadczenia magazynu
Teraz utwórz jednostkę usługi i zapisz jej poświadczenia w magazynie kluczy.
Następujące polecenia używają polecenia az ad sp create-for-rbac do utworzenia jednostki usługi i az keyvault secret set do przechowywania hasła jednostki usługi w magazynie. Pamiętaj, aby zanotować identyfikator appId jednostki usługi podczas tworzenia.
# Create service principal
az ad sp create-for-rbac \
--name http://$ACR_NAME-pull \
--scopes $(az acr show --name $ACR_NAME --query id --output tsv) \
--role acrpull
SP_ID=xxxx # Replace with your service principal's appId
# Store the registry *password* in the vault
az keyvault secret set \
--vault-name $AKV_NAME \
--name $ACR_NAME-pull-pwd \
--value $(az ad sp show --id $SP_ID --query password --output tsv)
Argument --role
w poprzednim poleceniu konfiguruje jednostkę usługi z rolą acrpull, co spowoduje przyznanie dostępu tylko do ściągania do rejestru. Aby przyznać prawa dostępu do wypychania i ściągania, należy zmienić argument --role
na wartość acrpush.
Następnie zapisz identyfikator appId jednostki usługi w magazynie, czyli nazwę użytkownika przekazaną do usługi Azure Container Registry na potrzeby uwierzytelniania.
# Store service principal ID in vault (the registry *username*)
az keyvault secret set \
--vault-name $AKV_NAME \
--name $ACR_NAME-pull-usr \
--value $(az ad sp show --id $SP_ID --query appId --output tsv)
Utworzono magazyn kluczy platformy Azure i zapisano w nim dwa wpisy tajne:
$ACR_NAME-pull-usr
: identyfikator jednostki usługi do użycia jako nazwa użytkownika rejestru kontenerów.$ACR_NAME-pull-pwd
: hasło jednostki usługi do użycia jako hasło rejestru kontenerów.
Teraz możesz odwoływać się do tych wpisów tajnych według nazwy, gdy Ty lub Twoje aplikacje i usługi ściągają obrazy z rejestru.
Wdrażanie kontenera przy użyciu interfejsu wiersza polecenia platformy Azure
Teraz, gdy poświadczenia jednostki usługi są przechowywane w wpisach tajnych usługi Azure Key Vault, aplikacje i usługi mogą ich używać do uzyskiwania dostępu do rejestru prywatnego.
Najpierw pobierz nazwę serwera logowania rejestru przy użyciu polecenia az acr show . Nazwa serwera logowania to małe litery i podobne do myregistry.azurecr.io
.
ACR_LOGIN_SERVER=$(az acr show --name $ACR_NAME --resource-group $RES_GROUP --query "loginServer" --output tsv)
Wykonaj polecenie az container create w celu wdrożenia wystąpienia kontenera. Polecenie używa poświadczeń jednostki usługi przechowywanych w usłudze Azure Key Vault do uwierzytelniania w rejestrze kontenerów i zakłada, że wcześniej wypchnął obraz aci-helloworld do rejestru. Zaktualizuj wartość, --image
jeśli chcesz użyć innego obrazu z rejestru.
az container create \
--name aci-demo \
--resource-group $RES_GROUP \
--image $ACR_LOGIN_SERVER/aci-helloworld:v1 \
--registry-login-server $ACR_LOGIN_SERVER \
--registry-username $(az keyvault secret show --vault-name $AKV_NAME -n $ACR_NAME-pull-usr --query value -o tsv) \
--registry-password $(az keyvault secret show --vault-name $AKV_NAME -n $ACR_NAME-pull-pwd --query value -o tsv) \
--dns-name-label aci-demo-$RANDOM \
--query ipAddress.fqdn
Wartość --dns-name-label
musi być unikatowa na platformie Azure, więc poprzednie polecenie dołącza losową liczbę do etykiety nazwy DNS kontenera. Dane wyjściowe polecenia wyświetlają w pełni kwalifikowaną nazwę domeny (FQDN) kontenera, na przykład:
"aci-demo-25007.eastus.azurecontainer.io"
Po pomyślnym uruchomieniu kontenera możesz przejść do jego nazwy FQDN w przeglądarce, aby sprawdzić, czy aplikacja została pomyślnie uruchomiona.
Wdrażanie przy użyciu szablonu usługi Azure Resource Manager
Właściwości rejestru kontenerów platformy Azure można określić w szablonie usługi Azure Resource Manager, uwzględniając imageRegistryCredentials
właściwość w definicji grupy kontenerów. Można na przykład bezpośrednio określić poświadczenia rejestru:
[...]
"imageRegistryCredentials": [
{
"server": "imageRegistryLoginServer",
"username": "imageRegistryUsername",
"password": "imageRegistryPassword"
}
]
[...]
Aby uzyskać pełne ustawienia grupy kontenerów, zobacz dokumentację szablonu usługi Resource Manager.
Aby uzyskać szczegółowe informacje na temat odwoływania się do wpisów tajnych usługi Azure Key Vault w szablonie usługi Resource Manager, zobacz Używanie usługi Azure Key Vault do przekazywania wartości bezpiecznego parametru podczas wdrażania.
Wdrażanie przy użyciu witryny Azure Portal
Jeśli przechowujesz obrazy kontenerów w rejestrze kontenerów platformy Azure, możesz łatwo utworzyć kontener w usłudze Azure Container Instances przy użyciu witryny Azure Portal. W przypadku wdrażania wystąpienia kontenera z rejestru kontenerów przy użyciu portalu należy włączyć konto administratora rejestru. Konto administratora jest przeznaczone dla pojedynczego użytkownika z dostępem do rejestru, głównie do celów testowych.
W witrynie Azure Portal przejdź do rejestru kontenerów.
Aby potwierdzić, że konto administratora jest włączone, wybierz pozycję Klucze dostępu, a następnie w obszarze Administrator wybierz pozycję Włącz.
Wybierz pozycję Repozytoria, a następnie wybierz repozytorium, z którego chcesz wdrożyć, kliknij prawym przyciskiem myszy tag obrazu kontenera, który chcesz wdrożyć, a następnie wybierz polecenie Uruchom wystąpienie.
Wprowadź nazwę kontenera i nazwę grupy zasobów. Możesz również zmienić wartości domyślne, jeśli chcesz.
Po zakończeniu wdrażania możesz przejść do grupy kontenerów z okienka powiadomień, aby znaleźć jego adres IP i inne właściwości.
Następne kroki
Aby uzyskać więcej informacji na temat uwierzytelniania usługi Azure Container Registry, zobacz Uwierzytelnianie za pomocą rejestru kontenerów platformy Azure.