Alkalmazások üzembe helyezése a Helm-lel
A következőkre vonatkozik: AKS on Azure Stack HCI 22H2, AKS on Windows Server
A Helm egy nyílt forráskódú csomagolóeszköz, amely segít a Kubernetes-alkalmazások életciklusának telepítésében és kezelésében. A Linux-csomagkezelőkhöz, például az APT-hez és a Yumhoz hasonlóan a Helm kezeli a Kubernetes-diagramokat, amelyek előre konfigurált Kubernetes-erőforrások csomagjai.
Ez a cikk azt ismerteti, hogyan csomagolhat és helyezhet üzembe alkalmazásokat a Helm használatával az AKS-en az Azure Arc által engedélyezett Azure Kubernetes Service használatakor.
Mielőtt elkezdené
Ellenőrizze, hogy a következő követelmények vannak-e beállítva:
- Kubernetes-fürt, amelyen legalább egy Windows- vagy Linux-feldolgozócsomópont működik.
- Úgy konfigurálta a helyi
kubectl
környezetet, hogy a fürtre mutasson. A Get-AksHciCredential PowerShell paranccsal elérheti a fürtöt a használatávalkubectl
. - Helm v3 parancssor és a telepített előfeltételek.
- Egy elérhető tárolóregisztrációs adatbázis, például a DockerHub vagy az Azure Container Registry.
Ez a cikk egy ASP.NET Core-alkalmazást használ példaként. A mintaalkalmazást ebből a GitHub-adattárból töltheti le.
Mivel az alkalmazás a Kubernetesben van üzembe helyezve, a következő példa egy egyszerű Dockerfile a projekthez:
FROM mcr.microsoft.com/dotnet/aspnet:5.0-alpine AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:5.0-alpine AS build
WORKDIR /src
COPY ["MyMicroservice.csproj", "./"]
RUN dotnet restore "MyMicroservice.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "MyMicroservice.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "MyMicroservice.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyMicroservice.dll"]
A mintaalkalmazás létrehozása és leküldése egy tárolóregisztrációs adatbázisba
Lépjen az alkalmazásmappára, és a Dockerfile használatával hozzon létre és küldjön le egy képet az alábbi paranccsal:
docker build -f Dockerfile -t acr.azurecr.io/mymicroservice:0.1.0 .
Feljegyzés
A parancs végén lévő pont (.) beállítja a Dockerfile helyét (ebben az esetben az aktuális könyvtárat).
Ez a parancs létrehozza a rendszerképet mymicroservice:0.1.0
a helyi gépen. A rendszerkép sikeres létrehozásának ellenőrzéséhez futtassa docker images
a következőt:
REPOSITORY TAG IMAGE ID CREATED SIZE
acr.azurecr.io/mymicroservice 0.1.0 5be713db571b About a minute ago 107MB
....
Ezután küldje le a rendszerképet egy tárolóregisztrációs adatbázisba, például a DockerHubba vagy az Azure Container Registrybe. Ebben a példában a rendszer leküldi a tárolórendszerképet az Azure Container Registrybe. További információ: Képek lekérése ACR-ből Kubernetes-fürtbe:
docker push acr.azurecr.io/mymicroservice:0.1.0
A Helm-diagram létrehozása
Most, hogy a mintaalkalmazás elkészült, a következő lépés egy Helm-diagram létrehozása a parancs használatával, az helm create
alábbiak szerint:
helm create mymicroserviceapp
Frissítse a mymicroserviceapp/values.yaml fájlt az alábbiak szerint:
- Váltás a
image.repository
gombraacr.azurecr.io/mymicroservice
- Váltás a
service.type
gombraNodePort
Példa:
# Default values for webfrontend.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
image:
repository: acr.azurecr.io/mymicroservice
pullPolicy: IfNotPresent
...
service:
type: NodePort
port: 80
...
Lépjen a mymicroserviceapp/templates/deployment.yaml fájlra az állapot-ellenőrzések konfigurálásához. A Kubernetes állapotellenőrzésekkel kezeli az alkalmazástelepítéseket. Cserélje le a két liveness
és readiness
a mintavétel path: /weatherforecast
elérési útját a következő példában látható módon:
...
livenessProbe:
httpGet:
path: /weatherforecast
port: http
initialDelaySeconds: 0
periodSeconds: 10
timeoutSeconds: 1
failureThreshold: 3
readinessProbe:
httpGet:
path: /weatherforecast
port: http
successThreshold: 3
...
Helm-diagram üzembe helyezése a Kubernetesben
A megoldáskönyvtárban található charts\mymicroserviceapp könyvtárból kiindulva futtassa a következő parancsot:
helm upgrade --install mymicroserviceapp . --namespace=local --set mymicroserviceapp.image.tag="0.1.0"
Ez a parancs létrehoz (vagy frissít) egy meglévő kiadást a Kubernetes-fürt névterében lévő local
névtér mymicroserviceapp
használatával, és az alábbi példához hasonló kimenetet hoz létre:
Release "mymicroserviceapp" does not exist. Installing it now.
NAME: mymicroserviceapp
LAST DEPLOYED: Fri Apr 2 08:47:24 2021
NAMESPACE: local
STATUS: deployed
REVISION: 1
NOTES:
1. Get the application URL by running these commands:
export NODE_PORT=$(kubectl get --namespace local -o jsonpath="{.spec.ports[0].nodePort}" services mymicroserviceapp)
export NODE_IP=$(kubectl get nodes --namespace local -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
A Helm-diagram üzembe helyezése után a futtatással kubectl get all -n local
ellenőrizheti, hogy az erőforrások megfelelően lettek-e üzembe helyezve.
A parancs futtatásának kimenete a következő:
NAME READY STATUS RESTARTS AGE
pod/mymicroserviceapp-7849f949df-fwgbn 1/1 Running 0 101s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/mymicroserviceapp NodePort 10.100.149.1 <none> 80:30501/TCP 101s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/mymicroserviceapp 1/1 1 1 101s
NAME DESIRED CURRENT READY AGE
replicaset.apps/mymicroserviceapp-7849f949df 1 1 1 101s
Az üzembe helyezés tesztelése
Az alkalmazás egy szolgáltatással és egy csomópontporttal telepít, így a fürtön kívülről is meghívhatja az API-t. A hívás indításához küldjön egy kérést a következő címre: http://$NODE_IP:$NODE_PORT:
curl http://10.193.2.103:30501/WeatherForeCast/
StatusCode : 200
StatusDescription : OK
Content : [{"date":"2021-04-03T15:51:04.795216+00:00","temperatureC":45,"temperatureF":112,"summary":"Balmy"},{"date":"2021-04-04T15:51:04.
7952176+00:00","temperatureC":23,"temperatureF":73,"summary":"Cool"},{"...
RawContent : HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/json; charset=utf-8
Date: Fri, 02 Apr 2021 15:51:04 GMT
Server: Kestrel
[{"date":"2021-04-03T15:51:04.795216+00:00","tempera...
Forms : {}
Headers : {[Transfer-Encoding, chunked], [Content-Type, application/json; charset=utf-8], [Date, Fri, 02 Apr 2021 15:51:04 GMT], [Server,
Kestrel]}
Images : {}
InputFields : {}
Links : {}
ParsedHtml : mshtml.HTMLDocumentClass
RawContentLength : 494
A fürt eltávolítása
Az utolsó lépés a fürt megtisztítása. A Kubernetes üzembehelyezési erőforrásainak törléséhez futtassa a következő parancsot:
helm uninstall mymicroserviceapp -n local
A következő példához hasonló kimenetet kell kapnia:
release "mymicroserviceapp" uninstalled
Következő lépések
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: