Implementeren vanuit een privécontainerregister naar on-premises Kubernetes met behulp van Azure Container Registry en AKS Arc
Van toepassing op: Azure Stack HCI, versie 23H2
In dit artikel wordt beschreven hoe u containerinstallatiekopieën vanuit een privécontainerregister implementeert met behulp van Azure Container Registry, die u kunt uitvoeren in uw eigen datacenter in AKS Arc-implementaties. U implementeert naar uw on-premises Kubernetes-cluster dat wordt gehost door AKS. Met Azure Container Registry kunt u installatiekopieën en artefacten voor containers compileren, opslaan en beheren in een privéregister voor alle typen containerimplementaties.
In het artikel wordt beschreven hoe u een privécontainerregister maakt in Azure en uw containerinstallatiekopieën naar het privécontainerregister pusht. U kunt vervolgens vanuit het privéregister implementeren naar uw on-premises Kubernetes-cluster dat wordt gehost in AKS Arc.
Zie de Azure Container Registry documentatie voor meer informatie over Azure Container Registry.
Vereisten
Controleer of u aan de volgende vereisten voldoet:
- Basiskennis van Kubernetes-concepten.
- Een AKS-cluster dat actief is.
- Azure CLI geïnstalleerd
- Uw lokale kubectl-omgeving die is geconfigureerd om te verwijzen naar uw AKS-cluster.
Een privécontainerregister maken in Azure
Als u een containerregister wilt maken, begint u met een resourcegroep. Een Azure-resourcegroep is een logische container waarin Azure-resources worden geïmplementeerd en beheerd. Maak een resourcegroep met de opdracht az group create
. In het volgende voorbeeld wordt een resourcegroep gemaakt in de regio eastus :
az group create --name <RESOURCE_GROUP_NAME> --location eastus
Maak een Container Registry-exemplaar met de opdracht az acr create en geef uw eigen registernaam op. De registernaam moet uniek zijn binnen Azure en 5 tot 50 alfanumerieke tekens bevatten. In de rest van dit artikel <acrName>
wordt gebruikt als tijdelijke aanduiding voor de naam van het containerregister, maar u kunt uw eigen unieke registernaam opgeven. De Basic-SKU is een kostengeoptimeerd ingangspunt voor ontwikkelingsdoeleinden dat een balans tussen opslag en doorvoer biedt:
az acr create --resource-group <RESOURCE_GROUP_NAME> --name <REGISTRY_NAME> --sku Basic
Nadat u het containerregister hebt gemaakt, gebruikt u de volgende opdracht om een service-principal te maken, zodat u toegang hebt tot uw containerregister vanuit 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 ondersteunt drie toegangsrollen. De rol Inzender wordt het meest gebruikt door toepassingsontwikkelaars. In praktijkscenario's moet u mogelijk meerdere service-principals maken, afhankelijk van het type toegang dat nodig is:
- Inzender: deze rol biedt push- en pull-toegang tot de opslagplaats.
- Lezer: met deze rol is alleen pull-toegang tot de opslagplaats toegestaan.
- Eigenaar: Met deze rol kunt u rollen toewijzen aan andere gebruikers, naast de push- en pull-toegang tot de opslagplaats.
Met de vorige opdracht moet uitvoer worden geproduceerd die vergelijkbaar is met de volgende tekst:
{
"appId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"displayName": "akshci-service-principal",
"name": "http://akshci-service-principal",
"password": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"tenant": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
Zodra de service-principal is gemaakt, kopieert u de appId en het wachtwoord op een veilige locatie om deze later in uw implementatie te gebruiken.
Zie Azure Container Registry authentication with service principals (Azure Container Registry-verificatie met service-principals) voor meer informatie over het werken met service-principals en Azure Container Registry.
Aanmelden bij het privécontainerregister
Als u het Container Registry-exemplaar wilt gebruiken, moet u zich eerst aanmelden. U kunt de Azure CLI of de Docker CLI gebruiken om u aan te melden.
Optie 1: Aanmelden vanuit de Azure CLI
Gebruik de opdracht az acr sign in en geef de unieke naam op die in de vorige stap is toegewezen aan het containerregister:
az acr login --name <REGISTRY_NAME>
Optie 2: Aanmelden vanaf de Docker CLI
Als u de Docker CLI wilt gebruiken voor toegang tot uw containerregister, typt u de volgende opdracht in een Bash- of PowerShell-terminal:
docker login <REGISTRY_NAME>.azurecr.io -u <appId> -p <password>
In beide opties moet de opdracht een bericht met geslaagde aanmelding retourneren wanneer deze is voltooid.
Een installatiekopieën naar het containerregister pushen
Zodra u bent aangemeld, kunt u beginnen met het pushen van de installatiekopieën naar het Container Registry. Voer eerst de opdracht docker-installatiekopieën uit om de lijst met installatiekopieën op uw lokale computer weer te geven:
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
Om aan de slag te gaan, tagt u de installatiekopieën met behulp van de opdracht docker tag
en gebruikt u docker push
om deze naar het containerregister te pushen:
docker tag poemfinder-app <REGISTRY_NAME>.azurecr.io/poemfinder-app:v1.0
Controleer of de installatiekopieën juist zijn gelabeld door de opdracht docker images opnieuw uit te voeren. Voer na bevestiging als volgt uit docker push
om naar het containerregister te pushen:
docker push <REGISTRY_NAME>.azurecr.io/poemfinder-app:v1.0
Voer de volgende opdracht uit om te bevestigen dat de installatiekopieën naar het containerregister zijn gepusht:
az acr repository list --name <REGISTRY_NAME>.azurecr.io --output table
Een installatiekopieën uit het containerregister implementeren in AKS
Als u uw containerinstallatiekopieën vanuit het containerregister wilt implementeren in uw Kubernetes-cluster, maakt u Kubernetes Secrets om uw registerreferenties op te slaan. Kubernetes gebruikt een pull-geheim voor installatiekopieën om informatie op te slaan die nodig is voor verificatie bij uw register. Als u het pull-geheim voor een containerregister wilt maken, geeft u de service-principal-id, het wachtwoord en de register-URL op:
kubectl create secret docker-registry <secret-name> \
--namespace <namespace> \
--docker-server=<REGISTRY_NAME>.azurecr.io \
--docker-username=<appId> \
--docker-password=<password>
In de volgende tabel worden de invoerparameters beschreven:
Waarde | Beschrijving |
---|---|
secret-name |
Naam van de installatiekopie haalt geheim op; bijvoorbeeld acr-secret . |
namespace |
Kubernetes-naamruimte waarin het geheim moet worden geplaatst. Alleen nodig als u het geheim in een andere naamruimte dan de standaardnaamruimte wilt plaatsen. |
<REGISTRY_NAME> |
Naam van het containerregister. Bijvoorbeeld myregistry . De --docker-server is de volledig gekwalificeerde naam van de register-aanmeldingsserver. |
appId |
Id van de service-principal die Kubernetes gebruikt om toegang te krijgen tot uw register. |
password |
Wachtwoord voor service-principal. |
Zodra u het pull-geheim voor de installatiekopie hebt gemaakt, kunt u dit gebruiken om Kubernetes-pods en -implementaties te maken. Geef de naam op van het geheim onder imagePullSecrets
in het implementatiebestand, zoals wordt weergegeven in het volgende voorbeeld:
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
In dit voorbeeld poemfinder-app:v1.0
is de naam van de installatiekopie die moet worden opgehaald uit het containerregister en acr-secret
de naam van het pull-geheim dat u hebt gemaakt voor toegang tot het register. Wanneer u de pod implementeert, haalt Kubernetes de installatiekopie automatisch op uit het register als de installatiekopie nog niet aanwezig is in het cluster.
U kunt de bovenstaande podconfiguratie als volgt opslaan in een bestand zoals pod-example.yaml en deze vervolgens implementeren in Kubernetes:
kubectl create -f pod-example.yaml
Om te bevestigen dat de pod is gemaakt met behulp van de containerinstallatiekopieën uit het containerregister, voert u kubectl describe pod <POD_NAME> uit. Hier ziet u de containerinstallatiekopieën die zijn gebruikt om de pod te maken.
Volgende stappen
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor