Gyakorlat – Alkalmazás üzembe helyezése egy Azure Kubernetes Service-fürtben

Befejeződött

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.

  1. Jelentkezzen be az Azure Cloud Shellbe.

  2. 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
    
  3. Nyissa meg a Cloud Shell integrált szerkesztőjét a code . paranccsal.

  4. 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 és kind tulajdonságát. Itt name az üzemelő példány neve. A használatával azonosíthatja és lekérdezheti az üzembehelyezési adatokat a használat kubectlsorá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.

  5. 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. A labels kulccsal lehetővé teheti az üzemelő példányoknak, hogy podokat találjanak meg és csoportosítsanak.

  6. 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óval imagekapcsolatos, aname, resourcesportsé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.

  7. 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.

  8. 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. A ports 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.

  9. 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. A matchLabels 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.

  10. Mentse a jegyzékfájlt, majd zárja be a szerkesztőt.

A jegyzékfájl alkalmazása

  1. 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
    
  2. 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
    
  3. 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