Späť na blog

Nasadenie PHP aplikácie na Kubernetes cluster s Ubuntu 18.04

Nasadenie PHP aplikácie na Kubernetes cluster s Ubuntu 18.04

Kubernetes (tiež známy ako k8s) je open-source orchestračný systém. Umožňuje používateľom nasadzovať, škálovať a spravovať kontajnerizované aplikácie s minimálnym výpadkom. V tomto návode sa dozviete, ako nasadiť PHP aplikáciu v Kubernetes clusteri.

Nginx funguje ako proxy pre PHP-FPM počas behu PHP aplikácie. Správa týchto dvoch služieb v jednom kontajneri je náročný proces. Kubernetes nám pomáha spravovať ich v dvoch rôznych kontajneroch a znižuje náročnosť. Taktiež umožňuje používateľom opätovne použiť kontajnery a nestarať sa o zostavovanie ich obrazu kontajnera pre každú novú verziu PHP/Nginx.

Svoju aplikáciu a proxy službu spustíte v dvoch samostatných kontajneroch. Návod tiež poskytne informácie o tom, ako použiť lokálne úložisko na vytvorenie Persistent Volume (PV) a Persistent Volume Claim (PVC). Tento PVC potom použijete na uchovanie vašich konfiguračných súborov a kódu mimo obrazov kontajnerov. Po dokončení tohto návodu budete môcť znova použiť svoj Nginx obraz pre iné aplikácie, ktoré vyžadujú proxy server. Môžete to dosiahnuť odovzdaním konfigurácie namiesto opätovného zostavovania obrazu.

Požiadavky

  1. Základné porozumenie Kubernetes (k8s) a jeho objektom. Pozrite si túto príručku pre podrobný prehľad ekosystému Kubernetes.
  2. Kubernetes cluster, ktorý je spustený a beží na Ubuntu 18.04. Postupujte podľa tohto návodu na vytvorenie vášho Kubernetes clustera pomocou kubeadm.
  3. Okrem toho musíte hostovať kód svojej aplikácie na verejnej URL adrese, napríklad na GitHub.

Krok 1: Vytvorenie služieb PHP-FPM a Nginx

Tento krok vám pomôže vytvoriť služby PHP-FPM a Nginx. Akákoľvek služba poskytuje prístup k skupine podov v rámci clustera. Všetky služby prítomné v clusteri môžu navzájom komunikovať pomocou svojich názvov, bez IP adries. Služba PHP-FPM a služba Nginx poskytnú prístup k podom PHP-FPM a Nginx.

Budete musieť službe PHP-FPM povedať, ako nájsť pody Nginx, keďže bude fungovať ako proxy pre pody PHP-FPM. Na to využijete automatické zisťovanie služieb v Kubernetes’ a použijete čitateľné názvy na smerovanie požiadavky na príslušnú službu.

Na vytvorenie akejkoľvek služby budete musieť vytvoriť YAML súbor, ktorý obsahuje definíciu objektu. Tento YAML súbor má aspoň nasledujúce značky:

  1. apiVersion: Verzia Kubernetes API, do ktorej definícia patrí.
  2. kind: Typ objektu Kubernetes, ktorý tento YAML súbor vytvára. Napríklad: service, job alebo pod.
  3. metadata: Názov objektu a rôzne labels, ktoré by používateľ mohol chcieť použiť na tento objekt, sú definované pod touto značkou.
  4. spec: Táto značka obsahuje špecifikáciu vášho objektu, ako sú premenné prostredia (ENV), obraz kontajnera, ktorý sa má použiť, a porty, na ktorých bude služba kontajnera prístupná.
Vytvorenie služby PHP-FPM

Na začiatok by ste mali vytvoriť adresár na uloženie definícií vašich objektov Kubernetes. Prihláste sa do svojho hlavného (master) uzla a vytvorte adresár s názvom “definitions:”

Zmeňte adresár na adresár definitions:

Ďalej vytvorte súbor služby PHP-FPM ako súbor php_service.yaml:

Potom nastavte apiVersion a kind v súbore php_fpm_service.yaml:

Pomenujte svoju službu ako php alebo php-fpm pretože poskytne prístup k vašej PHP-FPM aplikácii:

Označte svoju php službu ako tier: backend keďže PHP aplikácia pobeží za touto službou:

Služba používa selector štítky (labels) na určenie, ku ktorým podom má pristupovať. Akýkoľvek pod, ktorý zodpovedá týmto štítkom, bez ohľadu na to, kedy bol vytvorený, je obsluhovaný. Ako pridať štítky k vašim podom sa dozviete neskôr v tomto návode.

Zahrňte tier: backend štítok, ktorý priradí váš pod do backendovej vrstvy, spolu so štítkom app: php-fpm na označenie, že pod spúšťa aplikáciu PHP-FPM. Tieto štítky musíte pridať za sekciu metadata :

Ďalej musíte deklarovať port na prístup k tejto službe php-fpm pod spec. Môžete pridať ľubovoľný port podľa vlastného výberu, ale v tomto návode použijeme port 9000 v tomto návode:

Po dokončení vyššie uvedených krokov bude váš súbor php_fpm_service.yaml vyzerať takto:

Stlačením Ctrl + O uložte súbor a stlačením Ctrl + X ukončite nano.

Použitie príkazu kubectl na vytvorenie služby PHP

Keď je definícia objektu pre vašu službu vytvorená, spustite príkaz kubectl apply s argumentom -f a špecifikujte váš súbor php_fpm_service.yaml :

Výstup z vyššie uvedeného príkazu by mal byť:

Spustením nižšie uvedeného príkazu overte, či vaša služba php-fpm beží:

Uvidíte, že služba php-fpm je spustená a beží:

Note: Kubernetes podporuje rôzne typy služieb. Vaša služba php-fpm používa predvolený typ služby ClusterIP. Tento typ služby priraďuje internú IP adresu a sprístupňuje službu iba z vnútra klastra Kubernetes.
Vytvorenie služby Nginx

Keďže vaša služba PHP-FPM je už pripravená, je čas vytvoriť aj službu Nginx. Vytvorte a otvorte nový súbor YAML pre túto službu s názvom nginx_service.yaml v editore:

Pomenujte túto službu ako nginx, pretože bude cieľom pre pody Nginx. Táto služba tiež patrí do backendu, takže by ste k nej mali pridať štítok tier: backend :

Podobne ako v službe php-fpm, pridajte štítky selektora app: nginx a tier: backend na zacielenie podov. Pridajte predvolený HTTP port 80 na prístup k tejto službe:

Služba Nginx môže byť verejne prístupná na internete z verejnej IP adresy. IP adresu vášho pracovného uzla môžete pridať ako your_public_ip. Pridajte riadky nižšie pod spec.externalIPs:

Váš súbor nginx_service.yaml by mal po dokončení všetkých vyššie uvedených krokov vyzerať ako ten nižšie:

Po pridaní všetkých požadovaných parametrov vyššie súbor uložte a zatvorte.

Použitie príkazu kubectl na vytvorenie služby Nginx
Pre vyššie uvedený príkaz by ste mali vidieť nasledujúci výstup:
Teraz spustite nasledujúci príkaz na zobrazenie všetkých spustených služieb:
Spustením vyššie uvedeného príkazu by ste mali vidieť obe vaše služby PHP-FPM a Nginx spustené a funkčné:
Upozorňujeme, že ak chcete odstrániť ktorúkoľvek zo spustených služieb, môžete spustiť nasledujúci príkaz:

Krok 2: Vytvorenie lokálneho úložiska a trvalého zväzku

Kubernetes poskytuje rôzne úložné zásuvné moduly, ktoré vám pomôžu vytvoriť úložný priestor pre vaše prostredie. Tento krok vás prevedie vytvorením lokálneho StorageClass a tým, ako sa táto Storage Class dá ďalej použiť na vytvorenie trvalého zväzku.

Vytvorenie lokálneho úložiska

Vytvorte súbor, napríklad storageClass.yaml, vo vašom editore:

Pridajte kind ako "storageClass" a apiVersion ako "storage.k8s.io/v1" nasledovne:

Pomenujte túto StorageClass ako "my-local-storage" a pridajte provisioner a volumeBindingMode nasledovne:

Uložte a zatvorte súbor. Váš finálny súbor storageClass.yaml by mal vyzerať takto:

Teraz vytvorte StorageClass spustením príkazu kubectl create, ako je uvedené nižšie:

Po spustení vyššie uvedeného príkazu by ste mali dostať nasledujúci výstup:

Vytvorenie lokálneho trvalého zväzku

Po vytvorení lokálneho úložiska môžete vytvoriť svoj lokálny trvalý zväzok (Persistent Volume). Trvalý zväzok, známy aj ako PV, je blokové úložisko určenej veľkosti, ktoré je nezávislé od životného cyklu podu. Lokálny trvalý zväzok nie je nič iné ako lokálny disk alebo adresár, ktorý je k dispozícii na uzle klastra Kubernetes. Tento lokálny trvalý zväzok umožňuje používateľom pristupovať k lokálnemu úložisku pomocou lokálneho nároku na trvalý zväzok (Persistent Volume Claim) veľmi jednoduchým, no prenosným spôsobom. Tento lokálny trvalý zväzok môžete vytvoriť pomocou tejto triedy úložiska, ktorú sme práve vytvorili. Otvorte súbor, napríklad persistentVolume.yaml, vo vašom editore:

Dajte tomuto trvalému zväzku názov, napríklad "my-local-pv":

Pri vytváraní lokálneho trvalého zväzku môžete pridať kapacitu úložiska podľa potreby. V tomto návode použijeme pre úložisko 5 Gi:

Pridajte accessModes, persistentVolumeReclaimPolicy a uveďte rovnaký storageClassName, aký bol použitý v súbore storageClass.yaml:

Poznámka: persistentVolumeReclaimPolicy vám hovorí, čo sa stane s Persistent Volume po uvoľnení jeho požiadavky (Persistent Volume Claim). Pre tento parameter existujú tri platné možnosti: Retain, Delete a Recycle. V našom kóde použijeme možnosť Retain. Podrobnejšie informácie nájdete v poli persistentVolumeReclaimPolicy tu: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.21/#persistentvolumeclaim-v1-core

Pridajte local.path pre váš Persistent Volume nasledovne:

Poznámka: Uistite sa, že táto lokálna cesta (/mnt/disk/vol) existuje na uzle vášho Kubernetes klastra.

Po pridaní všetkých požadovaných polí by mal váš súbor persistentVolume.yaml vyzerať takto:

Note: Musíte použiť správny názov uzla vášho stroja. V tomto prípade je to: “worker.”
Príprava lokálneho zväzku

Teraz musíme pripraviť lokálny zväzok na uzle “worker”, ako sme pridali v súbore persistentVolume.yaml . Spustite nižšie uvedené príkazy na uzle, ktorý ste nakonfigurovali v persistentVolume. V tomto prípade je to uzol “worker”:

Note: Uistite sa, že máte dostatočné oprávnenia na vytvorenie adresára a zmenu oprávnení, ako je znázornené vyššie. Ak nie, spustite príkazy pod správnym používateľom.

Spustite nižšie uvedený príkaz na master uzle, kde sa nachádza váš súbor persistentVolume.yaml :

Mali by ste získať nasledujúci výstup:

Keďže ste úspešne vytvorili svoje lokálne úložisko a Persistent Volume, môžete teraz pokračovať a vytvoriť Persistent Volume Claim na uloženie kódu aplikácie a konfiguračných súborov.

Krok 3: Vytvorenie Persistent Volume

Kód vašej aplikácie musí byť v bezpečí, kým spravujete alebo aktualizujete svoje pody. Na tento účel použijete Persistent Volume vytvorený v predchádzajúcom kroku, ku ktorému sa pristupuje pomocou PersistentVolumeClaim alebo PVC. Tento PVC pripojí PV na požadovanú cestu.

Otvorte súbor, napríklad code_volume.yaml, vo vašom editore:

Pomenujte svoj PVC ako code pridaním nižšie uvedených parametrov a hodnôt do vášho súboru:

Sekcia spec v PVC obsahuje nasledujúce položky:

  1. accessModes: Pre toto pole existujú rôzne možné hodnoty nasledovne:
    • ReadWriteOnce – Pripojí zväzok pre jeden uzol s právami na čítanie aj zápis.
    • ReadOnlyMany – Pripojí zväzok pre viacero uzlov iba s právom na čítanie.
    • ReadWriteMany – Pripojí zväzok pre viacero uzlov s právami na čítanie aj zápis.
  2. resources: Definuje požadovaný úložný priestor.

Keďže lokálne úložisko je pripojené iba k jednému uzlu, budete musieť nastaviť accessMode na ReadWriteOnce. V tomto návode pridáte iba malú časť kódu aplikácie, preto tu bude stačiť 1 GB úložiska. Ak však chcete uložiť väčšie množstvo dát alebo kódu, môžete parameter úložiska upraviť podľa svojich požiadaviek. Upozorňujeme, že po vytvorení zväzku budete môcť veľkosť úložiska zväčšiť. Jeho zmenšenie však nie je podporované:

Teraz deklarujte triedu úložiska (storage class), ktorú bude cluster Kubernetes používať na prideľovanie zväzkom. Pre váš storageClassName tu použite triedu úložiska my-local-storage vytvorenú v predchádzajúcom kroku:

Po dokončení vyššie uvedených krokov by mal váš súbor code_volume.yaml vyzerať takto:

Teraz súbor uložte a zatvorte.

Vytvorenie PVC

Vytvorte PVC pre kód spustením príkazu kubectl apply:

Mali by ste dostať nasledujúci výstup, ktorý indikuje, že objekt bol úspešne vytvorený a je pripravený na pripojenie vášho 1GB PVC ako zväzku:

Na kontrolu dostupného perzistentného zväzku (PV) môžete spustiť nasledujúci príkaz:

Výstup vyššie uvedeného príkazu by mal byť nasledujúci:

Všetky vyššie uvedené polia, okrem Reclaim Policy a Status, sú prehľadom vášho konfiguračného súboru. Reclaim Policy definuje, čo sa stane s PV po vymazaní PVC, ktoré k nemu pristupuje. Hodnota Delete odstráni PV z clustera Kubernetes, ako aj z infraštruktúry úložiska. Môžete si prečítať dokumentáciu k PV v Kubernetes, aby ste jasne porozumeli Reclaim Policy a Status.

Teraz môžete vytvoriť svoje pody pomocou Deploymentu, keďže ste úspešne vytvorili svoj Persistent Volume pomocou lokálneho úložiska.

Krok 4: Vytvorenie Deploymentu pre vašu aplikáciu PHP-FPM

Tento krok vám pomôže vytvoriť váš pod PHP-FPM pomocou Deploymentu. Deployment používa ReplicaSety na poskytovanie stabilného spôsobu vytvárania, aktualizácie a správy vašich podov. Deployment automaticky vráti svoje pody na predchádzajúci obraz (image).

Kľúč spec.selector v Deploymente uvádza všetky štítky podov, ktoré spravuje. Používa tiež kľúč template na vytvorenie požadovaných podov.

V tomto kroku si tiež predstavíme použitie Init Containerov. Init Containery spúšťajú niekoľko príkazov pred bežnými kontajnermi, ktoré sú špecifikované v šablóne podu. V tomto prípade Init Container použije GitHub Gist (https://gist.github.com/) na získanie vzorového súboru index.php. Obsah vzorového súboru je:

Vytvorenie PHP Deploymentu

Otvorte nový súbor s názvom php_deployment.yaml vo vašom editore na vytvorenie Deploymentu:

Teraz pomenujte objekt Deployment ako PHP, pretože tento Deployment bude spravovať vaše pody PHP-FPM. Pridajte štítok tier: backend pretože pod bude patriť do backendovej vrstvy:

Pomocou parametra replica špecifikujte počet kópií tohto podu, ktoré sa majú vytvoriť. Počet replík sa môže líšiť v závislosti od vašich požiadaviek a dostupných zdrojov. V tomto návode vytvoríte iba jednu repliku vášho podu:

Pridajte app: php a tier:backend štítky pod kľúčom selector, ktorý označuje, že tento Deployment bude spravovať pody, ktoré zodpovedajú týmto dvom štítkom:

Teraz definícia objektu vášho podu potrebuje šablónu (template) pod špecifikáciou vášho Deploymentu. Táto šablóna definuje špecifikáciu, ktorá je potrebná na vytvorenie vášho podu. Na začiatok pridajte štítky, ktoré boli špecifikované pre selektor služby php a matchLabels Deploymentu. Potom pridajte app:php a tier:backend pod template.metadata.labels:

Note: Pod môže mať viacero kontajnerov alebo zväzkov (volumes) a každý z nich bude potrebovať iný názov, aby ich bolo možné odlíšiť. Pre každý zväzok môžete špecifikovať cestu pripojenia (mount path), aby ste tento zväzok selektívne pripojili ku kontajneru.

First, you need to specify all the volumes that your containers will access. Name this volume code as you had created a PVC named code to hold your application code:

Ďalej špecifikujte názov kontajnera spolu s obrazom (image), ktorý chcete spustiť vo vnútri vášho podu. V obchode Docker sú k dispozícii rôzne obrazy (https://hub.docker.com/explore/), ale v tomto návode použijeme obraz php:7-fpm :

Teraz pripojte zväzky, ku ktorým kontajner vyžaduje prístup. Keďže tento kontajner bude spúšťať váš php kód, bude potrebovať prístup k zväzku code vytvorenému v predchádzajúcom kroku. V tomto kroku sa tiež dozviete, ako skopírovať kód vašej aplikácie pomocou Init Containeru.

Note: Môžete použiť buď jeden initContainer na spustenie skriptu, ktorý zostaví vašu aplikáciu, alebo môžete použiť jeden initContainer na každý príkaz, v závislosti od zložitosti procesu nastavenia. Musíte sa uistiť, že zväzky sú pripojené k initContaineru.

Na stiahnutie kódu vás tento návod prevedie tým, ako použiť jeden Init Container s busyboxom. Busybox je malý kontajner s nástrojom wget, ktorý na to použijete.

First, add your initContainer under spec.template.spec a špecifikujte obraz busybox:

Potom, aby bolo možné stiahnuť kód do zväzku code, váš Init Container k nemu bude potrebovať prístup. Pripojte zväzok code na cestu /code pod spec.template.spec.initContainers:

Každý Init Container vyžaduje spustenie príkazu. Tento Init Container použije wget na stiahnutie code z Github do adresára /code. Môžete odovzdať voľbu -O, aby ste tomuto stiahnutému súboru dali názov, a tento súbor môžete pomenovať index.php.

Note: Uistite sa, že dôverujete kódu, ktorý sťahujete pomocou Init Containeru na váš server. Môžete skontrolovať zdrojový kód a uistiť sa, že ste spokojní s tým, čo robí.

Okrem toho pridajte nasledujúce riadky pod kontajner install v spec.template.spec.initContainers:

Po dokončení všetkých týchto krokov by mal váš php_deployment.yaml súbor vyzerať takto:

Teraz môžete súbor uložiť a ukončiť. Ďalej vytvorte svoj PHP-FPM Deployment pomocou kubectl apply príkazu:

Úspešné vytvorenie Deploymentu by vám malo poskytnúť nasledujúci výstup:

Tento Deployment začne stiahnutím špecifikovaných obrazov, potom požiada o PersistentVolume z vášho PersistentVolumeClaim, a potom spustí vaše initContainers. Po dokončení tohto kroku sa kontajnery spustia a pripoja zväzky do špecifikovaného bodu pripojenia. Po dokončení všetkých týchto krokov bude váš pod spustený a funkčný.

Na zobrazenie vášho Deploymentu môžete spustiť nasledujúci príkaz:

Po spustení vyššie uvedeného príkazu by ste mali dostať nasledujúci výstup:

Aktuálny stav Deploymentu môžete pochopiť pomocou tohto výstupu. Deployment je kontrolér, ktorý udržiava požadovaný stav. Pole DESIRED špecifikuje, že má 1 repliku podu s názvom php. Pole CURRENT indikuje, koľko replík DESIRED stavu momentálne beží. Pre zdravý pod by sa to malo zhodovať s DESIRED stavom. Viac informácií o zostávajúcich poliach sa dozviete v Kubernetes Deployments Dokumentácii.

Potom môžete spustiť nasledujúci príkaz na kontrolu stavu vášho spusteného podu:

Výstup tohto príkazu sa môže líšiť v závislosti od času, ktorý uplynul od vytvorenia vášho Deploymentu. Ak ho spustíte krátko po vytvorení Deploymentu, výstup bude podobný tomuto:

Vysvetlenie:

Tieto stĺpce predstavujú informácie nasledovne:

  • Ready: Počet aktuálnych/požadovaných replík spustených v tomto pode.
  • Status: Stav vášho podu. Init:0/1 indikuje, že bežia Init kontajnery a 0 z 1 Init kontajnerov dokončilo beh.
  • Restarts: Toto označuje počet, koľkokrát sa tento proces reštartoval, aby sa spustil pod.

Môže trvať niekoľko minút, kým sa stav vášho podu zmení na podInitializing v závislosti od zložitosti vašich spúšťacích skriptov:

Toto indikuje, že Init kontajnery úspešne prebehli a teraz sa inicializujú samotné kontajnery:

Ako teraz môžete vidieť, váš pod je spustený a beží. Ak by sa však váš pod nespustil, môžete na účely ladenia spustiť nasledujúce príkazy:

1. Na zobrazenie podrobných informácií o pode:

2.  Na zobrazenie logov podu:

Note: Pre príkaz “kubectl logs” je k dispozícii viacero možností, viac informácií získate spustením príkazu “kubectl logs –help”.

3. Na zobrazenie logov konkrétneho kontajnera v pode:

Gratulujeme! Úspešne ste pripojili kód aplikácie a služba PHP-FPM je pripravená spracovávať pripojenia. Podobne môžete vytvoriť svoj Nginx Deployment.

Step 5: Create your Nginx Deployment

Tento krok vás prevedie konfiguráciou Nginx pomocou ConfigMap. ConfigMap uchováva všetky vaše požadované konfigurácie vo formáte kľúč-hodnota, ktoré sa použijú v iných definíciách objektov Kubernetes. S týmto prístupom budete mať flexibilitu opätovne použiť alebo vymeniť obraz Nginx za inú verziu, kedykoľvek to bude potrebné. Môžete aktualizovať ConfigMap a automaticky replikuje tieto zmeny do akéhokoľvek podu, ktorý pripája tento ConfigMap.

Na začiatok otvorte súbor nginx_configmap.yaml vo vašom editore:

Teraz pomenujte tento ConfigMap ako nginx-config a pridajte ho do mikroslužby tier: backend:

Okrem toho môžete pridať dáta do ConfigMap. Pridajte kľúč s názvom config a ako hodnotu pridajte celý obsah konfiguračného súboru Nginx.

Keďže Kubernetes dokáže smerovať požiadavky na príslušných hostiteľov pre danú službu, môžete namiesto IP adresy zadať názov vašej služby PHP-FPM pod parameter fastcgi_pass. Pridajte nasledujúce riadky kódu do vášho súboru nginx_configMap.yaml:

Po dokončení bude váš nginx_configMap.yaml súbor vyzerať takto:

Teraz môžete editor uložiť a ukončiť. Teraz vykonajte kubectl apply príkaz na vytvorenie ConfigMap:

Potom by ste mali na obrazovke vidieť nasledujúci výstup:

Úspešne ste vytvorili svoj Nginx Configmap. Teraz môžete vytvoriť svoj Nginx Deployment.

Vytvorenie Nginx Deploymentu

Na začiatok môžete vytvoriť nový súbor s názvom nginx_deployment.yaml v editore:

Pomenujte tento Deployment nginx a pridajte k nemu tier: backend štítok:

Potom špecifikujte počet replík pridaním poľa replica v špecifikácii Deploymentu a pridajte k nemu štítky app: nginx a tier: backend:

Podobne pridajte šablónu podu. Uistite sa, že pridáte rovnaké štítky, aké ste pridali v selector.matchLabels Deploymentu. Môžete pridať nasledujúce:

Poskytnite Nginxu prístup k PVC kódu, ktorý bol vytvorený predtým, pridaním nasledujúcich parametrov pod spec.template.spec.volumes:

Poznámka: Pod môže pripojiť ConfigMap ako zväzok. Špecifikovaním názvu súboru a kľúča vytvoríme súbor s jeho hodnotou ako obsahom. Ak chcete použiť tento ConfigMap, nastavte cestu na názov súboru, ktorý obsahuje obsah kľúča. Môžete vytvoriť súbor site.conf z kľúča config. Pridajte nasledujúce pod spec.template.spec.volumes:

Varovanie: Obsah kľúča nahradí mountPath zväzku, ak nie je špecifikovaný súbor. Inými slovami, stratíte všetok obsah v cieľovom priečinku, ak cesta nie je explicitne špecifikovaná.

Teraz špecifikujte názov, obraz a port, ktoré chcete použiť vo svojom pode. Tu použijeme obraz nginx:1.7.9 a port 80. Pridajte ich pod spec.template.spec sekcia:

Taktiež pripojte zväzok kódu na /code, keďže Nginx aj PHP-FPM budú potrebovať prístup k súboru na rovnakej ceste:

Obraz nginx-1.7.9 automaticky načíta akýkoľvek konfiguračný súbor v priečinku /etc/nginx/conf.d. Ak teraz pripojíme konfiguračný zväzok do tohto adresára, vytvorí sa /etc/nginx/conf.d/site.conf. Pridajte nasledovné pod volumeMount sekciu:

Po dokončení všetkých vyššie uvedených krokov by mal váš súbor nginx_deployment.yaml vyzerať takto:

Teraz môžete súbor uložiť, zatvoriť a vytvoriť Nginx Deployment spustením nasledujúceho príkazu:

Po úspešnom vykonaní príkazu by ste mali vidieť nasledujúci výstup:

Všetky svoje Deploymenty môžete zobraziť spustením nasledujúcich príkazov:

Teraz by ste mali vidieť Deploymenty pre Nginx aj PHP-FPM:

kubernetes deployment status

Ďalej môžete spustiť nasledujúci príkaz na zobrazenie zoznamu podov, ktoré sú spravované oboma vyššie uvedenými Deploymentmi:

Uvidíte, že oba vaše pody sú spustené a fungujú nasledovne:

kubernetes pod status

Keďže všetky vaše objekty Kubernetes sú v tomto bode aktívne, teraz môžete pristupovať k službe Nginx vo vašom prehliadači.

Spustite nasledujúci príkaz na zobrazenie zoznamu služieb:

Poznačte si External IP vašej služby Nginx:external ip of nginx Deploy a PHP Application on Kubernetes Cluster with Ubuntu 18.04

Teraz, pomocou tejto External IP služby Nginx, môžete navštíviť svoj server zadaním http://your_public_ip vo vašom prehliadači. Mali by ste vidieť výstup z php_info(), ktorý potvrdzuje, že vaše služby Kubernetes sú spustené a fungujú.

Záver

V tomto návode ste na nezávislú správu služieb PHP-FPM a Nginx tieto dve služby kontajnerizovali. Týmto spôsobom nielen zlepšíte škálovateľnosť svojho projektu, ale budete aj efektívne využívať svoje zdroje. Naučili ste sa tiež, ako vytvoriť lokálne úložisko a Persistent Volume na uloženie kódu vašej aplikácie na zväzok a mať možnosť v budúcnosti jednoducho aktualizovať svoje služby. Týmto spôsobom ste zlepšili použiteľnosť a udržiavateľnosť vášho kódu.

Okrem toho sa pozrite na naše ďalšie návody zamerané na Docker a Kubernetes, ktoré nájdete na našom blogu:

Príjemnú prácu!

author

Hark Labs

Autor · CloudSigma

Preslav Dobrev je kreatívny dizajnér v spoločnosti CloudSigma, ktorý sa zameriava na konzistentnú firemnú identitu prostredníctvom tradičných a inovatívnych marketingových kanálov. Dokáže brilantne spájať umeleckú víziu so strategickým marketingom, čím vytvára pôsobivé príbehy značky.

Komentáre

Zatiaľ žiadne komentáre. Buďte prvý.