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

Konfigurowanie uwierzytelniania rejestru

W scenariuszu produkcyjnym, w którym zapewniasz dostęp do "bezgłowych" usług i aplikacji, zaleca się 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 udostępnia dodatkowe opcje 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, w którym zapisano 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.

  1. W witrynie Azure Portal przejdź do rejestru kontenerów.

  2. Aby potwierdzić, że konto administratora jest włączone, wybierz pozycję Klucze dostępu, a w obszarze Administracja użytkownik wybierz pozycję Włącz.

  3. 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.

  4. Wprowadź nazwę kontenera i nazwę grupy zasobów. Możesz również zmienić wartości domyślne, jeśli chcesz.

    Create menu for Azure Container Instances

  5. 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.

    Details view for Azure Container Instances container group

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.