Tutorial - Distribuire la tua prima applicazione
Obiettivi
Questo tutorial vi guida passo dopo passo per realizzare il vostro primo deployment su un cluster Managed Kubernetes. Al termine di questa guida, avrete:
- Distribuito un'applicazione web semplice.
- Esposto questa applicazione all'interno del cluster tramite un Service.
- Reso l'applicazione accessibile da Internet tramite un Ingress.
Prerequisiti
- Hai configurato l'accesso al cluster come descritto nella guida di avvio rapido.
- Dispori di un namespace su cui hai i diritti di deployment. In questo tutorial, utilizzeremo un namespace denominato
hello-world.
Passo 1: Creare un namespace
Se non è già stato fatto, crea un namespace per isolare la tua applicazione.
kubectl create namespace hello-world
Passo 2: Distribuire un'applicazione "Hello World"
Distribuiremo un'applicazione dimostrativa che visualizza una semplice pagina web.
-
Crea un file denominato
deployment.yamlcon il seguente contenuto:apiVersion: apps/v1kind: Deploymentmetadata:name: hello-world-deploymentnamespace: hello-worldlabels:app: hello-worldspec:replicas: 2selector:matchLabels:app: hello-worldtemplate:metadata:labels:app: hello-worldspec:containers:- name: hello-worldimage: nginxdemos/hello:plain-textports:- containerPort: 80 -
Applica questo manifesto al tuo cluster:
kubectl apply -f deployment.yaml -
Verifica che il deployment sia stato creato e che i pod siano in esecuzione:
kubectl get deployment -n hello-world# Vous devriez voir votre déploiement avec 2/2 replicas prêts.NAME READY UP-TO-DATE AVAILABLE AGEhello-world-deployment 2/2 2 2 102skubectl get pods -n hello-world# Vous devriez voir deux pods avec le statut "Running".NAME READY STATUS RESTARTS AGEhello-world-deployment-669dfbd799-294zz 1/1 Running 0 2m21shello-world-deployment-669dfbd799-plcbg 1/1 Running 0 2m21s
Passo 3: Esporre l'applicazione nel cluster (Service)
Per consentire ai diversi componenti del cluster di comunicare con la nostra applicazione, dobbiamo creare un Service.
-
Crea un file denominato
service.yaml:apiVersion: v1kind: Servicemetadata:name: hello-world-servicenamespace: hello-worldspec:selector:app: hello-worldports:- protocol: TCPport: 80targetPort: 80type: ClusterIP -
Applica il manifesto :
kubectl apply -f service.yamlLa tua applicazione è ora accessibile tramite il nome
hello-world-service.hello-worldda qualsiasi altro pod del cluster.
Passo 4: Rendere l'applicazione accessibile da Internet (Ingress)
Per esporre il nostro servizio su Internet, utilizzeremo una risorsa Ingress. L'offerta Managed Kubernetes fornisce più ingressClassName preconfigurati. Utilizzeremo nginx-external per un'esposizione pubblica.
-
Create un file
ingress.yaml. Ricordatevi di sostituirevotre-cluster-idcon l'identificativo del vostro cluster (es:ctodev).apiVersion: networking.k8s.io/v1kind: Ingressmetadata:name: hello-world-ingressnamespace: hello-worldspec:ingressClassName: nginx-externalrules:- host: "hello-world.external.votre-cluster-id.mk.ms-cloud-temple.com" # changez moihttp:paths:- path: /pathType: Prefixbackend:service:name: hello-world-serviceport:number: 80 -
Applicare il manifest:
kubectl apply -f ingress.yaml
Passo 5: Verificare l'accesso
Un record DNS "*" indirizza già tutti gli URL che terminano con ".external.votre-cluster-id.mk.ms-cloud-temple.com" all'IP dell'ingress "external". Le applicazioni pubblicate su questo suffisso DNS sono quindi direttamente accessibili.
curl http://hello-world.external.votre-cluster-id.mk.ms-cloud-temple.com
Dovresti ricevere una risposta dal server NGINX di demo.
StatusCode : 200
StatusDescription : OK
Content : Server address: 10.247.1.223:80
Server name: hello-world-deployment-669dfbd799-plcbg
Date: 29/Oct/2025:15:40:04 +0000
URI: /
Request ID: 2df985e0630c3a123b5cde23b687a033
RawContent : HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 170
Cache-Control: no-cache
Content-Type: text/plain
Date: Wed, 29 Oct 2025 15:40:04 GMT
Expires: Wed, 29 Oct 2025 15:40:03 GMT
Server: ng...
⚠[Pour aller plus loin : la sécurité en production] Questo tutorial ti ha mostrato le basi del deployment. Per un ambiente di produzione, è cruciale applicare ulteriori misure di sicurezza:
- Utilizza immagini sicure : Privilegia immagini provenienti dal tuo registro aziendale sicuro come Harbor piuttosto che immagini pubbliche.
- Controlla i flussi di rete : Implementa
NetworkPoliciesper limitare le comunicazioni ai soli flussi necessari tra le tue applicazioni.- Applica politiche di governance : Utilizza strumenti come Kyverno per imporre regole di sicurezza (es: vietare i container "root", richiedere
requestselimitsdi risorse, ecc.).- Applica Pod Disruption Budget : un PDB garantisce che le tue applicazioni rimangano sempre disponibili.
Pulizia
Per eliminare tutte le risorse che hai creato durante questo tutorial, puoi semplicemente eliminare il namespace:
kubectl delete namespace hello-world
Congratulazioni, hai distribuito ed esposto la tua prima applicazione su Managed Kubernetes!