Üzembe helyezés a privát tárolóregisztrációs adatbázisból a helyszíni Kubernetesbe az Azure Container Registry és az AKS Arc használatával
A következőkre vonatkozik: Azure Local, 23H2-es verzió
Ez a cikk bemutatja, hogyan helyezhet üzembe tárolólemezképeket egy privát tárolóregisztrációs adatbázisból az Azure Container Registry használatával, amelyet saját adatközpontjában futtathat az AKS Arc-környezetekben. Üzembe helyezheti az AKS által üzemeltetett helyszíni Kubernetes-fürtön. Az Azure Container Registry tárolórendszerképek és összetevők kiépítését, tárolását és kezelését teszi lehetővé privát regisztrációs adatbázisokban, a tárolók minden típusú üzemelő példányához.
A cikk bemutatja, hogyan hozhat létre privát tárolóregisztrációs adatbázist az Azure-ban, és hogyan küldheti le a tárolórendszerképet a privát tárolóregisztrációs adatbázisba. Ezután üzembe helyezheti a magánregisztrációs adatbázisból az AKS Arcban üzemeltetett helyszíni Kubernetes-fürtöt.
Az Azure Container Registryről további információt az Azure Container Registry dokumentációjában talál.
Előfeltételek
Ellenőrizze, hogy rendelkezik-e a következő követelményekkel:
- A Kubernetes-fogalmak alapszintű ismerete.
- Egy futó AKS-fürt.
- Telepített Azure CLI
- A helyi kubectl-környezet úgy van konfigurálva, hogy az AKS-fürtre mutasson.
Privát tárolóregisztrációs adatbázis létrehozása az Azure-ban
Tárolóregisztrációs adatbázis létrehozásához kezdjen egy erőforráscsoporttal. Az Azure-erőforráscsoport olyan logikai tároló, amelybe a rendszer üzembe helyezi és kezeli az Azure-erőforrásokat. Hozzon létre egy erőforráscsoportot az az group create
paranccsal. Az alábbi példa létrehoz egy erőforráscsoportot az eastus régióban:
az group create --name <RESOURCE_GROUP_NAME> --location eastus
Hozzon létre egy Container Registry-példányt az az acr create paranccsal, és adja meg a saját beállításjegyzék-nevét. A beállításjegyzék nevének egyedinek kell lennie az Azure-ban, és 5–50 alfanumerikus karaktert kell tartalmaznia. A cikk <acrName>
további részében a tárolóregisztrációs adatbázis nevének helyőrzőjeként szolgál, de saját egyedi beállításjegyzéknevet is megadhat. Az alapszintű termékváltozat egy költségoptimalizált belépési pont fejlesztési célokra, amely a tárolás és az átviteli sebesség egyensúlyát biztosítja:
az acr create --resource-group <RESOURCE_GROUP_NAME> --name <REGISTRY_NAME> --sku Basic
A tárolóregisztrációs adatbázis létrehozása után az alábbi paranccsal hozzon létre egy szolgáltatásnevet, hogy a Kubernetesből érhesse el a tárolóregisztrációs adatbázist:
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>
Az Azure Container Registry három hozzáférési szerepkört támogat. A közreműködői szerepkört leggyakrabban az alkalmazásfejlesztők használják. Valós helyzetekben azonban előfordulhat, hogy a szükséges hozzáférés típusától függően több szolgáltatásnevet is létre kell hoznia:
- Közreműködő: Ez a szerepkör leküldéses és lekéréses hozzáférést biztosít az adattárhoz.
- Olvasó: Ez a szerepkör csak a lekéréses hozzáférést teszi lehetővé az adattárhoz.
- Tulajdonos: Ez a szerepkör lehetővé teszi szerepkörök hozzárendelését más felhasználókhoz az adattár leküldéses és lekéréses hozzáférése mellett.
Az előző parancsnak az alábbi szöveghez hasonló kimenetet kell létrehoznia:
{
"appId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"displayName": "akshci-service-principal",
"name": "http://akshci-service-principal",
"password": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"tenant": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
A szolgáltatásnév sikeres létrehozása után másolja az appId azonosítót és jelszót egy biztonságos helyre, hogy később használhassa az üzembe helyezés során.
A szolgáltatásnevek és az Azure Container Registry használatával kapcsolatos további információért tekintse meg a szolgáltatásnevek az Azure Container Registryben való hitelesítését ismertető cikket.
Bejelentkezés a privát tárolóregisztrációs adatbázisba
A Container Registry-példány használatához először be kell jelentkeznie. A bejelentkezéshez használhatja az Azure CLI-t vagy a Docker CLI-t.
1. lehetőség: Bejelentkezés az Azure CLI-ből
Használja az az acr bejelentkezési parancsot, és adja meg a tárolóregisztrációs adatbázishoz rendelt egyedi nevet az előző lépésben:
az acr login --name <REGISTRY_NAME>
2. lehetőség: Bejelentkezés a Docker parancssori felületéről
Ha a Docker parancssori felületét szeretné használni a tárolóregisztrációs adatbázis eléréséhez, írja be a következő parancsot egy Bash- vagy PowerShell-terminálba:
docker login <REGISTRY_NAME>.azurecr.io -u <appId> -p <password>
Bármelyik beállításnál a parancsnak sikeres bejelentkezést kell visszaadnia, amikor befejeződik.
Rendszerkép leküldése a tárolóregisztrációs adatbázisba
Miután sikeresen bejelentkezett, megkezdheti a rendszerkép leküldését a tárolóregisztrációs adatbázisba. Először futtassa a Docker-rendszerképek parancsot a helyi gépen található képek listájának megtekintéséhez:
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
Első lépésként címkézze fel a rendszerképet a docker tag
paranccsal, majd a dockerrel push
küldje le a tárolóregisztrációs adatbázisba:
docker tag poemfinder-app <REGISTRY_NAME>.azurecr.io/poemfinder-app:v1.0
Ellenőrizze, hogy a rendszerkép megfelelően lett-e megjelölve a Docker-rendszerképek parancs ismételt futtatásával. A megerősítés után futtassa docker push
a leküldést a tárolóregisztrációs adatbázisba az alábbiak szerint:
docker push <REGISTRY_NAME>.azurecr.io/poemfinder-app:v1.0
Annak ellenőrzéséhez, hogy a rendszerkép sikeresen le lett-e küldve a tárolóregisztrációs adatbázisba, futtassa a következő parancsot:
az acr repository list --name <REGISTRY_NAME>.azurecr.io --output table
Lemezkép üzembe helyezése a tárolóregisztrációs adatbázisból az AKS-ben
Ha a tárolórendszerképet a tárolóregisztrációs adatbázisból szeretné üzembe helyezni a Kubernetes-fürtön, hozzon létre Kubernetes Titkos kulcsokat a beállításjegyzék hitelesítő adatainak tárolásához. A Kubernetes egy kép lekéréses titkos kódját használja a beállításjegyzékben való hitelesítéshez szükséges információk tárolására. A tárolóregisztrációs adatbázis lekéréses titkos kódjának létrehozásához meg kell adnia a szolgáltatásnév azonosítóját, a jelszót és a beállításjegyzék URL-címét:
kubectl create secret docker-registry <secret-name> \
--namespace <namespace> \
--docker-server=<REGISTRY_NAME>.azurecr.io \
--docker-username=<appId> \
--docker-password=<password>
Az alábbi táblázat a bemeneti paramétereket ismerteti:
Érték | Leírás |
---|---|
secret-name |
A rendszerkép neve lekéri a titkos kódot; például acr-secret . |
namespace |
Kubernetes-névtér, amelybe a titkos kulcsot be kell helyezni. Csak akkor szükséges, ha a titkos kulcsot nem az alapértelmezett névtérben szeretné elhelyezni. |
<REGISTRY_NAME> |
A tárolóregisztrációs adatbázis neve. Például: myregistry . A --docker-server beállításjegyzék bejelentkezési kiszolgálójának teljes neve. |
appId |
Annak a szolgáltatásnévnek az azonosítója, amelyet a Kubernetes használ a beállításjegyzék eléréséhez. |
password |
Egyszerű szolgáltatásjelszó. |
A rendszerkép lekéréses titkos kódjának létrehozása után kubernetes-podokat és üzembe helyezéseket hozhat létre. Adja meg a titkos kód imagePullSecrets
nevét az üzembehelyezési fájlban, ahogyan az a következő példában látható:
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
Ebben a példában poemfinder-app:v1.0
a tárolóregisztrációs adatbázisból lekérendő rendszerkép neve, a acr-secret
beállításjegyzék eléréséhez létrehozott lekéréses titkos kód neve. A pod üzembe helyezésekor a Kubernetes automatikusan lekéri a lemezképet a beállításjegyzékből, ha a rendszerkép még nincs jelen a fürtben.
A fenti podkonfigurációt mentheti egy fájlba, például pod-example.yaml fájlba, majd üzembe helyezheti a Kubernetesben az alábbiak szerint:
kubectl create -f pod-example.yaml
Annak ellenőrzéséhez, hogy a pod sikeresen létrejött-e a tárolóregisztrációs adatbázis tárolólemezképével, futtassa a kubectl leíró pod <POD_NAME>, amely a pod létrehozásához használt tárolórendszerképet jeleníti meg.