Vissza a bloghoz

PHP-alkalmazás telepítése Kubernetes-fürtre Ubuntu 18.04-gyel

PHP-alkalmazás telepítése Kubernetes-fürtre Ubuntu 18.04-gyel

Kubernetes (más néven k8s) egy nyílt forráskódú orchestrációs rendszer. Lehetővé teszi a felhasználók számára a konténerizált alkalmazások telepítését, skálázását és kezelését minimális állásidővel. Ebben az útmutatóban megtanulhatja, hogyan telepíthet egy PHP alkalmazást egy Kubernetes fürtön.

Az Nginx proxyként működik a PHP-FPM felé a PHP alkalmazás futtatása közben. E két szolgáltatás kezelése egyetlen konténerben nehéz folyamat. A Kubernetes segít nekünk két külön konténerben kezelni őket, és csökkenti a nehézségeket. Lehetővé teszi továbbá a felhasználók számára a konténerek újrafelhasználását, így nem kell aggódniuk a konténerkép (container image) felépítése miatt minden új PHP/Nginx verzióhoz.

Az alkalmazást és a proxy szolgáltatást két külön konténerben fogja futtatni. Az útmutató bemutatja azt is, hogyan használhatja a helyi tárolót egy Persistent Volume (PV) és Persistent Volume Claim (PVC) létrehozásához. Ezt követően ezt a PVC-t fogja használni a konfigurációs fájlok és a kód konténerképeken kívül tartására. Az útmutató elvégzése után újra felhasználhatja az Nginx képét más olyan alkalmazásokhoz, amelyek proxy szervert igényelnek. Ezt egy konfiguráció átadásával érheti el, ahelyett, hogy újraépítené a képet hozzá.

Előfeltételek

  1. A Kubernetes (k8s) és objektumainak alapvető ismerete. Tekintse meg ezt az útmutatót a Kubernetes ökoszisztéma részletes áttekintéséhez.
  2. Egy működő Kubernetes fürt Ubuntu 18.04-en. Kövesse ezt az útmutatót a Kubernetes fürt létrehozásához a kubeadm használatával.
  3. Ezenkívül az alkalmazás kódját egy nyilvános URL-címen kell tárolnia, például a GitHub.

1. lépés: PHP-FPM és Nginx szolgáltatások létrehozása

Ez a lépés segít a PHP-FPM és Nginx szolgáltatások létrehozásában. Minden szolgáltatás hozzáférést biztosít a fürtön belüli podok egy csoportjához. A fürtben lévő összes szolgáltatás képes kommunikálni egymással a nevük alapján, IP-címek nélkül. A PHP-FPM szolgáltatás és az Nginx szolgáltatás hozzáférést biztosít a PHP-FPM, illetve az Nginx podokhoz.

Meg kell adnia a PHP-FPM szolgáltatásnak, hogyan találja meg az Nginx podokat, mivel az proxyként fog működni a PHP-FPM podok számára. Ehhez kihasználja a Kubernetes’ automatikus szolgáltatásfelfedezését, és olvasható neveket használ a kérés megfelelő szolgáltatáshoz való irányításához.

Bármely szolgáltatás létrehozásához létre kell hoznia egy YAML fájlt, amely az objektumdefiníciót tartalmazza. Ez a YAML fájl legalább a következő címkékkel rendelkezik:

  1. apiVersion: A Kubernetes API verziója, amelyhez a definíció tartozik.
  2. kind: A Kubernetes objektum típusa, amelyet ez a YAML fájl létrehoz. Például egy service, egy job, vagy egy pod.
  3. metadata: Az objektum neve és a különböző labels címkék, amelyeket a felhasználó alkalmazni szeretne erre az objektumra, ezen tag alatt vannak meghatározva.
  4. spec: Ez a tag tartalmazza az objektum specifikációját, például a környezeti változókat (ENV), a használandó konténerképet, valamint azokat a portokat, amelyeken a konténer szolgáltatás elérhető lesz.
A PHP-FPM szolgáltatás létrehozása

Kezdésként hozzon létre egy könyvtárat a Kubernetes objektumdefiníciók tárolására. Jelentkezzen be a master csomópontra, és hozzon létre egy “definitions:”

Váltson át a definitions könyvtárra:

Ezután hozza létre a PHP-FPM szolgáltatásfájlt mint php_service.yaml fájlt:

Ezt követően állítsa be az apiVersion és kind értékeket a php_fpm_service.yaml fájlban:

Nevezze el a szolgáltatást php vagy php-fpm névre, mivel ez biztosít majd hozzáférést a PHP-FPM alkalmazásához:

Lássa el a php szolgáltatást a tier: backend címkével, mivel a PHP alkalmazás e mögött a szolgáltatás mögött fog futni:

A szolgáltatás a selector címkéket használja annak meghatározására, hogy mely podokat érje el. Minden olyan pod kiszolgálásra kerül, amely illeszkedik ezekre a címkékre, függetlenül attól, hogy mikor jött létre. Az útmutató későbbi részében megtanulhatja, hogyan adhat hozzá címkéket a podokhoz.

Adja hozzá a tier: backend címkét, amely a podot a backend réteghez rendeli, valamint a app: php-fpm címkét, amely jelzi, hogy a pod egy PHP-FPM alkalmazást futtat. Ezeket a címkéket a metadata szakasz után kell hozzáadnia:

Ezután meg kell adnia a portot a php-fpm szolgáltatás eléréséhez a spec alatt. Bármilyen tetszőleges portot megadhat, de ebben az útmutatóban a 9000 portot fogjuk használni:

A fenti lépések elvégzése után a php_fpm_service.yaml fájl így fog kinézni:

Nyomja meg a Ctrl + O billentyűkombinációt a fájl mentéséhez, majd a Ctrl + X billentyűkombinációt a kilépéshez a nano.

A kubectl parancs alkalmazása a PHP szolgáltatás létrehozásához

Miután a szolgáltatás objektumdefiníciója létrejött, futtassa a kubectl apply parancsot a -f argumentummal, megadva a php_fpm_service.yaml fájlt:

A fenti parancs kimenetének a következőnek kell lennie:

Futtassa az alábbi parancsot annak ellenőrzésére, hogy a php-fpm szolgáltatás fut-e:

Látni fogja, hogy a php-fpm szolgáltatás elindult és fut:

Note: A Kubernetes különféle types of services támogat. A php-fpm szolgáltatás az alapértelmezett ClusterIP szolgáltatástípust használja. Ez a szolgáltatástípus egy belső IP-címet rendel hozzá, és a szolgáltatást csak a Kubernetes-fürtön belülről teszi elérhetővé.
Az Nginx szolgáltatás létrehozása

Mivel a PHP-FPM szolgáltatás már kész, itt az ideje, hogy létrehozza az Nginx szolgáltatást is. Hozzon létre és nyisson meg egy új YAML-fájlt ehhez a szolgáltatáshoz nginx_service.yaml néven a szerkesztőben:

Nevezze el ezt a szolgáltatást nginx néven, mivel ez az Nginx podokat fogja megcélozni. Ez a szolgáltatás is a backendhez tartozik, így hozzá kell adnia egy tier: backend címkét:

A php-fpm szolgáltatáshoz hasonlóan adja hozzá az app: nginx és tier: backend címkéket a podok megcélzásához. Adja meg az alapértelmezett HTTP-portot 80 a szolgáltatás eléréséhez:

Az Nginx szolgáltatás nyilvánosan elérhető lehet az interneten a nyilvános IP-címről. Megadhatja a worker node IP-címét mint your_public_ip. Adja hozzá az alábbi sorokat a spec.externalIPs:

A nginx_service.yaml fájlnak a fenti lépések elvégzése után így kell kinéznie:

Mentse el és zárja be a fájlt, miután hozzáadta az összes szükséges fenti paramétert.

A kubectl parancs alkalmazása az Nginx szolgáltatás létrehozásához
A fenti parancsra a következő kimenetet kell látnia:
Most futtassa a következő parancsot az összes futó szolgáltatás megtekintéséhez:
A fenti parancs futtatásával látnia kell, hogy mind a PHP-FPM, mind az Nginx szolgáltatás fut:
Vegye figyelembe, hogy ha törölni szeretné bármelyik futó szolgáltatást, futtathatja az alábbi parancsot:

Step 2: Create Local Storage and Persistent Volume

A Kubernetes különféle tárolási beépülő modulokat biztosít, amelyek segítenek tárhelyet létrehozni a környezet számára. Ez a lépés bemutatja, hogyan hozhat létre egy helyi StorageClass-t, és hogyan használható ez a Storage Class a továbbiakban egy perzisztens kötet (Persistent Volume) létrehozásához.

Helyi tárhely létrehozása

Hozzon létre egy fájlt, például storageClass.yaml néven a szerkesztőjében:

Adja meg a kind értékeként a "storageClass"-t, az apiVersion értékeként pedig a "storage.k8s.io/v1"-et a következőképpen:

Nevezze el ezt a StorageClass-t "my-local-storage" néven, és adja hozzá a provisioner és volumeBindingMode mezőket az alábbiak szerint:

Mentse el és lépjen ki a fájlból; a végleges storageClass.yaml fájlnak így kell kinéznie:

Most hozza létre a StorageClass-t a kubectl create parancs futtatásával, az alábbiak szerint:

A fenti parancs futtatása után a következő kimenetet kell kapnia:

Helyi perzisztens kötet (Persistent Volume) létrehozása

A helyi tárhely (Local Storage) létrehozása után létrehozhatja a helyi perzisztens kötetet (Persistent Volume). A perzisztens kötet, más néven PV, egy meghatározott méretű blokkos tárhely, amely független a pod életciklusától. A helyi perzisztens kötet nem más, mint egy helyi lemez vagy könyvtár, amely elérhető egy Kubernetes fürtcsomóponton. Ez a helyi perzisztens kötet lehetővé teszi a felhasználók számára, hogy egy helyi perzisztens kötetigénylés (Persistent Volume Claim) segítségével rendkívül egyszerű, mégis hordozható módon férjenek hozzá a helyi tárhelyhez. Ezt a helyi perzisztens kötetet az imént létrehozott storage class használatával hozhatja létre. Nyisson meg egy fájlt, például persistentVolume.yaml néven a szerkesztőjében:

Adjon nevet ennek a perzisztens kötetnek, például "my-local-pv":

A helyi perzisztens kötet létrehozásakor a használatának megfelelő tárolókapacitást adhat hozzá. Ebben az útmutatóban 5 Gi-t fogunk használni a tárhelyhez:

Adja hozzá az accessModes, persistentVolumeReclaimPolicy mezőket, és adja meg ugyanazt a storageClassName-et, mint amit a storageClass.yaml fájlban használt:

Note: A persistentVolumeReclaimPolicy megadja, hogy mi történjen a Persistent Volume-mal, miután az igénye (Persistent Volume Claim) felszabadul. Erre a paraméterre három érvényes opció létezik: Retain, Delete és Recycle. A kódunkban a Retain opciót fogjuk használni. További részletekért itt ellenőrizheti a persistentVolumeReclaimPolicy mezőt: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.21/#persistentvolumeclaim-v1-core

Adja hozzá a local.path értéket a Persistent Volume-hoz az alábbiak szerint:

Note: Győződjön meg arról, hogy ez a helyi útvonal (/mnt/disk/vol) létezik a Kubernetes klaszter csomópontján.

After adding all the required fields, your persistentVolume.yaml fájlnak így kell kinéznie:

Note: A gép megfelelő csomópontnevét kell használnia. Ebben az esetben ez: “worker.”
Helyi kötet előkészítése

Most elő kell készítenünk egy helyi kötetet a “worker” csomóponton, ahogyan azt a persistentVolume.yaml fájlban megadtuk. Futtassa az alábbi parancsokat azon a csomóponton, amelyet a persistentVolume-ban konfigurált. Ebben az esetben ez a “worker” csomópont:

Note: Győződjön meg arról, hogy elegendő jogosultsággal rendelkezik a könyvtár létrehozásához és a jogosultságok fent látható módosításához. Ha nem, futtassa a parancsokat a megfelelő felhasználóval.

Futtassa az alábbi parancsot a master csomóponton, ahol a persistentVolume.yaml fájl található:

Az alábbi kimenetet kell kapnia:

Miután sikeresen létrehozta a helyi tárhelyet és a Persistent Volume-ot, most már továbbléphet, és létrehozhat egy Persistent Volume Claim-et az alkalmazáskód és a konfigurációs fájlok tárolására.

3. lépés: A Persistent Volume létrehozása

Az alkalmazás kódját biztonságban kell tartani, miközben a podokat kezeli vagy frissíti. Ehhez az előző lépésben létrehozott Persistent Volume-ot fogja használni, amelyhez egy PersistentVolumeClaim (vagy PVC) segítségével lehet hozzáférni. Ez a PVC csatlakoztatja a PV-t a szükséges útvonalon.

Nyisson meg egy fájlt, például a code_volume.yaml fájlt a szerkesztőjében:

Nevezze el a PVC-t „code”-nak az alábbi paraméterek és értékek fájlhoz való hozzáadásával:

Egy PVC spec szekciója a következő elemeket tartalmazza:

  1. accessModes: Erre a mezőre a következő különböző értékek lehetségesek:
    • ReadWriteOnce – Csatlakoztatja a kötetet egyetlen csomóponthoz, írási és olvasási jogosultsággal is.
    • ReadOnlyMany – Csatlakoztatja a kötetet több csomóponthoz, csak olvasási jogosultsággal.
    • ReadWriteMany – Csatlakoztatja a kötetet több csomóponthoz, írási és olvasási jogosultsággal is.
  2. resources: Meghatározza a szükséges tárhelyet.

Mivel a helyi tárhely csak egyetlen csomóponthoz van csatolva, az accessMode értékét ReadWriteOnce-ra kell állítania. Ebben az útmutatóban csak egy kis darab alkalmazáskódot fog hozzáadni, így az 1 GB tárhely elegendő lesz itt. Ha azonban nagyobb mennyiségű adatot vagy kódot szeretne tárolni, a tárolási paramétert az igényeinek megfelelően módosíthatja. Vegye figyelembe, hogy a kötet létrehozása után növelheti a tárhely méretét. A csökkentése azonban nem támogatott:

Most deklarálja azt a tárolóosztályt, amelyet a Kubernetes-fürt a kötetek kiosztásához fog használni. Használja az előző lépésben létrehozott my-local-storage tárolóosztályt itt a storageClassName értékeként:

A fenti lépések elvégzése után a(z) code_volume.yaml fájlnak így kell kinéznie:

Most mentse el és lépjen ki a fájlból.

PVC létrehozása

Hozza létre a code PVC-t a kubectl apply parancs futtatásával:

A következő kimenetet kell kapnia, amely jelzi, hogy az objektum sikeresen létrejött, és készen áll az 1 GB-os PVC kötetként való csatolására:

A következő parancs futtatásával ellenőrizheti az elérhető állandó kötetet (Persistent Volume - PV):

A fenti parancs kimenetének a következőnek kell lennie:

A fenti mezők mindegyike – a Reclaim Policy és a Status kivételével – a konfigurációs fájl áttekintése. A Reclaim Policy határozza meg, hogy mi történik a PV-vel, miután az azt elérő PVC-t törlik. A Delete érték eltávolítja a PV-t a Kubernetes-fürtből, valamint a tárolási infrastruktúrából is. Hivatkozhat a Kubernetes PV dokumentációra , hogy tisztán megértse a Reclaim Policy és a Status működését.

Most már létrehozhatja a podokat egy Deployment használatával, mivel sikeresen létrehozta a Persistent Volume-ot a helyi tárhely használatával.

Step 4: Create Deployment for your PHP-FPM Application

Ez a lépés segít létrehozni a PHP-FPM podot a Deployment segítségével. A Deployment ReplicaSet-eket használ, hogy stabil módot biztosítson a podok létrehozására, frissítésére és kezelésére. A Deployment automatikusan visszaállítja a podokat egy korábbi képre.

A spec.selector kulcs a Deploymentben felsorolja az általa kezelt podok összes címkéjét. A template kulcsot is használja a szükséges podok létrehozásához.

Ebben a lépésben bemutatjuk az Init Containers alkalmazását. Az Init Containers futtatnak néhány parancsot a pod sablonjában megadott normál konténerek előtt. Itt az Init Container a GitHub Gist-et (https://gist.github.com/) fogja használni egy minta index.php fájl lekéréséhez. A mintafájl tartalma:

PHP Deployment létrehozása

Nyisson meg egy új, php_deployment.yaml nevű fájlt a szerkesztőben a Deployment létrehozásához:

Most nevezze el a Deployment objektumot PHP-nak, mivel ez a Deployment fogja kezelni a PHP-FPM podokat. Adja hozzá a következő címkét: tier: backend, mert a pod a backend réteghez fog tartozni:

A replica paraméter segítségével adja meg, hogy a podból hány másolatot kell létrehozni. A replikák száma az Ön igényeitől és a rendelkezésre álló erőforrásoktól függően változhat. Ebben az útmutatóban csak egy replikát fog létrehozni a podból:

Adja hozzá az app: php és tier:backend címkéket a selector kulcs alatt, ami azt jelzi, hogy ez a Deployment azokat a podokat fogja kezelni, amelyek megegyeznek ezzel a két címkével:

Most a pod’jának objektumdefiníciójához szükség van egy sablonra (template) a Deployment spec-je alatt. Ez a sablon határozza meg a pod létrehozásához szükséges specifikációt. Kezdésként adja hozzá a php szolgáltatásválasztóhoz (service selector) és a Deployment matchLabels részéhez megadott címkéket. Ezután adja hozzá az app:php és tier:backend címkéket a template.metadata.labels:

Megjegyzés: Egy pod több konténerrel vagy kötettel (volume) is rendelkezhet, és mindegyiknek más névre lesz szüksége a megkülönböztetéshez.  Minden kötethez megadhat egy csatolási útvonalat (mount path), hogy szelektíven csatolja azt a kötetet egy konténerhez.

Először meg kell adnia az összes olyan kötetet, amelyhez a konténerei hozzá fognak férni. Nevezze el ezt a kötetet code-nak, mivel korábban már létrehozott egy code nevű PVC-t az alkalmazáskód tárolására:

Ezután adja meg a konténer nevét, valamint azt az image-et, amelyet a podon belül futtatni szeretne. Különböző image-ek érhetők el a Docker áruházban (https://hub.docker.com/explore/), de ebben az útmutatóban a php:7-fpm image-et fogjuk használni:

Most csatolja azokat a köteteket, amelyekhez a konténernek hozzáférésre van szüksége.  Mivel ez a konténer fogja futtatni a PHP-kódot, hozzá kell férnie az előző lépésben létrehozott code kötethez. Ebben a lépésben azt is megtanulhatja, hogyan másolhatja át az alkalmazáskódot egy Init Container segítségével.

Megjegyzés: Használhat egyetlen initContainer-t egy olyan szkript futtatására, amely felépíti az alkalmazást, vagy használhat parancsonként egy-egy initContainer-t, a beállítási folyamat összetettségétől függően. Győződjön meg arról, hogy a kötetek csatolva vannak az initContainer-hez.

A kód letöltéséhez ez az útmutató bemutatja, hogyan használhat egyetlen, busybox-ot futtató Init Container-t. A busybox egy kisméretű konténer wget segédprogrammal, amelyet erre a célra fog használni.

Először adja hozzá az initContainer-t a spec.template.spec alatt, és adja meg a busybox image-et:

Ezután ahhoz, hogy letöltse a kódot a code kötetbe, az Init Container-nek hozzá kell férnie ahhoz. Csatolja a code kötetet a /code útvonalra a spec.template.spec.initContainers:

Minden Init Container-nek futtatnia kell egy parancsot. Ez az Init Container a wget-et fogja használni, hogy letöltse a kódot a(z) Github-ról a(z) /code könyvtárba. Átadhat egy -O opciót, hogy nevet adjon a letöltött fájlnak, és elnevezheti ezt a fájlt index.php.

Megjegyzés: Győződjön meg arról, hogy megbízik abban a kódban, amelyet az Init Container segítségével a szerverére letölt. Megvizsgálhatja a forráskódot, és meggyőződhet arról, hogy elégedett a működésével.

Ezenkívül adja hozzá az alábbi sorokat az install konténer alatt a következőben: spec.template.spec.initContainers:

Miután elvégezte ezeket a lépéseket, a php_deployment.yaml fájlnak így kell kinéznie:

Most már elmentheti a fájlt és kiléphet. Ezután hozza létre a PHP-FPM Deploymentet a kubectl apply paranccsal:

A Deployment sikeres létrehozása után az alábbi kimenetet kell kapnia:

Ez a Deployment a megadott lemezképek letöltésével kezdődik, majd lekéri a PersistentVolume erőforrást a PersistentVolumeClaim igényből, majd futtatja az Ön initContainers konténereit. Amint ez a lépés befejeződött, a konténerek elindulnak, és csatolják a köteteket a megadott csatolási ponthoz. Ezen lépések elvégzése után a pod elindul és futni fog.

A Deployment megtekintéséhez futtassa az alábbi parancsot:

A fenti parancs futtatása után az alábbi kimenetet kell kapnia:

Ebből a kimenetből megértheti a Deployment aktuális állapotát. A Deployment egy olyan vezérlő, amely fenntartja a kívánt állapotot. A DESIRED mező azt határozza meg, hogy a php nevű podból 1 replikával rendelkezik. A CURRENT mező azt jelzi, hogy a DESIRED állapotból jelenleg hány replika fut. Egy egészséges pod esetén ennek meg kell egyeznie a DESIRED állapottal. A többi mezőről további információt talál a Kubernetes Deployments dokumentációjában.

Ezután a futó pod állapotának ellenőrzéséhez futtassa az alábbi parancsot:

E parancs kimenete a Deployment létrehozása óta eltelt időtől függően változhat. Ha röviddel a Deployment létrehozása után futtatja, a kimenet a következőhöz hasonló lesz:

Magyarázat:

Ezek az oszlopok az alábbi információkat képviselik:

  • Ready: Az ezt a podot futtató aktuális/kívánt replikák száma.
  • Status: A pod állapota. Az Init:0/1 azt jelzi, hogy az Init konténerek futnak, és az 1-ből 0 Init konténer fejezte be a futást.
  • Restarts: Ez jelzi, hogy ez a folyamat hányszor indult újra a pod elindításához.

Eltarthat néhány percig, amíg a pod állapota megváltozik erre: podInitializing az indítóparancsfájlok összetettségétől függően:

Ez azt jelzi, hogy az Init konténerek sikeresen lefutottak, és most a konténerek inicializálása zajlik:

Ahogy most láthatja, a pod már működik és fut. Ha azonban a pod nem indul el, hibakeresési céllal futtathatja az alábbi parancsokat:

1. A pod részletes információinak megtekintéséhez:

2.  A pod naplófájljainak megtekintéséhez:

Note: Számos lehetőség áll rendelkezésre a “kubectl logs” parancshoz, a részletekért futtathatja a “kubectl logs –help” parancsot.

3. A pod egy adott konténerének naplófájljainak megtekintéséhez:

Gratulálunk! Sikeresen csatolta az alkalmazáskódot, és a PHP-FPM szolgáltatás készen áll a kapcsolatok kezelésére. Hasonló módon létrehozhatja az Nginx Deploymentet is.

5. lépés: Az Nginx Deployment létrehozása

Ez a lépés bemutatja, hogyan konfigurálhatja az Nginx-et egy ConfigMap segítségével. A ConfigMap kulcs-érték formátumban tárolja az összes szükséges konfigurációt, amelyeket más Kubernetes objektumdefiníciókban fog használni. Ezzel a megközelítéssel rugalmasan újrahasználhatja vagy lecserélheti az Nginx rendszerképet egy másik verzióra, amikor csak szükséges. Frissítheti a ConfigMap objektumot, és az automatikusan replikálja a változtatásokat minden olyan podra, amely csatolja ezt a ConfigMap.

Első lépésként nyisson meg egy nginx_configmap.yaml fájlt a szerkesztőjében:

Most nevezze el ezt a ConfigMap-et nginx-config néven, és adja hozzá a tier: backend mikroszolgáltatáshoz:

Ezenkívül hozzáadhatja az adatokat a ConfigMap-hez. Adjon hozzá egy config nevű kulcsot, és értéknek adja meg az Nginx konfigurációs fájl teljes tartalmát.

Mivel a Kubernetes képes a kéréseket egy szolgáltatás megfelelő gazdagépeihez irányítani, a PHP-FPM szolgáltatás nevét is megadhatja a fastcgi_pass paraméter alatt az IP-címe helyett. Adja hozzá a következő kódsorokat az nginx_configMap.yaml fájlhoz:

Ha elkészült, a(z) nginx_configMap.yaml fájl így fog kinézni:

Most már elmentheti és bezárhatja a szerkesztőt. Most futtassa a(z) kubectl apply parancsot a(z) ConfigMap:

Ezt követően a következő kimenetet kell látnia a képernyőn:

Sikeresen létrehozta az Nginx Configmap-et. Most már létrehozhatja az Nginx Deployment-et.

Nginx Deployment létrehozása

Kezdésként létrehozhat egy új fájlt nginx_deployment.yaml névvel a szerkesztőben:

Nevezze el ezt a Deploymentet nginx névvel, és adja hozzá a(z) tier: backend címkét:

Ezt követően adja meg a replikák számát a(z) replica mező hozzáadásával a Deployment specifikációjában, majd adja hozzá az app: nginx és tier: backend címkéket:

Hasonlóképpen adja hozzá a pod sablont. Győződjön meg arról, hogy ugyanazokat a címkéket adja hozzá, mint amelyeket a Deployment selector.matchLabels mezőjében megadott. A következőket adhatja hozzá:

Biztosítson hozzáférést az Nginx számára a korábban létrehozott code PVC-hez a következő paraméterek hozzáadásával a(z) spec.template.spec.volumes:

Megjegyzés: Egy pod kötetként is csatolhatja a ConfigMap-et. A fájlnév és a kulcs megadásával létrehozunk egy fájlt, amelynek tartalma a kulcs értéke lesz. A ConfigMap használatához állítsa az elérési utat (path) annak a fájlnak a nevére, amely a kulcs tartalmát hordozza. Létrehozhat egy site.conf fájlt a config kulcsból. Adja hozzá a következőket a spec.template.spec.volumes alatt:

Figyelmeztetés: A kulcs tartalma felülírja a kötet mountPath útvonalát, ha nincs fájl megadva. Más szóval, a célmappa teljes tartalma elveszik, ha az elérési út nincs kifejezetten megadva.

Most adja meg a podban használni kívánt nevet, képet és portot. Itt a(z) nginx:1.7.9 képet és a(z) 80 portot. Adja hozzá őket a(z) spec.template.spec szakasz:

Ezenkívül csatolja a code kötetet a(z) /code helyre, mivel mind az Nginx-nek, mind a PHP-FPM-nek ugyanazon az útvonalon kell elérnie a fájlt:

A(z) nginx-1.7.9 rendszerkép automatikusan betölt minden konfigurációs fájlt a(z) /etc/nginx/conf.d mappából. Ha most ebbe a könyvtárba csatoljuk a config kötetet, az létrehozza a(z) /etc/nginx/conf.d/site.conf fájlt. Adja hozzá a következőket a(z) volumeMount szakasz alá:

A fenti lépések végrehajtása után a(z) nginx_deployment.yaml fájlnak így kell kinéznie:

Most már elmentheti és bezárhatja a fájlt, majd létrehozhatja az Nginx Deploymentet a következő parancs futtatásával:

A parancs sikeres végrehajtása után a következő kimenetet kell látnia:

Az összes Deploymentet kilistázhatja az alábbi parancsok végrehajtásával:

Most már látnia kell mind az Nginx, mind a PHP-FPM Deploymentet:

kubernetes deployment status

Továbbá a következő parancs futtatásával listázhatja a fenti Deploymentek által kezelt podokat:

Látni fogja, hogy mindkét pod fut és működik az alábbiak szerint:

kubernetes pod status

Mivel ezen a ponton az összes Kubernetes objektum aktív, most már elérheti az Nginx szolgáltatást a böngészőjében.

Futtassa a következő parancsot a szolgáltatások listázásához:

Jegyezze fel az Nginx szolgáltatás külső IP-címét (External IP):external ip of nginx Deploy a PHP Application on Kubernetes Cluster with Ubuntu 18.04

Most, az Nginx szolgáltatás külső IP-címét használva, meglátogathatja a szerverét a következő beírásával: http://your_public_ip a böngészőjében. Látnia kell a php_info() kimenetét, ami megerősíti, hogy a Kubernetes szolgáltatásai futnak és működnek.

Összegzés

Ebben az útmutatóban a PHP-FPM és Nginx szolgáltatások független kezelése érdekében konténerizálta a két szolgáltatást. Ezzel nemcsak a projekt skálázhatóságát javítja, hanem az erőforrásait is hatékonyan használja fel. Megtanulta azt is, hogyan hozhat létre helyi tárhelyet és egy Persistent Volume-ot az alkalmazáskód kötetben való tárolásához, hogy a jövőben könnyen frissíthesse szolgáltatásait. Ezzel javította a kód használhatóságát és karbantarthatóságát.

Továbbá tekintse meg a Dockerre és Kubernetesre fókuszáló egyéb útmutatóinkat, amelyeket itt talál: a blogunkon:

Kellemes számítástechnikát!

author

Hark Labs

Szerző · CloudSigma

Preslav Dobrev a CloudSigma kreatív tervezője, aki hagyományos és innovatív marketingcsatornák segítségével következetes vállalati identitás kialakítására összpontosít. Kiemelkedően képes ötvözni a művészi látásmódot a stratégiai marketinggel, hogy hatásos márkatörténeteket hozzon létre.

Hozzászólások

Még nincsenek hozzászólások. Legyen Ön az első.