Gyakorlat – Mikroszolgáltatás-tároló üzembe helyezése a Kubernetesben

Befejeződött

A Kubernetes tárolókat futtat Önnek. Egy YAML-fájlon keresztül írja le, hogy mit szeretne a Kubernetesnek elvégeznie. Ez a gyakorlat végigvezeti a fájl létrehozásának folyamatán, hogy üzembe helyezhesse és futtathassa a háttérszolgáltatást a Kubernetesen.

Fontos

A folytatás előtt győződjön meg arról, hogy telepítve van egy Kubernetes-implementáció. A kódtérben futó k3d-implementációt fogjuk használni. A tesztkörnyezetet az implementáció telepítésével kezdjük.

A Kubernetes eszközeinek és implementációinak telepítése

A kubectl eszközt és a k3d Kubernetes implementációt is telepíteni kell:

  1. A kódtérben váltson a TERMINÁL lapra, majd futtassa ezeket a parancsokat az előfeltételek telepítéséhez:

    sudo apt-get update
    sudo apt-get install -y apt-transport-https ca-certificates curl
    
  2. Ezután a Kubernetes-csomag adattárainak aláírókulcsának letöltéséhez futtassa az alábbi parancsokat:

    sudo mkdir /etc/apt/keyrings
    curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
    

    Ha hibaüzenetet kap arról, hogy a könyvtár már létezik, futtassa külön a curl parancsot.

  3. Adja hozzá a Kubernetes-adattárat a megfelelő konfigurációhoz:

    echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
    
  4. Most telepítheti a kubectl eszközt:

    sudo apt-get update
    sudo apt-get install -y kubectl
    
  5. Végül telepítse a Kubernetes k3d implementációját, és hozzon létre egy fürtöt:

    curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash
    k3d cluster create devcluster --config k3d.yml
    

Központi telepítési fájl létrehozása a háttérszolgáltatáshoz

YAML-fájllal létrehozhat egy fájlkezelő tárolótelepítést a Kubernetesben. Hozzunk létre egy fájlt a háttérszolgáltatás üzembe helyezéséhez.

  1. Hozzon létre egy új fájlt a backend-deploy.yml nevű kódtér donet-kubernetes mappájában.

  2. Másolja a következő szöveget a fájlba, majd mentse.

    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
        name: productsbackend
    spec:
      replicas: 1
      template:
        metadata:
          labels:
            app: productsbackend
        spec:
          containers:
          - name: productsbackend
            image: [YOUR DOCKER USER NAME]/productservice:latest
            ports:
            - containerPort: 80
            env:
            - name: ASPNETCORE_URLS
              value: http://*:80
      selector:
        matchLabels:
          app: productsbackend
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: productsbackend
    spec:
      type: NodePort
      ports:
      - port: 80
        targetPort: 80
        nodePort: 32001
      selector:
        app: productsbackend
    
  3. Cserélje le a helyőrzőt [YOUR DOCKER USER NAME] a tényleges Docker-felhasználónévre.

Ez a fájl néhány dolgot csinál.

Az első rész meghatározza a Kubernetesben üzembe helyezendő tároló telepítési specifikációit. Egy replikát ad meg, ahol megtalálhatja a tároló lemezképét, a tárolón megnyitni kívánt portokat, és beállít néhány környezeti változót. Ez az első rész a tárolóra és a specifikációra való hivatkozáshoz használható címkéket és neveket is meghatározza.

A második rész ezután meghatározza, hogy a tároló Kubernetes NodePort szolgáltatásként fut-e. Ebben a modulban nem kell ismernie a NodePorts összes jellemzőét. Azonban tudnia kell, hogy ez a szolgáltatás külső IP-címet tesz elérhetővé, így a szolgáltatást a fürtön kívülről is tesztelheti.

A háttérbeli mikroszolgáltatás üzembe helyezése és futtatása

Ezután helyezzük üzembe és futtassuk a mikroszolgáltatást.

  1. A TERMINÁL lapon futtassa a következő parancsot:

    kubectl apply -f backend-deploy.yml
    

    Ez a parancs arra utasítja a Kubernetes-t, hogy futtassa a létrehozott fájlt. Letölti a rendszerképet a Docker Hubról, és létrehozza a tárolót.

  2. A kubectl apply parancs gyorsan visszatér. A tároló létrehozása azonban eltarthat egy ideig. A folyamat megtekintéséhez használja az alábbi kódot.

    kubectl get pods
    

    Az eredményül kapott kimenetben van egy sor a productsbackend értékekkel, majd egy véletlenszerű karakterekből álló sztring a NAME oszlopban. Ha minden készen áll, a READY oszlop alatt 1/1, a STATUS oszlop alatt pedig Futtatásvan.

  3. A szolgáltatás teszteléséhez váltson a PORTS fülre a Háttérport helyi címének közelében, és válassza a földgömb ikont. A böngésző megnyit egy új lapot ezen a címen.

  4. Egyes termékek lekérdezéséhez fűzze hozzá a címet az /api/product fájlhoz, majd nyomja le az Enter billentyűt. Néhány termékinformációnak JSON formátumban kell megjelennie.

    [
        {
            "id": 1,
            "name": "Solar Powered Flashlight",
            "description": "A fantastic product for outdoor enthusiasts",
            "price": 19.99,
            "imageUrl": "product1.png"
        },
        {
            "id": 2,
            "name": "Hiking Poles",
            "description": "Ideal for camping and hiking trips",
            "price": 24.99,
            "imageUrl": "product2.png"
        },
        {
            "id": 3,
            "name": "Outdoor Rain Jacket",
            "description": "This product will keep you warm and dry in all weathers",
            "price": 49.99,
            "imageUrl": "product3.png"
        },
        ...
    

Üzembehelyezési fájl létrehozása és az előtérbeli szolgáltatás futtatása

A háttérszolgáltatáshoz hasonlóan az előtérben is szükség van egy üzembehelyezési fájlra.

  1. Hozzon létre egy új fájlt a donet-kubernetes mappában frontend-deploy.yml

  2. A fájlba illessze be az alábbi kódot:

    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: storefrontend
    spec:
      replicas: 1
      template:
        metadata:
          labels:
            app: storefrontend
        spec:
          containers:
          - name: storefrontend
            image: [YOUR DOCKER USER NAME]/storeimage:latest
            ports:
            - containerPort: 80
            env:
            - name: ASPNETCORE_URLS
              value: http://*:80
            - name: ProductEndpoint
              value: http://productsbackend
      selector:
        matchLabels:
          app: storefrontend
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: storefrontend
    spec:
      type: NodePort
      ports:
      - port: 80
        targetPort: 80
        nodePort: 32000
      selector:
        app: storefrontend
    
  3. Cserélje le a helyőrzőt [YOUR DOCKER USERNAME] a tényleges Docker-felhasználónévre.

    Figyelje meg, hogy ez a fájl hasonló a háttérbeli mikroszolgáltatáshoz létrehozott fájlhoz. Két különbség van:

    • Egy másik tárolót adunk meg, amely az üzembe helyezés spec.template.spec.containers.image értéke alatt fut.
    • A szakaszban egy új környezeti változó spec.template.spec.containers.env található. A storefrontend alkalmazás kódja meghívja a háttérrendszert, de mivel nem adtunk meg teljes tartománynevet (FQDN), nem tudjuk a háttérbeli mikroszolgáltatás IP-címét, a csomópont alatt metadata.nameDeploymentmegadott nevet használjuk. Kubernetes gondoskodik a többiről.
  4. Helyezze üzembe a tárolót a Kubernetesben a következő paranccsal:

    kubectl apply -f frontend-deploy.yml
    

    Ismét használhatja kubectl get pods az üzembe helyezés állapotát. Miután a storefrontend sor megjelenik a STATUS oszlop alatt, minden készen áll a használatra.

  5. Az előtér-szolgáltatás teszteléséhez váltson a PORTS fülre, majd az előtérport helyi címétől jobbra válassza a földgömb ikont. A böngésző megjeleníti a kezdőlapot.

  6. Válassza ki a termékeket. A katalógus a Contoso áruit mutatja.

    A screenshot of the eSHopLite products page.

Ebben a gyakorlatban létrehozott egy üzembehelyezési fájlt, amely pontosan leírja, hogyan szeretné, hogy a tárolók a Kubernetesben fussanak. Ezután a Kubernetes letöltötte a lemezképet a Docker Hubról, és elindította a tárolókat.