Natrag na blog

Postavite PHP aplikaciju na Kubernetes klaster s Ubuntu 18.04

Postavite PHP aplikaciju na Kubernetes klaster s Ubuntu 18.04

Kubernetes (također poznat kao k8s) je sustav orkestracije otvorenog koda. Korisnicima omogućuje implementaciju, skaliranje i upravljanje kontejneriziranim aplikacijama uz minimalno vrijeme zastoja. U ovom vodiču naučit ćete kako implementirati PHP aplikaciju na Kubernetes klasteru.

Nginx se ponaša kao proxy za PHP-FPM dok pokreće PHP aplikaciju. Upravljanje ovim dvjema uslugama u jednom kontejneru težak je proces. Kubernetes nam pomaže upravljati njima u dva različita kontejnera i smanjuje gnjavažu. Također omogućuje korisnicima ponovnu upotrebu kontejnera bez brige o izgradnji slike kontejnera za svaku novu verziju PHP-a/Nginxa.

Pokrenut ćete svoju aplikaciju i proxy uslugu u dva odvojena kontejnera. Vodič će također pružiti uvid u to kako koristiti lokalnu pohranu za stvaranje Persistent Volume (PV) i Persistent Volume Claim (PVC). Zatim ćete koristiti ovaj PVC kako biste svoje konfiguracijske datoteke i kod držali izvan slika kontejnera. Nakon dovršetka ovog vodiča, moći ćete ponovno upotrijebiti svoju Nginx sliku za druge aplikacije koje zahtijevaju proxy poslužitelj. To možete postići prosljeđivanjem konfiguracije, umjesto ponovne izgradnje slike za nju.

Preduvjeti

  1. Osnovno razumijevanje Kubernetesa (k8s) i njegovih objekata. Pogledajte ovaj vodič za detaljan pregled Kubernetes ekosustava.
  2. Kubernetes klaster koji je pokrenut i radi na Ubuntu 18.04. Slijedite ovaj vodič za stvaranje vašeg Kubernetes klastera pomoću kubeadm-a.
  3. Osim toga, morate ugostiti kod svoje aplikacije na javnom URL-u, na primjer, GitHub.

Korak 1: Stvaranje PHP-FPM i Nginx usluga

Ovaj korak će vam pomoći stvoriti PHP-FPM i Nginx usluge. Svaka usluga pruža pristup skupu podova unutar klastera. Sve usluge prisutne u klasteru mogu međusobno komunicirati pomoću svojih naziva, bez IP adresa. PHP-FPM usluga i Nginx usluga omogućit će pristup PHP-FPM, odnosno Nginx podovima.

Morat ćete reći PHP-FPM usluzi kako da pronađe Nginx podove jer će djelovati kao proxy za PHP-FPM podove. Za to ćete iskoristiti prednost Kubernetes’ automatskog otkrivanja usluga i koristiti nazive čitljive ljudima za usmjeravanje zahtjeva na odgovarajuću uslugu.

Kako biste stvorili bilo koju uslugu, morat ćete stvoriti YAML datoteku koja sadrži definiciju objekta. Ova YAML datoteka ima barem sljedeće oznake:

  1. apiVersion: Verzija Kubernetes API-ja kojoj definicija pripada.
  2. kind: Vrsta Kubernetes objekta koju ova YAML datoteka stvara. Na primjer: service, job, ili pod.
  3. metadata: Naziv objekta i različite labels koje bi korisnik mogao htjeti primijeniti na ovaj objekt definirane su pod ovom oznakom.
  4. spec: Ova oznaka sadrži specifikaciju vašeg objekta, kao što su varijable okruženja (ENV), slika kontejnera koja će se koristiti, priključci na kojima će usluga kontejnera biti dostupna.
Stvaranje PHP-FPM usluge

Za početak biste trebali stvoriti direktorij za pohranu definicije vašeg Kubernetes objekta. Prijavite se na svoj glavni čvor i stvorite direktorij pod nazivom “definitions:”

Promijenite direktorij u direktorij definitions:

Zatim stvorite svoju PHP-FPM servisnu datoteku kao php_service.yaml datoteku:

Nakon toga postavite apiVersion i kind u php_fpm_service.yaml datoteci:

Nazovite svoju uslugu php ili php-fpm jer će ona omogućiti pristup vašoj PHP-FPM aplikaciji:

Označite svoju php uslugu s tier: backend jer će PHP aplikacija raditi iza ove usluge:

Usluga koristi selector oznake kako bi odredila kojim podovima pristupiti. Svaki pod koji odgovara ovim oznakama, bez obzira na to kada je stvoren, bit će uslužen. Naučit ćete kako dodati oznake svojim podovima kasnije u ovom vodiču.

Uključite tier: backend oznaku koja dodjeljuje vaš pod backend sloju, zajedno s app: php-fpm oznakom koja označava da pod pokreće PHP-FPM aplikaciju. Morate dodati ove oznake nakon metadata odjeljka:

Zatim trebate deklarirati port za pristup ovoj php-fpm usluzi pod spec. Možete dodati bilo koji port po vašem izboru, ali mi ćemo koristiti port 9000 u ovom vodiču:

Nakon što završite s gornjim koracima, vaša php_fpm_service.yaml datoteka će izgledati ovako:

Pritisnite Ctrl + O kako biste spremili datoteku, a zatim pritisnite Ctrl + X za izlaz iz nano.

Primjena naredbe kubectl za stvaranje PHP usluge

Nakon što je stvorena definicija objekta za vašu uslugu, pokrenite kubectl apply naredbu s -f argumentom navodeći vašu php_fpm_service.yaml datoteku:

Izlaz gornje naredbe trebao bi biti:

Pokrenite naredbu u nastavku kako biste provjerili radi li vaša php-fpm usluga:

Moći ćete vidjeti da je php-fpm usluga pokrenuta i radi:

Note: Kubernetes podržava različite types of services. Vaša php-fpm usluga koristi zadani tip usluge ClusterIP. Ova vrsta usluge dodjeljuje interni IP i čini uslugu dostupnom samo unutar Kubernetes klastera.
Stvaranje Nginx usluge

Budući da je vaša PHP-FPM usluga sada spremna, vrijeme je da stvorite i svoju Nginx uslugu. Stvorite i otvorite novu YAML datoteku za ovu uslugu, pod nazivom nginx_service.yaml u uređivaču:

Nazovite ovu uslugu nginx jer će ciljati Nginx podove. Ova usluga također pripada backendu pa biste joj trebali dodati tier: backend oznaku:

Kao što smo učinili u php-fpm usluzi, dodajte selektorske oznake app: nginx i tier: backend kako biste ciljali podove. Dodajte zadani HTTP port 80 za pristup ovoj usluzi:

Nginx usluga može biti javno dostupna na internetu s javne IP adrese. Možete dodati IP adresu svog radnog čvora kao your_public_ip. Dodajte retke u nastavku pod spec.externalIPs:

Vaša nginx_service.yaml datoteka bi trebala izgledati kao ona u nastavku nakon što dovršite sve gore navedene korake:

Spremite i zatvorite datoteku nakon što dodate sve gore navedene potrebne parametre.

Primjena naredbe kubectl za stvaranje Nginx usluge
Trebali biste vidjeti sljedeći izlaz za gornju naredbu:
Sada izvršite sljedeću naredbu kako biste vidjeli sve svoje pokrenute servise:
Pokretanjem gornje naredbe trebali biste moći vidjeti da su i vaši PHP-FPM i Nginx servisi aktivni i pokrenuti:
Imajte na umu da ako želite izbrisati bilo koji od svojih pokrenutih servisa, možete izvršiti naredbu u nastavku:

Korak 2: Izrada lokalne pohrane i trajnog volumena

Kubernetes nudi razne priključke za pohranu koji vam pomažu stvoriti prostor za pohranu za vaše okruženje. Ovaj korak će vas voditi kroz stvaranje lokalne StorageClass i kako se ova klasa pohrane može dalje koristiti za stvaranje trajnog volumena.

Stvaranje lokalne pohrane

Stvorite datoteku, recimo storageClass.yaml, u svom uređivaču teksta:

Dodajte kind kao "storageClass" i apiVersion kao "storage.k8s.io/v1" kako slijedi:

Nazovite ovu klasu StorageClass kao "my-local-storage" i dodajte provisioner i volumeBindingMode kako slijedi:

Spremite i zatvorite datoteku i vaša konačna datoteka storageClass.yaml bi trebala izgledati ovako:

Sada stvorite StorageClass pokretanjem naredbe kubectl create, kao što je prikazano u nastavku:

Nakon pokretanja gornje naredbe, trebali biste dobiti sljedeći izlaz:

Stvaranje lokalnog trajnog volumena

Nakon stvaranja lokalne pohrane, možete stvoriti svoj lokalni trajni volumen (Persistent Volume). Trajni volumen, poznat i kao PV, je blok pohrana određene veličine koja je neovisna o životnom ciklusu pod-a. Lokalni trajni volumen nije ništa drugo nego lokalni disk ili direktorij koji je dostupan na čvoru Kubernetes klastera. Ovaj lokalni trajni volumen omogućuje svojim korisnicima pristup lokalnoj pohrani korištenjem lokalnog zahtjeva za trajnim volumenom (Persistent Volume Claim) na vrlo jednostavan, ali prenosiv način. Ovaj lokalni trajni volumen možete stvoriti pomoću ove klase pohrane koju smo upravo stvorili. Otvorite datoteku, recimo persistentVolume.yaml, u svom uređivaču teksta:

Dodijelite ovom trajnom volumenu naziv, recimo "my-local-pv":

Možete dodati kapacitet pohrane prema vašoj upotrebi prilikom stvaranja lokalnog trajnog volumena. U ovom vodiču koristit ćemo 5 Gi za pohranu:

Dodajte accessModes, persistentVolumeReclaimPolicy i navedite storageClassName isti kao što je korišten u storageClass.yaml:

Napomena: persistentVolumeReclaimPolicy vam govori što se događa s trajnim volumenom (Persistent Volume) nakon što se njegov zahtjev (Persistent Volume Claim) oslobodi. Postoje tri valjane opcije za ovaj parametar: Retain, Delete i Recycle. U našem kodu koristit ćemo opciju Retain. Za više pojedinosti možete provjeriti polje persistentVolumeReclaimPolicy ovdje: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.21/#persistentvolumeclaim-v1-core

Dodajte local.path za svoj trajni volumen (Persistent Volume) kako je prikazano u nastavku:

Napomena: Provjerite postoji li ova lokalna staza (/mnt/disk/vol) na čvoru vašeg Kubernetes klastera.

Nakon dodavanja svih potrebnih polja, vaša datoteka persistentVolume.yaml trebala bi izgledati ovako:

Napomena: Morate koristiti ispravan naziv čvora vašeg računala. U ovom slučaju to je: “worker.”
Priprema lokalnog volumena

Sada moramo pripremiti lokalni volumen na čvoru “worker” kao što smo dodali u datoteci persistentVolume.yaml. Pokrenite naredbe u nastavku na čvoru koji ste konfigurirali u persistentVolume. U ovom slučaju, to je čvor “worker”:

Napomena: Provjerite imate li dovoljna dopuštenja za stvaranje direktorija i promjenu dopuštenja kao što je prikazano gore. Ako nemate, pokrenite naredbe s odgovarajućim korisnikom.

Pokrenite naredbu u nastavku na glavnom čvoru gdje se nalazi vaša datoteka persistentVolume.yaml:

Trebali biste dobiti sljedeći izlaz:

Budući da ste uspješno stvorili svoju lokalnu pohranu i trajni volumen (Persistent Volume), sada možete nastaviti i stvoriti zahtjev za trajnim volumenom (Persistent Volume Claim) koji će sadržavati kod vaše aplikacije i konfiguracijske datoteke.

Korak 3: Stvorite trajni volumen (Persistent Volume)

Kod vaše aplikacije mora biti siguran dok upravljate svojim podovima ili ih ažurirate. Za to ćete koristiti trajni volumen (Persistent Volume) stvoren u prethodnom koraku, kojem se pristupa pomoću zahtjeva za trajnim volumenom (Persistent Volume Claim) ili PVC-a. Ovaj PVC montira PV na traženu stazu.

Otvorite datoteku, recimo code_volume.yaml, u svom uređivaču teksta:

Imenujte svoj PVC kao code dodavanjem parametara i vrijednosti u nastavku u svoju datoteku:

Odjeljak spec PVC-a sadrži sljedeće stavke:

  1. accessModes: Postoje različite moguće vrijednosti za ovo polje kako slijedi:
    • ReadWriteOnce – Montira volumen za jedan čvor s dozvolama za čitanje i pisanje.
    • ReadOnlyMany – Montira volumen za više čvorova samo s dozvolom za čitanje.
    • ReadWriteMany – Montira volumen za više čvorova s dozvolama za čitanje i pisanje.
  2. resources: Definira potreban prostor za pohranu.

Budući da je lokalna pohrana montirana samo na jedan čvor, morat ćete postaviti accessMode na ReadWriteOnce. U ovom vodiču dodat ćete samo mali dio koda aplikacije, pa će 1 GB pohrane ovdje biti dovoljno. Međutim, ako želite pohraniti veću količinu podataka ili koda, možete izmijeniti parametar pohrane prema svojim zahtjevima. Imajte na umu da ćete nakon stvaranja volumena moći povećati veličinu pohrane. Međutim, smanjenje nije podržano:

Sada deklarirajte klasu pohrane koju će Kubernetes klaster koristiti za dodjelu volumenima. Ovdje upotrijebite klasu pohrane my-local-storage, stvorenu u prethodnom koraku, za svoj storageClassName:

Nakon dovršetka gore navedenih koraka, vaša datoteka code_volume.yaml trebala bi izgledati ovako:

Sada spremite i zatvorite datoteku.

Stvaranje PVC-a

Stvorite PVC za kod pokretanjem naredbe kubectl apply:

Trebali biste dobiti sljedeći izlaz koji označava da je objekt uspješno stvoren i spreman za montiranje vašeg PVC-a od 1 GB kao volumena:

Možete izvršiti sljedeću naredbu kako biste provjerili dostupni trajni volumen (Persistent Volume - PV):

Izlaz gore navedene naredbe trebao bi biti sljedeći:

Sva gore navedena polja, osim Reclaim Policy i Status, predstavljaju pregled vaše konfiguracijske datoteke. Reclaim Policy definira što se događa s PV-om nakon što se PVC koji mu pristupa izbriše. Vrijednost Delete uklanja PV iz Kubernetes klastera kao i iz infrastrukture za pohranu. Možete pogledati Kubernetes PV dokumentaciju kako biste jasno razumjeli Reclaim Policy i Status.

Sada možete stvoriti svoje podove pomoću Deploymenta jer ste uspješno stvorili svoj trajni volumen (Persistent Volume) pomoću lokalne pohrane.

Korak 4: Stvaranje Deploymenta za vašu PHP-FPM aplikaciju

Ovaj korak pomoći će vam da stvorite svoj PHP-FPM pod pomoću Deploymenta. Deployment koristi ReplicaSets kako bi pružio stabilan način za stvaranje, ažuriranje i upravljanje vašim podovima. Deployment automatski vraća svoje podove na prethodnu sliku.

Ključ spec.selector u Deploymentu navodi sve oznake podova kojima upravlja. Također koristi ključ template za stvaranje potrebnih podova.

U ovom koraku također ćemo predstaviti primjenu Init kontejnera (Init Containers). Init kontejneri pokreću nekoliko naredbi prije uobičajenih kontejnera koji su navedeni pod predloškom (template) poda. Ovdje će Init kontejner koristiti GitHub Gist (https://gist.github.com/) za dohvaćanje primjera index.php datoteke. Sadržaj ogledne datoteke je:

Stvaranje PHP Deploymenta

Otvorite novu datoteku pod nazivom php_deployment.yaml u svom uređivaču teksta kako biste stvorili svoj Deployment:

Sada nazovite Deployment objekt PHP jer će ovaj Deployment upravljati vašim PHP-FPM podovima. Dodajte oznaku tier: backend jer će pod pripadati backend sloju:

Pomoću parametra replica odredite broj kopija ovog poda koje treba stvoriti. Broj replika može varirati ovisno o vašim zahtjevima i dostupnim resursima. U ovom vodiču stvorit ćete samo jednu repliku svog poda:

Dodajte app: php i tier:backend oznake pod ključem selector koji označava da će ovaj Deployment upravljati podovima koji odgovaraju ovim dvjema oznakama:

Sada, definiciji objekta vašeg pod’a treba predložak pod vašom specifikacijom Deploymenta. Ovaj predložak definira specifikaciju koja je potrebna za stvaranje vašeg poda. Za početak, dodajte oznake koje su navedene za selektor php usluge i matchLabels Deploymenta. Zatim dodajte app:php i tier:backend pod template.metadata.labels:

Note: Pod može imati više spremnika ili volumena i svaki od njih trebat će različito ime kako bi ih se moglo razlikovati. Možete odrediti putanju montiranja za svaki volumen kako biste selektivno montirali taj volumen na spremnik.

Prvo morate odrediti sve volumene kojima će vaši spremnici pristupati. Nazovite ovaj volumen code jer ste stvorili PVC pod nazivom code za pohranu koda vaše aplikacije:

Zatim odredite naziv spremnika zajedno sa slikom koju želite pokrenuti unutar svog poda. Postoje razne slike dostupne u Docker trgovini (https://hub.docker.com/explore/), ali u ovom vodiču koristit ćemo php:7-fpm sliku:

Sada montirajte volumene kojima spremnik treba pristup. Budući da će ovaj spremnik pokretati vaš php kod, trebat će mu pristup volumenu code stvorenom u prethodnom koraku. U ovom koraku također ćete naučiti kako kopirati kod svoje aplikacije pomoću Init Container-a.

Note: Možete koristiti jedan initContainer za pokretanje skripte koja gradi vašu aplikaciju ili možete koristiti jedan initContainer po naredbi, ovisno o složenosti vašeg postupka postavljanja. Morate osigurati da su volumeni montirani na initContainer.

Za preuzimanje koda, ovaj vodič će vas uputiti kako koristiti jedan Init Container s busyboxom. Busybox je mali spremnik s uslužnim programom wget koji ćete koristiti za postizanje toga.

Prvo dodajte svoj initContainer pod spec.template.spec i odredite sliku busybox:

Zatim, kako bi preuzeo kod u volumen code, vaš Init Container trebat će pristup njemu. Montirajte volumen code na putanju /code pod spec.template.spec.initContainers:

Svaki Init Container zahtijeva pokretanje naredbe. Ovaj Init Container koristit će wget za preuzimanje code s Github u direktorij /code directory. Možete proslijediti opciju -O kako biste ovoj preuzetoj datoteci dali ime, a tu datoteku možete nazvati index.php.

Note: Provjerite vjerujete li kodu koji povlačite pomoću Init Containera na svoj poslužitelj. Možete pregledati izvorni kod i uvjeriti se da vam odgovara ono što radi.

Osim toga, dodajte retke u nastavku pod install container u spec.template.spec.initContainers:

Nakon što dovršite sve ove korake, vaša datoteka php_deployment.yaml trebala bi izgledati ovako:

Sada možete spremiti datoteku i izaći. Zatim izradite svoj PHP-FPM Deployment pomoću kubectl apply naredbe:

Uspješno stvaranje Deploymenta trebalo bi vam dati sljedeći izlaz:

Ovaj Deployment započinje preuzimanjem navedenih slika, zatim će zatražiti PersistentVolume od vašeg PersistentVolumeClaim, a zatim pokrenuti vaš initContainers. Kada se ovaj korak dovrši, spremnici će se pokrenuti i montirati volumene na navedenu točku montiranja. Nakon što dovršite sve ove korake, vaš će pod biti pokrenut i raditi.

Možete pokrenuti naredbu u nastavku da biste vidjeli svoj Deployment:

Nakon pokretanja gornje naredbe, trebali biste dobiti sljedeći izlaz:

Pomoću ovog izlaza možete razumjeti trenutno stanje Deploymenta. Deployment je kontroler koji održava željeno stanje. Polje DESIRED određuje da ima 1 repliku poda pod nazivom php. Polje CURRENT označava koliko se replika DESIRED stanja trenutno izvodi. Za ispravan pod, ovo bi trebalo odgovarati DESIRED stanju. Više o preostalim poljima možete saznati u Kubernetes Deployments dokumentaciji.

Nakon toga, da biste provjerili status svog pokrenutog poda, možete pokrenuti naredbu u nastavku:

Izlaz ove naredbe može varirati ovisno o vremenu koje je prošlo od stvaranja Deploymenta. Ako se pokrene ubrzo nakon stvaranja Deploymenta, izlaz će biti sličan ovome:

Objašnjenje:

Ovi stupci predstavljaju informacije na sljedeći način:

  • Ready: Broj trenutnih/željenih replika koje pokreću ovaj pod.
  • Status: Status vašeg poda. Init:0/1 označava da se Init kontejneri izvode i da je 0 od 1 Init kontejnera završilo s radom.
  • Restarts: Ovo označava koliko se puta ovaj proces ponovno pokrenuo radi pokretanja poda.

Vašem podu može trebati nekoliko minuta da se status promijeni u podInitializing ovisno o složenosti vaših skripti za pokretanje:

Ovo označava da su se Init kontejneri uspješno pokrenuli i da se sada kontejneri inicijaliziraju:

Kao što sada možete vidjeti, vaš pod je pokrenut i radi. Međutim, u slučaju da se vaš pod ne pokrene, možete pokrenuti naredbe u nastavku u svrhu otklanjanja pogrešaka:

1. Za prikaz detaljnih informacija o podu:

2.  Za prikaz logova poda:

Napomena: Dostupno je više opcija za naredbu “kubectl logs”, možete pokrenuti naredbu “kubectl logs –help” kako biste saznali više o tome.

3. Za prikaz logova određenog kontejnera u podu:

Čestitamo! Uspješno ste montirali kod aplikacije i PHP-FPM usluga je spremna za obradu veza. Slično tome, možete izraditi svoj Nginx Deployment.

Korak 5: Izradite svoj Nginx Deployment

Ovaj korak će vas voditi kroz konfiguraciju Nginxa pomoću ConfigMap. ConfigMap čuva sve vaše potrebne konfiguracije u formatu ključ-vrijednost koje će se koristiti u drugim definicijama Kubernetes objekata. S ovim pristupom imat ćete fleksibilnost ponovne upotrebe ili zamjene Nginx slike drugom verzijom, prema potrebi. Možete ažurirati ConfigMap i on će automatski replicirati te promjene na bilo koji pod koji montira ovaj ConfigMap.

Za početak, otvorite nginx_configmap.yaml datoteku u svom uređivaču:

Sada nazovite ovaj ConfigMap kao nginx-config i dodajte ga u tier: backend mikrouslugu:

Osim toga, možete dodati podatke u ConfigMap. Dodajte ključ pod nazivom config i dodajte sav sadržaj Nginx konfiguracijske datoteke kao vrijednost.

Budući da Kubernetes može usmjeravati zahtjeve odgovarajućim domaćinima za uslugu, možete unijeti naziv svoje PHP-FPM usluge pod parametar fastcgi_pass umjesto njezine IP adrese. Dodajte sljedeće retke koda u svoju nginx_configMap.yaml datoteku:

Nakon što završite, vaša nginx_configMap.yaml datoteka izgledat će ovako:

Sada možete spremiti i zatvoriti uređivač. Sada izvršite kubectl apply naredbu za stvaranje ConfigMap:

Nakon toga, na zaslonu biste trebali vidjeti sljedeći izlaz:

Uspješno ste stvorili svoj Nginx Configmap. Sada možete stvoriti svoj Nginx Deployment.

Stvaranje Nginx Deploymenta

Za početak, možete stvoriti novu datoteku pod nazivom nginx_deployment.yaml u uređivaču:

Nazovite ovaj Deployment nginx i dodajte mu tier: backend oznaku:

Nakon toga, odredite broj replika dodavanjem polja replica u specifikaciju Deploymenta i dodajte mu app: nginx i tier: backend oznake:

Slično tome, dodajte predložak poda. Pripazite da dodate iste oznake koje ste dodali u Deploymentov selector.matchLabels. Možete dodati sljedeće:

Omogućite Nginxu pristup PVC-u koda koji je ranije stvoren dodavanjem sljedećih parametara pod spec.template.spec.volumes:

Napomena: Pod može montirati ConfigMap kao volumen. Navođenjem naziva datoteke i ključa, stvorit ćemo datoteku s njegovom vrijednošću kao sadržajem. Da biste koristili ovaj ConfigMap, postavite putanju na naziv datoteke koja sadrži sadržaj ključa. Možete stvoriti datoteku site.conf iz ključa config. Dodajte sljedeće pod spec.template.spec.volumes:

Upozorenje: Sadržaj ključa zamijenit će mountPath volumena ako datoteka nije navedena. Drugim riječima, izgubit ćete sav sadržaj u odredišnoj mapi ako putanja nije izričito navedena.

Sada odredite naziv, sliku i priključak koje želite koristiti u svom podu. Ovdje ćemo koristiti nginx:1.7.9 sliku i priključak 80. Dodajte ih pod spec.template.spec sekcija:

Također, montirajte volumen koda na /code jer će i Nginx i PHP-FPM morati pristupiti datoteci na istoj putanji:

Slika nginx-1.7.9 automatski učitava bilo koju konfiguracijsku datoteku u mapi /etc/nginx/conf.d. Ako sada montiramo konfiguracijski volumen u ovaj direktorij, on će stvoriti /etc/nginx/conf.d/site.conf. Dodajte sljedeće pod volumeMount sekciju:

Nakon što dovršite sve gore navedene korake, vaša nginx_deployment.yaml datoteka bi trebala izgledati ovako:

Sada možete spremiti i zatvoriti datoteku te stvoriti Nginx Deployment pokretanjem sljedeće naredbe:

Nakon uspješnog izvršavanja naredbe, trebali biste vidjeti sljedeći izlaz:

Možete izlistati sve svoje Deploymente izvršavanjem sljedećih naredbi:

Sada biste trebali vidjeti i Nginx i PHP-FPM Deploymente:

kubernetes deployment status

Nadalje, možete izvršiti sljedeću naredbu kako biste izlistali podove kojima upravljaju oba gore navedena Deploymenta:

Vidjet ćete da su oba vaša poda aktivna i rade na sljedeći način:

kubernetes pod status

Budući da su svi vaši Kubernetes objekti aktivni u ovom trenutku, sada možete pristupiti Nginx usluzi u svom pregledniku.

Pokrenite sljedeću naredbu za popis usluga:

Zabilježite External IP svoje Nginx usluge:external ip of nginx Deploy a PHP Application on Kubernetes Cluster with Ubuntu 18.04

Sada, koristeći ovaj External IP Nginx usluge, možete posjetiti svoj poslužitelj upisivanjem http://your_public_ip u svom pregledniku. Trebali biste moći vidjeti izlaz php_info() koji potvrđuje da su vaše Kubernetes usluge aktivne i rade.

Zaključak

U ovom vodiču, kako biste neovisno upravljali svojim PHP-FPM i Nginx uslugama, kontejnerizirali ste ove dvije usluge. Time ne samo da ćete poboljšati skalabilnost svog projekta, već ćete i učinkovito koristiti svoje resurse. Također ste naučili kako stvoriti lokalnu pohranu i Persistent Volume za pohranu koda vaše aplikacije na volumen te kako biste u budućnosti mogli jednostavno ažurirati svoje usluge. Time ste poboljšali upotrebljivost i mogućnost održavanja svog koda.

Nadalje, pogledajte naše ostale vodiče usmjerene na Docker i Kubernetes koje možete pronaći na našem blogu:

Sretno računanje!

author

Hark Labs

Autor · CloudSigma

Preslav Dobrev je kreativni dizajner u CloudSigma, usredotočen na dosljedan poslovni identitet korištenjem tradicionalnih i inovativnih marketinških kanala. Vješt je u spajanju umjetničke vizije sa strateškim marketingom kako bi stvorio dojmljive brendirane priče.

Komentari

Još nema komentara. Budite prvi.