Tutorial - Desplegar su primera aplicación
Objetivos
Este tutorial le guía paso a paso para realizar su primer despliegue en un clúster Managed Kubernetes. Al final de esta guía, habrá:
- Desplegado una aplicación web sencilla.
- Expuesto esta aplicación dentro del clúster mediante un Servicio.
- Hecho que la aplicación sea accesible desde Internet mediante un Ingress.
Prerrequisitos
- Ha configurado su acceso al clúster como se describe en la guía de inicio rápido.
- Dispone de un namespace sobre el cual tiene permisos de despliegue. En este tutorial, utilizaremos un namespace llamado
hello-world.
Paso 1: Crear un namespace
Si aún no lo ha hecho, cree un namespace para aislar su aplicación.
kubectl create namespace hello-world
Paso 2: Desplegar una aplicación "Hello World"
Desplegaremos una aplicación de demostración que muestra una página web simple.
-
Cree un archivo llamado
deployment.yamlcon el siguiente contenido :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 -
Aplique este manifiesto a su clúster :
kubectl apply -f deployment.yaml -
Verifique que el despliegue se ha creado y que los pods se están ejecutando :
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
Paso 3: Exponer la aplicación en el clúster (Service)
Para permitir que los diferentes componentes del clúster se comuniquen con nuestra aplicación, debemos crear un Service.
-
Cree un archivo llamado
service.yaml:apiVersion: v1kind: Servicemetadata:name: hello-world-servicenamespace: hello-worldspec:selector:app: hello-worldports:- protocol: TCPport: 80targetPort: 80type: ClusterIP -
Aplique el manifiesto :
kubectl apply -f service.yamlSu aplicación ahora es accesible mediante el nombre
hello-world-service.hello-worlddesde cualquier otro pod del clúster.
Paso 4: Hacer la aplicación accesible desde Internet (Ingress)
Para exponer nuestro servicio en Internet, utilizaremos un recurso Ingress. La oferta Managed Kubernetes proporciona varias ingressClassName preconfiguradas. Utilizaremos nginx-external para una exposición pública.
-
Cree un archivo
ingress.yaml. Recuerde reemplazarvotre-cluster-idpor el identificador de su clúster (ej: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 -
Aplique el manifiesto:
kubectl apply -f ingress.yaml
Paso 5: Verificar el acceso
Una entrada DNS "*" ya dirige todas las URL que terminan en ".external.votre-cluster-id.mk.ms-cloud-temple.com" hacia la IP del ingress "external". Las aplicaciones publicadas en este sufijo DNS son, por lo tanto, directamente accesibles.
curl http://hello-world.external.votre-cluster-id.mk.ms-cloud-temple.com
Debería recibir una respuesta del servidor NGINX de demostración.
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...
⚠[Para ir más allá: la seguridad en producción] Este tutorial le ha mostrado los fundamentos del despliegue. Para un entorno de producción, es crucial aplicar medidas de seguridad adicionales:
- Utilice imágenes seguras: Prefiera imágenes provenientes de su registro empresarial seguro como Harbor en lugar de imágenes públicas.
- Controle los flujos de red: Implemente
NetworkPoliciespara restringir las comunicaciones únicamente a los flujos necesarios entre sus aplicaciones.- Aplique políticas de gobernanza: Utilice herramientas como Kyverno para imponer reglas de seguridad (por ejemplo: prohibir contenedores "root", exigir
requestsylimitsde recursos, etc.).- Aplique Pod Disruption Budget: un PDB asegura que sus aplicaciones permanezcan siempre disponibles.
Limpieza
Para eliminar todos los recursos que haya creado durante este tutorial, simplemente puede eliminar el namespace:
kubectl delete namespace hello-world
¡Felicidades, ha desplegado y expuesto su primera aplicación en Managed Kubernetes!