Sdílet prostřednictvím


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

Platí pro: Azure Local, verze 23H2

Tento článek popisuje, jak nasadit image kontejneru z privátního registru kontejneru pomocí služby Azure Container Registry, kterou 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. Potom můžete z privátního registru nasadit do místního clusteru Kubernetes hostovaného v AKS Arc.

Další informace o službě Azure Container Registry najdete v dokumentaci ke službě Azure Container Registry.

Požadavky

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

  • Základní znalost konceptů Kubernetes
  • Cluster AKS, který je v provozu.
  • Nainstalované rozhraní Azure CLI
  • Vaše místní prostředí kubectl nakonfigurované tak, aby odkazovaly na cluster AKS.

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. Skupinu prostředků vytvoříte příkazem az group create. 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 v rámci Azure jedinečný 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 vstupní bod optimalizovaný 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 role přístupu. Role Přispěvatel se nejčastěji používá 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 nabízené a vyžádané replikace.
  • Čtenář: Tato role umožňuje přístup k úložišti jen 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 oznámením a vyžádáním změn do úložiště.

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 v 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 Docker CLI.

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 terminálu Bash nebo PowerShellu následující příkaz:

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

V obou možnostech by měl příkaz 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ílat 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

Znovu spuštěním příkazu docker images ověřte, že image byla správně označená. Po potvrzení spusťte nasdílení docker push změn do registru kontejneru následujícím způsobem:

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

Pokud chcete ověřit, že se image úspěšně odeslala do registru kontejneru, spusťte následující příkaz:

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ý kód pro vyžádání 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í obsahu pro registr kontejneru, zadáte 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 image stáhne tajný kód; například acr-secret.
namespace Obor názvů Kubernetes, do kterého se má tajný kód vložit. Je potřeba, jenom pokud 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. Jedná se --docker-server o plně kvalifikovaný název přihlašovacího serveru registru.
appId ID instančního objektu, který Kubernetes používá pro přístup k vašemu registru.
password Heslo instančního objektu.

Jakmile vytvoříte tajný kód pro vyžádání image, můžete ho použít k vytvoření podů a nasazení Kubernetes. Do souboru nasazení zadejte název tajného kódu imagePullSecrets , 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, která se má vyžádat z registru kontejneru, a acr-secret představuje název tajného kódu pro vyžádání změn, poemfinder-app:v1.0 který jste vytvořili pro přístup k registru. Když pod nasadíte, Kubernetes automaticky načítá image z registru, pokud image ještě není v clusteru.

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