Gyakorlat – Mikroszolgáltatás-tároló üzembe helyezése a Kubernetesben
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:
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
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.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
Most telepítheti a kubectl eszközt:
sudo apt-get update sudo apt-get install -y kubectl
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.
Hozzon létre egy új fájlt a backend-deploy.yml nevű kódtér donet-kubernetes mappájában.
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
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.
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.
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.
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.
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.
Hozzon létre egy új fájlt a donet-kubernetes mappában frontend-deploy.yml
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
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 alattmetadata.name
Deployment
megadott nevet használjuk. Kubernetes gondoskodik a többiről.
- Egy másik tárolót adunk meg, amely az üzembe helyezés
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.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.
Válassza ki a termékeket. A katalógus a Contoso áruit mutatja.
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.