Gyakorlat – Mikroszolgáltatás-tároló üzembe helyezése a Kubernetesben
A Kubernetes konténereket 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, így üzembe helyezheti és futtathatja a háttérrendszeri szolgá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 TERMINAL fülre, 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 curlEzutá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.gpgHa hibaüzenetet kap, hogy a könyvtár már létezik, futtassa külön a
curlparancsot.Adja hozzá a Kubernetes-adattárat a apt konfigurációjá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.listMost telepítheti a kubectl eszközt:
sudo apt-get update sudo apt-get install -y kubectlVégül telepítse a Kubernetes k3d megvalósítását, és hozzon létre egy klasztert:
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 donet-kubernetesbackend-deploy.ymlnevű kódtér 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: productsbackendCserélje le a helyőrzőt
[YOUR DOCKER USER NAME]a tényleges Docker felhasználónevével.
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 TERMINAL lapon futtassa a következő parancsot:
kubectl apply -f backend-deploy.ymlEz 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 applyparancs 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 podsAz eredményben van egy sor productsbackend, amelyet követi a NAME oszlop alatt található véletlenszerű karakterekből álló sztring. Ha minden készen áll, a READY oszlop alatt egy 1/1 szerepel, és a STATUS oszlop alatt Running.
A szolgáltatás teszteléséhez váltson a PORTok lapra, a Háttér- port helyi címének közelében 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 /api/product, majd nyomja le Enterbillentyű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 nevű mappában frontend-deploy.yml
Illessze be a következő kódot a fájlba:
--- 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: storefrontendCserélje le a helyőrzőt
[YOUR DOCKER USERNAME]a tényleges Docker felhasználónevével.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 konténert adunk meg, amely a telepítés
spec.template.spec.containers.imageértéke szerint fut. - A
spec.template.spec.containers.envszakaszban egy új környezeti változó 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, ametadata.nameDeploymentcsomópontja alatt megadott nevet használjuk. Kubernetes gondoskodik a többiről.
- Egy másik konténert adunk meg, amely a telepítés
Helyezze üzembe a tárolót a Kubernetesben a következő paranccsal:
kubectl apply -f frontend-deploy.ymlIsmét használhatja a
kubectl get pods-et az üzembe helyezés állapotának megtekintéséhez. Miután az áruházi sor megjeleníti a STATUS oszlop alatti Futó, minden készen áll.Az előtér-szolgáltatás teszteléséhez váltson a PORTok fülre, majd az előtér- port 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.