Torna al blog

Distribuire un'applicazione PHP su un cluster Kubernetes con Ubuntu 18.04

Distribuire un'applicazione PHP su un cluster Kubernetes con Ubuntu 18.04

Kubernetes (noto anche come k8s) è un sistema di orchestrazione open-source. Consente agli utenti di distribuire, scalare e gestire applicazioni containerizzate con tempi di inattività minimi. In questo tutorial imparerai come distribuire un'applicazione PHP su un cluster Kubernetes.

Nginx si comporta come un proxy per PHP-FPM durante l'esecuzione di un'applicazione PHP. Gestire questi due servizi in un singolo container è un processo difficile. Kubernetes ci aiuta a gestirli in due container diversi e riduce le complicazioni. Consente inoltre agli utenti di riutilizzare i container senza doversi preoccupare di creare la propria immagine del container per ogni nuova versione di PHP/Nginx.

Eseguirai la tua applicazione e il servizio proxy in due container separati. Il tutorial fornirà anche approfondimenti su come utilizzare lo storage locale per creare un Volume Persistente (PV) e una Persistent Volume Claim (PVC). Utilizzerai quindi questa PVC per mantenere i tuoi file di configurazione e il codice all'esterno delle immagini dei container. Dopo aver completato questo tutorial, sarai in grado di riutilizzare la tua immagine Nginx per altre applicazioni che richiedono un server proxy. Puoi ottenere questo risultato passando una configurazione, invece di ricostruire l'immagine per essa.

Prerequisiti

  1. Una comprensione di base di Kubernetes (k8s) e dei suoi oggetti. Fai riferimento a questa guida per una panoramica dettagliata dell'ecosistema Kubernetes.
  2. Un cluster Kubernetes attivo e funzionante su Ubuntu 18.04. Segui questo tutorial per creare il tuo cluster Kubernetes utilizzando kubeadm.
  3. Inoltre, è necessario ospitare il codice dell'applicazione su un URL pubblico, ad esempio, GitHub.

Passo 1: Creare i servizi PHP-FPM e Nginx

Questo passaggio ti aiuterà a creare i servizi PHP-FPM e Nginx. Qualsiasi servizio fornisce l'accesso a un insieme di pod all'interno di un cluster. Tutti i servizi presenti in un cluster possono comunicare tra loro con i loro nomi, senza indirizzi IP. Il servizio PHP-FPM e il servizio Nginx forniranno l'accesso rispettivamente ai pod PHP-FPM e Nginx.

Dovrai indicare al servizio PHP-FPM come trovare i pod Nginx, poiché fungerà da proxy per i pod PHP-FPM. Per fare questo, sfrutterai l'individuazione automatica dei servizi di Kubernetes’ e utilizzerai nomi leggibili dall'uomo per instradare la richiesta al rispettivo servizio.

Per creare qualsiasi servizio, dovrai creare un file YAML che contiene la definizione dell'oggetto. Questo file YAML ha almeno i seguenti tag:

  1. apiVersion: La versione dell'API di Kubernetes a cui appartiene la definizione.
  2. kind: Il tipo di oggetto Kubernetes creato da questo file YAML. Ad esempio: un service, un job, o un pod.
  3. metadata: Il nome dell'oggetto e le diverse etichette che l'utente potrebbe voler applicare a questo oggetto sono definite sotto questo tag.
  4. spec: Questo tag contiene la specifica dell'oggetto, come le variabili d'ambiente (ENV), l'immagine del container da utilizzare, le porte su cui il servizio del container sarà accessibile.
Creazione del servizio PHP-FPM

Per iniziare, dovresti creare una directory per conservare le definizioni degli oggetti Kubernetes. Accedi al tuo nodo master e crea una directory chiamata “definitions:”

Cambia la directory in quella delle definizioni:

Successivamente, crea il tuo file di servizio PHP-FPM come php_service.yaml :

Dopodiché, imposta apiVersion e kind nel file php_fpm_service.yaml :

Assegna al tuo servizio il nome php o php-fpm poiché fornirà l'accesso alla tua applicazione PHP-FPM:

Etichetta il tuo servizio php come tier: backend poiché l'applicazione PHP verrà eseguita dietro questo servizio:

Un servizio utilizza le etichette di selector per determinare a quali pod accedere. Qualsiasi pod che corrisponda a queste etichette, indipendentemente da quando è stato creato, viene servito. Imparerai come aggiungere etichette ai tuoi pod più avanti in questo tutorial.

Includi l'etichetta tier: backend che assegna il tuo pod al tier backend, insieme all'etichetta app: php-fpm per indicare che il pod esegue un'applicazione PHP-FPM. Devi aggiungere queste etichette dopo la sezione metadata:

Successivamente, devi dichiarare la porta per accedere a questo servizio php-fpm sotto spec. Puoi aggiungere qualsiasi porta a tua scelta, ma in questo tutorial useremo la porta 9000 in questo tutorial:

Una volta completati i passaggi precedenti, il tuo file php_fpm_service.yaml apparirà così:

Premi Ctrl + O per salvare il file, quindi premi Ctrl + X per uscire da nano.

Applicazione del comando kubectl per creare il servizio PHP

Una volta creata la definizione dell'oggetto per il tuo servizio, esegui il comando kubectl apply con l'argomento -f specificando il tuo file php_fpm_service.yaml:

L'output del comando precedente dovrebbe essere:

Esegui il comando seguente per verificare che il tuo servizio php-fpm sia in esecuzione:

Sarai in grado di vedere il servizio php-fpm attivo e funzionante:

Nota: Kubernetes supporta vari tipi di servizi. Il tuo servizio php-fpm utilizza il tipo di servizio predefinito ClusterIP. Questo tipo di servizio assegna un IP interno e rende il servizio raggiungibile solo dall'interno del cluster Kubernetes.
Creazione del servizio Nginx

Poiché il tuo servizio PHP-FPM è ora pronto, è il momento di creare anche il tuo servizio Nginx. Crea e apri un nuovo file YAML per questo servizio, chiamato nginx_service.yaml nell'editor:

Assegna a questo servizio il nome nginx poiché avrà come target i pod Nginx. Anche questo servizio appartiene al backend, quindi dovresti aggiungervi l'etichetta tier: backend:

Come abbiamo fatto nel servizio php-fpm, aggiungi le etichette del selettore app: nginx e tier: backend per indirizzare i pod. Aggiungi la porta HTTP predefinita 80 per accedere a questo servizio:

Il servizio Nginx può essere accessibile pubblicamente su Internet dall'indirizzo IP pubblico. Puoi aggiungere l'IP del tuo nodo worker come your_public_ip. Aggiungi le righe seguenti sotto spec.externalIPs:

Il tuo file nginx_service.yaml dovrebbe apparire come quello qui sotto una volta completati tutti i passaggi precedenti:

Salva e chiudi il file dopo aver aggiunto tutti i parametri richiesti sopra.

Applicazione del comando kubectl per creare il servizio Nginx
Dovresti vedere il seguente output per il comando sopra indicato:
Ora, esegui il seguente comando per visualizzare tutti i tuoi servizi in esecuzione:
Eseguendo il comando sopra indicato, dovresti essere in grado di vedere sia il servizio PHP-FPM che quello Nginx attivi e funzionanti:
Nota che se desideri eliminare uno qualsiasi dei tuoi servizi in esecuzione, puoi eseguire il comando seguente:

Passaggio 2: Creare lo storage locale e il volume persistente

Kubernetes fornisce vari plug-in di storage che ti aiutano a creare spazio di archiviazione per il tuo ambiente. Questo passaggio ti guiderà su come creare un StorageClass locale e su come questa Storage Class possa essere ulteriormente utilizzata per creare un Persistent Volume.

Creazione di uno storage locale

Crea un file, ad esempio storageClass.yaml, nel tuo editor:

Aggiungi kind come "storageClass" e apiVersion come "storage.k8s.io/v1" come segue:

Assegna a questa StorageClass il nome "my-local-storage" e aggiungi provisioner e volumeBindingMode come segue:

Salva ed esci dal file; il tuo file storageClass.yaml finale dovrebbe apparire così:

Ora, crea la StorageClass eseguendo il comando kubectl create, come indicato di seguito:

Dopo aver eseguito il comando sopra indicato, dovresti ottenere il seguente output:

Creazione di un Persistent Volume locale

Dopo aver creato lo Storage locale, puoi creare il tuo Persistent Volume locale. Un Persistent Volume, noto anche come PV, è lo storage a blocchi di dimensioni specificate che è indipendente dal ciclo di vita di un pod. Un Persistent Volume locale non è altro che un disco locale o una directory disponibile su un nodo del cluster Kubernetes. Questo Persistent Volume locale consente ai suoi utenti di accedere allo storage locale utilizzando una Persistent Volume Claim locale in modo molto semplice ma portabile. Puoi creare questo Persistent Volume locale utilizzando la storage class appena creata. Apri un file, ad esempio persistentVolume.yaml, nel tuo editor:

Assegna a questo persistent volume un nome, ad esempio "my-local-pv":

Puoi aggiungere capacità di archiviazione in base al tuo utilizzo durante la creazione di un Persistent Volume locale. In questo tutorial, utilizzeremo 5 Gi per lo storage:

Aggiungi accessModes, persistentVolumeReclaimPolicy e fornisci lo stesso storageClassName utilizzato in storageClass.yaml:

Nota: persistentVolumeReclaimPolicy indica cosa succede al Persistent Volume una volta rilasciata la sua richiesta (Persistent Volume Claim). Esistono tre opzioni valide per questo parametro: Retain, Delete e Recycle. Nel nostro codice utilizzeremo l'opzione Retain. Per maggiori dettagli, puoi verificare il campo persistentVolumeReclaimPolicy qui: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.21/#persistentvolumeclaim-v1-core

Aggiungi il local.path per il tuo Persistent Volume come segue:

Nota: Assicurati che questo percorso locale (/mnt/disk/vol) esista sul nodo del tuo cluster Kubernetes.

Dopo aver aggiunto tutti i campi richiesti, il tuo file persistentVolume.yaml dovrebbe apparire così:

Nota: Devi utilizzare il nome corretto del nodo della tua macchina. In questo caso è: “worker.”
Preparazione del volume locale

Ora dobbiamo preparare un volume locale sul nodo “worker” come abbiamo aggiunto nel file persistentVolume.yaml. Esegui i comandi seguenti sul nodo che hai configurato in persistentVolume. In questo caso, si tratta del nodo “worker”:

Nota: Assicurati di disporre delle autorizzazioni sufficienti per creare la directory e modificare i permessi come mostrato sopra. In caso contrario, esegui i comandi con l'utente corretto.

Esegui il comando seguente sul nodo master in cui è presente il tuo file persistentVolume.yaml:

Dovresti ottenere il seguente output:

Dopo aver creato con successo lo storage locale e il Persistent Volume, puoi procedere e creare una Persistent Volume Claim per contenere il codice dell'applicazione e i file di configurazione.

Passo 3: Creare il Persistent Volume

Il codice della tua applicazione deve essere protetto mentre gestisci o aggiorni i tuoi pod. A tale scopo, utilizzerai il Persistent Volume creato nel passaggio precedente, a cui si accede tramite una PersistentVolumeClaim, o PVC. Questa PVC monta il PV nel percorso richiesto.

Apri un file, ad esempio code_volume.yaml, nel tuo editor:

Assegna alla tua PVC il nome code aggiungendo i seguenti parametri e valori al tuo file:

La sezione spec di una PVC contiene i seguenti elementi:

  1. accessModes: Ci sono vari valori possibili per questo campo, come segue:
    • ReadWriteOnce – Monta il volume per un singolo nodo con permessi sia di lettura che di scrittura.
    • ReadOnlyMany – Monta il volume per molti nodi con solo permesso di lettura.
    • ReadWriteMany – Monta il volume per molti nodi con permessi sia di lettura che di scrittura.
  2. resources: Definisce lo spazio di archiviazione richiesto.

Poiché lo storage locale è montato solo su un singolo nodo, dovrai impostare accessMode su ReadWriteOnce. In questo tutorial aggiungerai solo una piccola porzione di codice dell'applicazione, quindi 1 GB di storage sarà sufficiente in questo caso. Tuttavia, se desideri memorizzare una quantità maggiore di dati o codice, puoi modificare il parametro di storage in base alle tue esigenze. Nota che una volta creato il volume, sarai in grado di aumentare le dimensioni dello storage. Tuttavia, la riduzione non è supportata:

Ora, dichiara la storage class che il cluster Kubernetes utilizzerà per l'allocazione ai volumi. Usa qui la storage class my-local-storage, creata nel passaggio precedente, per il tuo storageClassName:

Dopo aver completato i passaggi precedenti, il tuo code_volume.yaml file dovrebbe apparire così:

Ora salva ed esci dal file.

Creazione del PVC

Crea il PVC code eseguendo il comando kubectl apply:

Dovresti ottenere il seguente output che indica che l'oggetto è stato creato con successo ed è pronto per poter montare il tuo PVC da 1 GB come volume:

Puoi eseguire il comando seguente per verificare il Persistent Volume (PV) disponibile:

L'output del comando precedente dovrebbe essere il seguente:

Tutti i campi sopra indicati, ad eccezione di Reclaim Policy e Status, sono una panoramica del tuo file di configurazione. La Reclaim Policy definisce cosa succede al PV una volta eliminato il PVC che vi accede. Il valore Delete rimuove il PV dal cluster Kubernetes e dall'infrastruttura di storage. Puoi fare riferimento alla documentazione sui PV di Kubernetes per avere una chiara comprensione di Reclaim Policy e Status.

Ora puoi creare i tuoi pod utilizzando un Deployment, poiché hai creato con successo il tuo Persistent Volume utilizzando lo storage locale.

Step 4: Creare il Deployment per l'applicazione PHP-FPM

Questo passaggio ti aiuterà a creare il tuo pod PHP-FPM utilizzando Deployment. Il Deployment utilizza i ReplicaSet per fornire un modo stabile per creare, aggiornare e gestire i pod. Un Deployment ripristina automaticamente i suoi pod a un'immagine precedente.

La chiave spec.selector nel Deployment elenca tutte le etichette dei pod che gestisce. Utilizza anche la chiave template per creare i pod richiesti.

In questo passaggio, introdurremo anche l'applicazione degli Init Containers. Gli Init Container eseguono alcuni comandi prima dei normali container specificati nel template del pod. Qui, l'Init Container utilizzerà GitHub Gist (https://gist.github.com/) per ottenere un file index.php di esempio. Il contenuto del file di esempio è:

Creazione del Deployment PHP

Apri un nuovo file chiamato php_deployment.yaml nel tuo editor per creare il tuo Deployment:

Ora, assegna al Deployment il nome PHP, poiché questo Deployment gestirà i tuoi pod PHP-FPM. Aggiungi l'etichetta tier: backend perché il pod apparterrà al tier backend:

Utilizzando il parametro replica, specifica il numero di copie di questo pod che devono essere create. Il numero di repliche può variare in base ai tuoi requisiti e alle risorse disponibili. In questo tutorial, creerai una sola replica del tuo pod:

Aggiungi app: php e tier:backend sotto la chiave selector che indica che questo Deployment gestirà i pod che corrispondono a queste due etichette:

Ora, la definizione dell'oggetto del tuo pod richiede un template sotto la spec del tuo Deployment. Questo template definisce la specifica necessaria per creare il tuo pod. Per iniziare, aggiungi le etichette specificate per il selettore del servizio php e i matchLabels del Deployment. Quindi aggiungi app:php e tier:backend sotto template.metadata.labels:

Note: Un pod può avere più container o volumi e ognuno di essi avrà bisogno di un nome diverso per poterli differenziare. Puoi specificare un percorso di montaggio per ciascun volume per montare selettivamente quel volume su un container.

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:

Successivamente, specifica il nome del container insieme all'immagine che desideri eseguire all'interno del tuo pod. Sono disponibili varie immagini sul Docker store (https://hub.docker.com/explore/), ma in questo tutorial utilizzeremo l'immagine php:7-fpm :

Ora, monta i volumi a cui il container richiede l'accesso. Poiché questo container eseguirà il tuo codice PHP, avrà bisogno di accedere al volume code creato nel passaggio precedente. In questo passaggio imparerai anche come copiare il codice della tua applicazione utilizzando un Init Container.

Note: Puoi utilizzare un singolo initContainer per eseguire uno script che compila la tua applicazione, oppure puoi utilizzare un initContainer per comando, a seconda della complessità del processo di configurazione. Devi assicurarti che i volumi siano montati sull'initContainer.

Per scaricare il codice, questo tutorial ti guiderà su come utilizzare un singolo Init Container con busybox. Busybox è un piccolo container con l'utility wget che utilizzerai per raggiungere questo scopo.

Per prima cosa, aggiungi il tuo initContainer sotto spec.template.spec e specifica l'immagine busybox:

Quindi, per scaricare il codice nel volume code, il tuo Init Container dovrà avervi accesso. Monta il volume code nel percorso /code sotto spec.template.spec.initContainers:

Ogni Init Container richiede l'esecuzione di un comando. Questo Init Container utilizzerà wget per scaricare il code da Github nella directory /code. Puoi passare un'opzione -O per dare un nome a questo file scaricato, e puoi chiamare questo file index.php.

Note: Assicurati di fidarti del codice che stai scaricando nel tuo server tramite l'Init Container. Puoi ispezionare il codice sorgente e assicurarti di essere a tuo agio con ciò che fa.

Inoltre, aggiungi le righe seguenti sotto install container in spec.template.spec.initContainers:

Dopo aver completato tutti questi passaggi, il tuo php_deployment.yaml file dovrebbe apparire così:

Ora puoi salvare il file e uscire. Successivamente, crea il tuo Deployment PHP-FPM utilizzando kubectl apply il comando:

La creazione corretta del Deployment dovrebbe fornire il seguente output:

Questo Deployment inizia scaricando le immagini specificate, quindi richiederà il PersistentVolume dal tuo PersistentVolumeClaim, e poi eseguirà i tuoi initContainers. Una volta completato questo passaggio, i container verranno eseguiti e monteranno i volumi nel punto di montaggio specificato. Dopo aver completato tutti questi passaggi, il tuo pod sarà attivo e funzionante.

Puoi eseguire il comando seguente per visualizzare il tuo Deployment:

Dopo aver eseguito il comando precedente, dovresti ottenere il seguente output:

Puoi comprendere lo stato corrente del Deployment con l'aiuto di questo output. Un Deployment è un controller che mantiene lo stato desiderato. Il campo DESIRED specifica che ha 1 replica del pod denominato php. Il campo CURRENT indica quante repliche dello stato DESIRED sono attualmente in esecuzione. Per un pod integro, questo dovrebbe corrispondere allo stato DESIRED state. Puoi saperne di più sui campi rimanenti nella Documentazione dei Deployment di Kubernetes.

Successivamente, per verificare lo stato del tuo pod in esecuzione, puoi eseguire il comando seguente:

L'output di questo comando può variare a seconda del tempo trascorso dalla creazione del Deployment. Se viene eseguito poco dopo la creazione del Deployment, l'output sarà simile a:

Spiegazione:

Queste colonne rappresentano le informazioni come segue:

  • Ready: Il numero di repliche correnti/desiderate che eseguono questo pod.
  • Stato: lo stato del tuo pod. Init:0/1 indica che gli Init Container sono in esecuzione e 0 su 1 Init Container hanno terminato l'esecuzione.
  • Riavvii: questo indica il numero di volte che questo processo è stato riavviato per avviare il pod.

Il tuo pod può richiedere alcuni minuti affinché lo stato cambi in podInitializing a seconda della complessità dei tuoi script di avvio:

Questo indica che gli Init Container sono stati eseguiti con successo e ora i container si stanno inizializzando:

Come puoi vedere ora, il tuo pod è attivo e funzionante. Tuttavia, nel caso in cui il tuo pod non si avvii, puoi eseguire i comandi seguenti a scopo di debug:

1. Per visualizzare informazioni dettagliate sul pod:

2.  Per visualizzare i log del pod:

Nota: Sono disponibili diverse opzioni per il comando “kubectl logs”, puoi eseguire il comando “kubectl logs –help” per saperne di più.

3. Per visualizzare i log di un container specifico nel pod:

Congratulazioni! Hai montato con successo il codice dell'applicazione e il servizio PHP-FPM è pronto a gestire le connessioni. Allo stesso modo, puoi creare il tuo Deployment Nginx.

Passo 5: Crea il tuo Deployment Nginx

Questo passo ti guiderà su come configurare Nginx utilizzando una ConfigMap. Una ConfigMap mantiene tutte le configurazioni richieste in un formato chiave-valore che verrà utilizzato in altre definizioni di oggetti Kubernetes. Con questo approccio, avrai la flessibilità di riutilizzare o sostituire l'immagine Nginx con una versione diversa, quando necessario. Puoi aggiornare la ConfigMap e replicherà automaticamente tali modifiche a qualsiasi pod che monta questa ConfigMap.

Per iniziare, apri un file nginx_configmap.yaml nel tuo editor:

Ora, assegna a questa ConfigMap il nome nginx-config e aggiungila al microservizio tier: backend:

Inoltre, puoi aggiungere i dati alla ConfigMap. Aggiungi una chiave denominata config e aggiungi l'intero contenuto del file di configurazione di Nginx come valore.

Poiché è possibile per Kubernetes instradare le richieste ai rispettivi host per un servizio, puoi inserire il nome del tuo servizio PHP-FPM sotto il parametro fastcgi_pass invece del suo indirizzo IP. Aggiungi le seguenti righe di codice al tuo file nginx_configMap.yaml :

Once completed, your nginx_configMap.yaml file will look like this:

Ora puoi salvare e uscire dall'editor. Ora esegui il kubectl apply comando per creare il ConfigMap:

Successivamente, dovresti vedere il seguente output sullo schermo:

Hai creato con successo la tua Configmap di Nginx. Ora puoi creare il tuo Deployment di Nginx.

Creazione del Deployment Nginx

Per iniziare, puoi creare un nuovo file chiamato nginx_deployment.yaml nell'editor:

Assegna a questo Deployment il nome nginx e aggiungi l'etichetta tier: backend ad esso:

Successivamente, specifica il numero di repliche aggiungendo il campo replica nella spec del Deployment e aggiungi le etichette app: nginx e tier: backend ad esso:

Allo esso modo, aggiungi il template del pod. Assicurati di aggiungere le stesse etichette che avevi aggiunto nel selector.matchLabels del Deployment. Puoi aggiungere quanto segue:

Consenti a Nginx di accedere alla PVC code creata in precedenza aggiungendo i seguenti parametri sotto spec.template.spec.volumes:

Nota: Un pod può montare la ConfigMap come volume. Specificando il nome del file e la chiave, creeremo un file con il suo valore come contenuto. Per utilizzare questa ConfigMap, imposta il percorso sul nome del file che contiene i contenuti della chiave. Puoi creare un file site.conf dalla chiave config. Aggiungi quanto segue sotto spec.template.spec.volumes:

Attenzione: il contenuto della chiave sostituirà il mountPath del volume se non viene specificato un file. In altre parole, perderai tutti i contenuti nella cartella di destinazione se non viene specificato esplicitamente un percorso.

Ora, specifica il nome, l'immagine e la porta che desideri utilizzare nel tuo pod. Qui utilizzeremo l'immagine nginx:1.7.9 e la porta 80. Aggiungili sotto spec.template.spec sezione:

Inoltre, monta il volume del codice su /code poiché sia Nginx che PHP-FPM dovranno accedere al file nello stesso percorso:

L'immagine nginx-1.7.9 carica automaticamente qualsiasi file di configurazione nella cartella /etc/nginx/conf.d. Ora, se montiamo il volume di configurazione in questa directory, creerà /etc/nginx/conf.d/site.conf. Aggiungi quanto segue sotto la sezione volumeMount:

Dopo aver completato tutti i passaggi precedenti, il tuo file nginx_deployment.yaml dovrebbe apparire così:

Ora puoi salvare e chiudere il file e creare il Deployment di Nginx eseguendo il seguente comando:

In caso di esecuzione corretta del comando, dovresti vedere il seguente output:

Puoi elencare tutti i tuoi Deployment eseguendo i comandi seguenti:

Ora dovresti vedere sia il Deployment di Nginx che quello di PHP-FPM:

kubernetes deployment status

Inoltre, puoi eseguire il seguente comando per elencare i pod gestiti da entrambi i Deployment sopra elencati:

Vedrai che entrambi i tuoi pod sono attivi e funzionanti come segue:

kubernetes pod status

Poiché tutti i tuoi oggetti Kubernetes sono attivi a questo punto, ora puoi accedere al servizio Nginx sul tuo browser.

Esegui il seguente comando per elencare i servizi:

Prendi nota dell'External IP del tuo servizio Nginx:external ip of nginx Deploy a PHP Application on Kubernetes Cluster with Ubuntu 18.04

Ora, utilizzando questo External IP del servizio Nginx, puoi visitare il tuo server digitando http://your_public_ip sul tuo browser. Dovresti essere in grado di vedere l'output di php_info() che conferma che i tuoi servizi Kubernetes sono attivi e funzionanti.

Conclusione

In questo tutorial, per gestire i tuoi servizi PHP-FPM e Nginx in modo indipendente, hai containerizzato i due servizi. In questo modo, non solo migliorerai la scalabilità del tuo progetto, ma utilizzerai anche le tue risorse in modo efficiente. Hai anche imparato come creare uno storage locale e un Persistent Volume per memorizzare il codice della tua applicazione su un volume ed essere in grado di aggiornare facilmente i tuoi servizi in futuro. In questo modo, hai migliorato l'usabilità e la manutenibilità del tuo codice.

Inoltre, dai un'occhiata agli altri nostri tutorial incentrati su Docker e Kubernetes che puoi trovare sul nostro blog:

Buon computing!

author

Hark Labs

Autore · CloudSigma

Preslav Dobrev è un designer creativo presso CloudSigma, con un focus su un'identità aziendale coerente attraverso l'uso di canali di marketing tradizionali e innovativi. È abile nel fondere la visione artistica con il marketing strategico per creare narrazioni di brand di grande impatto.

Commenti

Ancora nessun commento. Scrivi il primo.