Gyakorlat – Alkalmazás üzembe helyezése egy Azure Kubernetes Service-fürtben
Ebben a gyakorlatban helyezze üzembe a vállalat webhelyét tesztalkalmazásként az Azure Kubernetes Service-ben (AKS). A webhely statikus, és HTML, CSS, valamint JavaScript típusú mögöttes technológiai eszközkészlettel rendelkezik. Nem kap annyi kérést, mint a többi szolgáltatás, és az üzembe helyezési lehetőségek biztonságos tesztelését teszi lehetővé.
Megjegyzés:
A webalkalmazás kódja ebben a GitHub-adattárban található, ha részletesebben meg szeretné tekinteni a forráskódot. Emellett ez a mintaalkalmazás csak Linux-csomópontkészleten lesz üzembe helyezve.
Fontos
Ennek a gyakorlatnak az elvégzéséhez saját Azure-előfizetés szükséges, amely költségekkel járhat. Ha még nem rendelkezik Azure-előfizetéssel, első lépésként hozzon létre egy ingyenes fiókot.
Üzembe helyezési jegyzék létrehozása
Üzembe helyezési jegyzéket az alkalmazás üzembe helyezéséhez hozhat létre. A jegyzékfájllal meghatározhatja, milyen típusú erőforrást szeretne üzembe helyezni, valamint a számítási feladathoz társítandó adatokat.
A Kubernetes a tárolókat logikai struktúrákba, úgynevezett podokba csoportosítja, amelyek nem rendelkeznek intelligenciával. Az üzemelő példányok jelentik a hiányzó intelligenciát az alkalmazás létrehozásához. Hozzunk létre egy üzembe helyezési fájlt.
Jelentkezzen be az Azure Cloud Shellbe.
A Cloud Shellben az integrált szerkesztővel hozzon létre egy
deployment.yaml
nevű jegyzékfájlt a Kubernetes-telepítéshez.touch deployment.yaml
Nyissa meg a Cloud Shell integrált szerkesztőjét a
code .
paranccsal.Nyissa meg az
deployment.yaml
fájlt, és szúrja be a következő YAML-kódszakaszt.# deployment.yaml apiVersion: apps/v1 # The API resource where this workload resides kind: Deployment # The kind of workload we're creating metadata: name: contoso-website # This will be the name of the deployment
Ebben a kódban az első két kulccsal adta meg a Kubernetes szolgáltatásnak a létrehozott jegyzékfájl
apiVersion
éskind
tulajdonságát. Ittname
az üzemelő példány neve. A használatával azonosíthatja és lekérdezheti az üzembehelyezési adatokat a használatkubectl
során.Tipp.
Az
apiVersion
kulccsal és az abban elhelyezhető értékekkel kapcsolatban a hivatalos Kubernetes-dokumentációban talál további információt. Az erre mutató hivatkozás megtalálható a modul végén.Az üzemelő példány becsomagolja a podot. A jegyzékfájlban egy sablondefinícióval definiálhatja a podadatokat. A sablon a jegyzékfájlban az üzembe helyezési specifikációk alá kerül.
Módosítsa az
deployment.yaml
fájlt a következő YAML-kifejezéssel megegyezőre.# deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: contoso-website spec: template: # This is the template of the pod inside the deployment metadata: # Metadata for the pod labels: app: contoso-website
A podok nem ugyanazokat a neveket használják, mint az üzemelő példányok. A pod neve az üzemelő példány nevének és a végéhez hozzáadott véletlenszerű azonosítónak a keveréke.
Figyelje meg a
labels
kulcs használatát. Alabels
kulccsal lehetővé teheti az üzemelő példányoknak, hogy podokat találjanak meg és csoportosítsanak.Egy pod egy vagy több tárolót csomagol. Minden pod rendelkezik egy specifikációs szakasszal, amelyben meghatározhatja a podban található tárolókat.
Módosítsa az
deployment.yaml
fájlt a következő YAML-kifejezéssel megegyezőre.# deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: contoso-website spec: template: # This is the template of the pod inside the deployment metadata: labels: app: contoso-website spec: containers: # Here we define all containers - name: contoso-website
A
containers
kulcs tárolóspecifikációk tömbje, egy pod ugyanis egy vagy több tárolóval is rendelkezhet. A specifikáció meghatározza a tárolóvalimage
kapcsolatos, aname
,resources
ports
és egyéb fontos információkat.Minden futó pod a nevet
contoso-website-<UUID>
követi, ahol az UUID egy generált azonosító az összes erőforrás egyedi azonosításához.Ajánlott meghatározni, hogy az alkalmazás milyen minimális és maximális mennyiségű erőforrást használhat a fürtből. Ezt az információt a
resources
kulccsal adhatja meg.Módosítsa az
deployment.yaml
fájlt a következő YAML-kifejezéssel megegyezőre.# deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: contoso-website spec: template: # This is the template of the pod inside the deployment metadata: labels: app: contoso-website spec: containers: - image: mcr.microsoft.com/mslearn/samples/contoso-website name: contoso-website resources: requests: # Minimum amount of resources requested cpu: 100m memory: 128Mi limits: # Maximum amount of resources requested cpu: 250m memory: 256Mi
Az erőforrás szakaszban kérésként megadhatja az erőforrások minimális mennyiségét, korlátként pedig a maximumot.
Az utolsó lépés az, hogy meghatározza azokat a portokat, amelyekkel a tároló külsőleg elérhetővé teszi a
ports
kulcsot. Aports
kulcs objektumok tömbje, ami azt jelenti, hogy egy pod tárolója több portot is közzé tud tenni több névvel.Módosítsa az
deployment.yaml
fájlt a következő YAML-kifejezéssel megegyezőre.# deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: contoso-website spec: template: # This is the template of the pod inside the deployment metadata: labels: app: contoso-website spec: nodeSelector: kubernetes.io/os: linux containers: - image: mcr.microsoft.com/mslearn/samples/contoso-website name: contoso-website resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi ports: - containerPort: 80 # This container exposes port 80 name: http # We named that port "http" so we can refer to it later
Megfigyelheti, hogy a port neve a
name
kulccsal adható meg. A portok elnevezésével úgy módosíthatja az elérhetővé tett portot, hogy nem módosítja a portra hivatkozó fájlokat.Végül adjon hozzá egy választószakaszt az üzembe helyezés által kezelt számítási feladatok meghatározásához. A
selector
kulcs a jegyzékfájlban az üzembe helyezési specifikációk alá kerül. AmatchLabels
kulccsal listázhatja az üzemelő példány által kezelt összes pod címkéit.Módosítsa az
deployment.yaml
fájlt a következő YAML-kifejezéssel megegyezőre.# deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: contoso-website spec: selector: # Define the wrapping strategy matchLabels: # Match all pods with the defined labels app: contoso-website # Labels follow the `name: value` template template: # This is the template of the pod inside the deployment metadata: labels: app: contoso-website spec: nodeSelector: kubernetes.io/os: linux containers: - image: mcr.microsoft.com/mslearn/samples/contoso-website name: contoso-website resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi ports: - containerPort: 80 name: http
Megjegyzés:
A több csomópontkészlettel (Linux és Windows) rendelkező AKS-fürtökben a korábban felsorolt üzembehelyezési jegyzékfájl azt is meghatározza
nodeSelector
, hogy az AKS-fürt futtassa a mintaalkalmazás podját egy Linux-tárolókat futtató csomóponton.A Linux-csomópontok nem futtathatnak Windows-tárolókat, és fordítva.
Mentse a jegyzékfájlt, majd zárja be a szerkesztőt.
A jegyzékfájl alkalmazása
A Cloud Shellben a
kubectl apply
paranccsal küldje el az üzembe helyezési jegyzékfájlt a fürtnek.kubectl apply -f ./deployment.yaml
A parancs kimenete a következő példához hasonlót eredményez.
deployment.apps/contoso-website created
A
kubectl get deploy
paranccsal ellenőrizze, hogy sikeres volt-e az üzembe helyezés.kubectl get deploy contoso-website
A parancs kimenete a következő példához hasonló táblát eredményez.
NAME READY UP-TO-DATE AVAILABLE AGE contoso-website 0/1 1 0 16s
A
kubectl get pods
parancs futtatásával ellenőrizze, hogy fut-e a pod.kubectl get pods
A parancs kimenete a következő példához hasonló táblát eredményez.
NAME READY STATUS RESTARTS AGE contoso-website-7c58c5f699-r79mv 1/1 Running 0 63s