Sdílet prostřednictvím


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

Platí pro: AKS v Azure Local 22H2, AKS na Windows Serveru

Tento článek popisuje, jak nasadit image kontejneru z privátního registru kontejnerů pomocí služby Azure Container Registry, kterou můžete spustit ve vlastním datacentru v AKS povoleném nasazeními Azure 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 nasadit z privátního registru do místního clusteru Kubernetes hostovaného v AKS, který podporuje Arc.

Další informace o container Registry v Azure 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í kubectl prostředí nakonfigurované tak, aby odkazovaly na cluster AKS. Ke konfiguraci clusteru kubectl.

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 v PowerShellu 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 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>

Container Registry podporuje tři přístupové role. 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"
}

Jakmile se instanční objekt úspěšně vytvoří, zkopírujte ho appId a password 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 Container Registry najdete v tématu Ověřování pomocí služby Azure Container Registry s instančními objekty.

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 příkaz měl po dokončení vrátit zprávu "sign in Succeeded" (Přihlášení bylo úspěšné).

Nahrání image do registru kontejneru

Po úspěšném přihlášení můžete začít nasdílat image do registru kontejneru. Nejprve spuštěním docker images příkazu 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í docker tag příkazu a pak ji nasdílíte docker push do registru kontejneru:

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

Opětovným spuštěním docker images příkazu ověřte, že image byla správně označena. Po potvrzení spusťte nasdílení docker push změn do registru kontejneru, jak je znázorněno níže:

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 ukládání 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>

kde:

Hodnota Popis
secret-name Název image načítá tajný kód, acr-secretnapříklad .
namespace Obor názvů Kubernetes pro vložení tajného kódu do. 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 vašeho 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 poemfinder-app:v1.0 představuje název tajného kódu pro vyžádání změn, acr-secret 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

V tomto článku jste zjistili, jak nasadit image kontejneru ze služby Azure Container Registry do služby AKS Arc. Dále můžete: