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.