Nasazení z privátního registru kontejneru do místního Kubernetes pomocí Azure Container Registry a AKS Arc

Platí pro: Azure Stack HCI verze 23H2

Tento článek popisuje, jak nasadit image kontejneru z privátního registru kontejneru pomocí Azure Container Registry, který můžete spustit ve vlastním datacentru v nasazeních AKS Arc. Nasadíte ho do místního clusteru Kubernetes hostovaného službou AKS. Azure Container Registry umožňuje sestavovat, ukládat a spravovat image kontejnerů a artefakty v privátním registru pro všechny typy kontejnerových nasazení.

Tento článek popisuje, jak vytvořit privátní registr kontejneru v Azure a odeslat image kontejneru do privátního registru kontejneru. Pak můžete nasadit z privátního registru do místního clusteru Kubernetes hostovaného v AKS Arc.

Další informace o Azure Container Registry najdete v dokumentaci k Azure Container Registry.

Požadavky

Ověřte, že máte následující požadavky:

Vytvoření privátního registru kontejneru v Azure

Pokud chcete vytvořit registr kontejneru, začněte skupinou prostředků. Skupina prostředků Azure je logický kontejner, ve kterém se nasazují a spravují prostředky Azure. Pomocí příkazu az group create vytvořte skupinu prostředků. Následující příklad vytvoří skupinu prostředků v oblasti eastus :

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

Pomocí příkazu az acr create vytvořte instanci služby Container Registry a zadejte vlastní název registru. Název registru musí být jedinečný v rámci Azure a musí obsahovat 5 až 50 alfanumerických znaků. Ve zbývající části tohoto článku <acrName> se používá jako zástupný symbol pro název registru kontejneru, ale můžete zadat vlastní jedinečný název registru. Skladová položka Basic je nákladově optimalizovaným vstupním bodem pro účely vývoje, který poskytuje rovnováhu mezi úložištěm a propustností:

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

Po vytvoření registru kontejneru pomocí následujícího příkazu vytvořte instanční objekt, abyste měli přístup k registru kontejneru z 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 podporuje tři přístupové role. Roli Přispěvatel používají nejčastěji vývojáři aplikací. V reálných scénářích ale může být potřeba vytvořit několik instančních objektů v závislosti na typu potřebného přístupu:

  • Přispěvatel: Tato role nabízí přístup k úložišti k nabízeným oznámením a přijetí změn.
  • Čtenář: Tato role umožňuje přístup pouze k úložišti pro vyžádání obsahu.
  • Vlastník: Tato role umožňuje přiřazovat role jiným uživatelům, kromě přístupu k nabízeným a vyžádaných přijetí změn k úložišti.

Předchozí příkaz by měl vytvořit výstup podobný následujícímu textu:

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

Po úspěšném vytvoření instančního objektu zkopírujte id aplikace a heslo do bezpečného umístění, abyste ho mohli použít později ve svém nasazení.

Další informace o práci s instančními objekty a službou Azure Container Registry najdete v tématu Ověřování ve službě Azure Container Registry pomocí instančních objektů.

Přihlášení k privátnímu registru kontejneru

Pokud chcete použít instanci služby Container Registry, musíte se nejprve přihlásit. K přihlášení můžete použít Azure CLI nebo Rozhraní příkazového řádku Dockeru.

Možnost 1: Přihlášení z Azure CLI

Použijte příkaz az acr sign in a zadejte jedinečný název přiřazený registru kontejneru v předchozím kroku:

az acr login --name <REGISTRY_NAME>

Možnost 2: Přihlášení z rozhraní příkazového řádku Dockeru

Pokud chcete pro přístup k registru kontejneru použít rozhraní příkazového řádku Dockeru, zadejte do Bashu nebo v terminálu PowerShellu následující příkaz:

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

V obou možnostech by příkaz měl po dokončení vrátit zprávu o úspěšném přihlášení .

Nahrání image do registru kontejneru

Po úspěšném přihlášení můžete začít nasdílovat image do služby Container Registry. Nejprve spusťte příkaz docker images a zobrazte seznam imagí na místním počítači:

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

Začněte tím, že image označíte pomocí příkazu dockeru tag a pak ji pomocí Dockeru push nasdílíte do registru kontejneru:

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

Opětovným spuštěním příkazu docker images ověřte, že je image správně označená. Po potvrzení spusťte příkaz docker push push do registru kontejneru následujícím způsobem:

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

Spuštěním následujícího příkazu potvrďte, že se image úspěšně nasdílela do registru kontejneru:

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

Nasazení image z registru kontejneru do AKS

Pokud chcete nasadit image kontejneru z registru kontejneru do clusteru Kubernetes, vytvořte tajné kódy Kubernetes pro uložení přihlašovacích údajů registru. Kubernetes používá tajný klíč vyžádané image k ukládání informací potřebných k ověření ve vašem registru. Pokud chcete vytvořit tajný klíč pro vyžádání pro registr kontejneru, zadejte ID instančního objektu, heslo a adresu URL registru:

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

Následující tabulka popisuje vstupní parametry:

Hodnota Popis
secret-name Název obrázku přetáhne tajný kód; Například acr-secret.
namespace Obor názvů Kubernetes, do kterého se má tajný klíč vložit. Je to potřeba jenom v případě, že chcete tajný klíč umístit do jiného oboru názvů, než je výchozí obor názvů.
<REGISTRY_NAME> Název registru kontejneru Například, myregistry. Je --docker-server plně kvalifikovaný název přihlašovacího serveru registru.
appId ID instančního objektu, který Kubernetes používá pro přístup k registru.
password Heslo instančního objektu.

Jakmile vytvoříte tajný klíč vyžádané image, můžete ho použít k vytváření podů a nasazení Kubernetes. Zadejte název tajného kódu imagePullSecrets v souboru nasazení, jak je znázorněno v následujícím příkladu:

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

V tomto příkladu je název image, poemfinder-app:v1.0 která se má vyžádat z registru kontejneru, a acr-secret je to název tajného klíče pro vyžádání, který jste vytvořili pro přístup k registru. Když nasadíte pod, Kubernetes automaticky načítá image z vašeho registru, pokud image ještě v clusteru není.

Výše uvedenou konfiguraci podu můžete uložit do souboru, jako je pod-example.yaml , a pak ji nasadit do Kubernetes následujícím způsobem:

kubectl create -f pod-example.yaml

Pokud chcete ověřit, že se pod úspěšně vytvořil pomocí image kontejneru z registru kontejneru, spusťte příkaz kubectl describe pod <POD_NAME>, který by měl zobrazit image kontejneru použitou k vytvoření podu.

Další kroky