Tutorial - Desplegar tu primera aplicación
Objetivos
Este tutorial le guía paso a paso para realizar su primer despliegue en un clúster de Managed Kubernetes. Al finalizar esta guía, habrá:
- Desplegado una aplicación web sencilla.
- Expuesto esta aplicación dentro del clúster mediante un Service.
- Hecho accesible la aplicación desde Internet mediante un Ingress.
Requisitos previos
- Ha configurado su acceso al clúster como se describe en la guía de inicio rápido.
- Dispone de un namespace en el que 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 están en ejecución:
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 (Servicio)
Para permitir que los distintos componentes del clúster se comuniquen con nuestra aplicación, debemos crear un Servicio.
-
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 es ahora accesible mediante el nombre
hello-world-service.hello-worlddesde cualquier otro pod del clúster.
Paso 4: Hacer que la aplicación sea accesible desde Internet (Ingress)
Para exponer nuestro servicio en Internet, utilizaremos un recurso Ingress. La oferta Managed Kubernetes proporciona varios ingressClassName preconfigurados. Utilizaremos nginx-external para una exposición pública.
-
Crea un archivo
ingress.yaml. Recuerda reemplazarvotre-cluster-idpor el identificador de tu 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 -
Aplica el manifiesto :
kubectl apply -f ingress.yaml
Paso 5: Verificar el acceso
Una entrada DNS "*" ya apunta todas las URL que terminan en ".external.votre-cluster-id.mk.ms-cloud-temple.com" a 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...
:::warning[Para ir más allá: la seguridad en producción ] Este tutorial le ha mostrado las bases del despliegue. Para un entorno de producción, es crucial aplicar medidas de seguridad adicionales:
- Utilice imágenes seguras : Priorice imágenes provenientes de su registro de empresa 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 (ej: prohibir contenedores "root", exigir
requestsylimitsde recursos, etc.). :::
Limpieza
Para eliminar todos los recursos que ha creado durante este tutorial, simplemente puede eliminar el espacio de nombres:
kubectl delete namespace hello-world
¡Enhorabuena, ha desplegado y expuesto su primera aplicación en Managed Kubernetes!