Introducción
En la actualidad, desplegar aplicaciones en entornos de Kubernetes es una práctica común para garantizar escalabilidad, resiliencia y eficiencia. Sin embargo, una de las grandes dudas que enfrentan desarrolladores y administradores de sistemas es cómo exponer estas aplicaciones desde Kubernetes hacia el exterior, facilitando su acceso desde cualquier lugar fuera del clúster. Este proceso es fundamental para que las aplicaciones puedan ser consumidas por usuarios o sistemas externos.
En este artículo, exploraremos en profundidad cómo lograr este objetivo usando Data Center Designer (DCD) en conjunto con Kubernetes gestionado, particularmente en entornos basados en Arsys Cloud. Aprenderás paso a paso cómo configurar los servicios para que sean accesibles desde fuera del clúster, entenderás qué recursos se crean automáticamente y conocerás buenas prácticas para una exposición segura y eficiente.
¿Por qué exponer aplicaciones desde Kubernetes?
El principal objetivo de un clúster Kubernetes es gestionar la ejecución y escalabilidad de aplicaciones en contenedores. No obstante, desplegar una app sin que pueda ser accesible desde fuera limita su utilidad práctica.
Al exponer una aplicación fuera del clúster, permitimos que clientes, usuarios y otros sistemas puedan interactuar con ella. Esta es una necesidad crítica en aplicaciones web, APIs, microservicios y servicios en la nube.
Escenarios comunes para exponer servicios
- Acceso público a una aplicación web o API REST.
- Integración con servicios externos o partners.
- Testing desde entornos externos de desarrollo o QA.
- Monitorización y gestión remota de servicios.
Conceptos clave en Kubernetes para exposición de servicios
Antes de entrar en la configuración, es crucial tener claros ciertos elementos de Kubernetes:
Pods y Deployments
Los Pods son las unidades básicas que ejecutan las aplicaciones contenidas. Los Deployments aseguran que los pods estén disponibles y escalados según demanda.
Services (Servicios)
Un Service en Kubernetes es un recurso que abstrae y administra el acceso a uno o varios pods. Es decir, un Service proporciona un punto estable para comunicarse con los pods, ya que estos pueden cambiar o reaparecer en diferentes nodos.
Tipos de servicios más utilizados para exposición
- ClusterIP (por defecto): Asigna una IP accesible únicamente desde dentro del clúster.
- NodePort: Expone el servicio en un puerto específico de cada nodo del clúster, accesible desde fuera pero con ciertas limitaciones.
- LoadBalancer: Solicita a la infraestructura subyacente crear un balanceador de carga externo con una IP pública que redirige al servicio del clúster.
- ExternalName: Asocia un servicio a un nombre DNS externo.
¿Por qué utilizar LoadBalancer para exponer servicios en DCD?
En ambientes de Kubernetes gestionados dentro de Data Center Designer, la opción más sencilla y recomendada para exponer servicios al exterior es mediante servicios LoadBalancer. Esto garantiza que el clúster interactúe automáticamente con la infraestructura de red del centro de datos virtual para crear y mantener un balanceador de carga público.
Con LoadBalancer, evitas configuraciones manuales complejas de red y firewall, ya que Kubernetes y DCD gestionan automáticamente:
- Asignación de IP pública.
- Rutas y reglas de balanceo de carga.
- Mantenimiento y disponibilidad del punto de acceso externo.
Proceso paso a paso para exponer una aplicación mediante Service LoadBalancer en Kubernetes con DCD
1. Verificar el Service actual
Cuando se crea una aplicación con Kubernetes, normalmente los servicios tienen el tipo ClusterIP
. Esto implica que la IP es interna y no puede ser utilizada para acceder desde el exterior.

Para comprobarlo, ejecuta:
kubectl get services
Observarás que la columna EXTERNAL-IP muestra none o <none>.
2. Modificar el manifiesto YAML del Service
Abre el archivo YAML que define el Service. Allí cambia el campo type
a LoadBalancer
:
apiVersion: v1 kind: Service metadata: name: hello-world-service spec: selector: app: hello-world ports: - protocol: TCP port: 80 targetPort: 8080 type: LoadBalancer
Mediante esta simple línea, Kubernetes sabrá que tu servicio debe ser expuesto a una IP pública.
3. Aplicar la configuración
Guarda el archivo y aplica los cambios con kubectl:
kubectl apply -f hello-world-service.yaml
Kubernetes enviará la solicitud para crear el balanceador de carga en el entorno DCD.
4. Esperar la asignación de la IP externa
Con el comando kubectl get services
, monitorea la columna EXTERNAL-IP.
Inicialmente aparecerá pending, y después de algunos minutos (generalmente menos de 10), aparecerá la IP pública asignada. Esto implica que el balanceador de carga ya está operativo.
5. Probar el acceso externo
Desde cualquier máquina externa al clúster, realiza una petición HTTP a la IP pública mostrada para comprobar que la aplicación responde correctamente.
Visualización y gestión en Data Center Designer (DCD)
Al cambiar el tipo de servicio a LoadBalancer
, Kubernetes encargado de interactuar con DCD crea automáticamente los recursos necesarios a nivel de infraestructura.

En el centro de datos virtual de DCD podrás visualizar:
- El cluster gestionado de Kubernetes y sus nodos.
- El pool de nodos conectados a Internet mediante la IP pública asignada.
- Los recursos de red y balanceo asociados, con indicación de que son manejados por Kubernetes.
Importancia de la visibilidad en DCD
Permite monitorear la estructura, asegurarse que los recursos están correctamente conectados y facilita la gestión integral de la infraestructura y aplicaciones.
Tabla comparativa: tipos de Service y sus características
Tipo de Service | Accesibilidad | Configuración | Uso recomendado | Ejemplo típico |
---|---|---|---|---|
ClusterIP | Solo dentro del clúster | Automática (por defecto) | Comunicación interna entre pods | Bases de datos internas, APIs internas |
NodePort | Externamente accesible via puerto fijo del nodo | Manual (definir puerto) | Entornos simples o pruebas | Acceso rápido sin balanceo |
LoadBalancer | Acceso por IP pública automática | Automática con integración DCD | Producción, servicios públicos | Web apps, APIs públicas, microservicios |
ExternalName | Redirige a nombre DNS externo | Manual | Integración con servicios externos | Redirección DNS, servicios remotos |
Buenas prácticas para exponer servicios Kubernetes en DCD
- Usar LoadBalancer solo para servicios públicos necesarios. Evitar exponer innecesariamente para reducir la superficie de ataque.
- Configurar reglas de firewall y seguridad en DCD para limitar el acceso solo a IPs o rangos confiables cuando sea posible.
- Implementar HTTPS y certificados digitales para proteger la comunicación externa.
- Monitorear el estado y consumo del balanceador para ajustar recursos y evitar sobrecostos.
- Automatizar despliegues con CICD para mantener configuraciones consistentes y reproducibles.
Consideraciones y limitaciones a tener en cuenta
Aunque la integración entre Kubernetes y DCD facilita la exposición de servicios, es importante contemplar:
- El tiempo de aprovisionamiento puede variar, por lo que la IP externa no aparece inmediatamente.
- Las IP públicas asignadas pueden cambiar si el servicio se elimina y vuelve a crear.
- Costos asociados por uso de recursos públicos (balanceadores y direcciones IP).
- Configuración adicional para seguridad avanzada, como reglas WAF o políticas de red.
Explorando la configuración YAML: ejemplo detallado
A continuación se muestra un ejemplo completo de manifiesto YAML para un servicio LoadBalancer, que expone un pod que corre en el puerto 8080 al público por el puerto 80:
apiVersion: v1 kind: Service metadata: name: hello-world-service labels: app: hello-world spec: type: LoadBalancer selector: app: hello-world ports: - protocol: TCP port: 80 # Puerto que se expondrá externamente targetPort: 8080 # Puerto donde está corriendo la aplicación en el pod
Este manifiesto debe aplicarse con kubectl apply -f
para crear o actualizar el servicio. Kubernetes gestionará automáticamente el balanceador de carga en DCD.
Visual Studio Code y Kubernetes: facilitando la gestión
El uso de herramientas como Visual Studio Code con extensiones para Kubernetes permite editar, validar y desplegar manifiestos YAML de manera ágil y confiable. Además alertan sobre posibles errores y permiten aplicar configuraciones sin salir del entorno de desarrollo.
Consejos para el uso eficiente de VS Code
- Instalar la extensión oficial de Kubernetes para autocompletado y validación.
- Versionar y almacenar manifiestos en repositorios Git para control y trazabilidad.
- Utilizar terminal integrada para ejecutar comandos kubectl sin cambiar de herramienta.
Seguridad y control de acceso en servicios LoadBalancer
Al abrir un servicio al exterior, la seguridad debe ser una prioridad. Algunas recomendaciones:
- Configurar Network Policies para restringir tráfico hacia y desde pods.
- Usar autenticación y autorización en la aplicación expuesta.
- Implementar TLS para cifrado de datos en tránsito.
- Monitorear logs y métricas para detectar accesos sospechosos.
Monitoreo y mantenimiento de servicios expuestos en DCD
Monitorizar la salud y rendimiento de los servicios es fundamental para garantizar disponibilidad y eficiencia. Dentro de DCD y Kubernetes es conveniente:
- Supervisar estados de pods y servicios con
kubectl
y herramientas complementarias. - Revisar métricas de tráfico, latencia y errores mediante sistemas de observabilidad como Prometheus.
- Automatizar alertas ante caídas o problemas de performance.
Ventajas de Kubernetes gestionado en Data Center Designer
Además del proceso simplificado de exposición de servicios, Kubernetes gestionado en DCD aporta beneficios clave:
- Integración nativa con la infraestructura de red y seguridad de Data Center Virtual.
- Automatización en creación y administración de balanceadores de carga y recursos.
- Escalabilidad y flexibilidad para adaptar clústeres a necesidades.
- Gestión centralizada desde un único panel de control fácil de usar.
Ejemplo práctico: exposición de API Hello World con LoadBalancer
Partiendo de un servicio interno hello-world-service
con tipo ClusterIP
, cambiamos a LoadBalancer
. Aplicamos:

kubectl apply -f hello-world-loadbalancer.yaml kubectl get services
Al cabo de unos minutos aparece algo así:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-world-service LoadBalancer 10.43.127.243 172.16.100.55 80:32000/TCP 5m
Probamos con: curl http://172.16.100.55/
obteniendo la respuesta esperada de la API.
Si deseas complementar esta guía visualizando cada paso en detalle, te invitamos a ver un video explicativo donde se muestra el proceso completo desde la consola hasta la interfaz de Data Center Designer.
Sección de palabras clave y explicación técnica
Servicios Kubernetes (Services)
Los servicios son recursos que agrupan un conjunto de pods para proveer una única IP y DNS dentro del clúster. Permiten estabilidad para los clientes que consumen la aplicación, ya que los pods pueden cambiar sin afectar el acceso.
Es crucial comprender que en Kubernetes no se exponen pods directamente al exterior, sino siempre a través de servicios configurados.
LoadBalancer
El tipo de servicio LoadBalancer solicita a la plataforma que cree un balanceador de carga accesible desde internet o redes externas. DCD está integrado para atender esta petición y crear automáticamente el recurso de red con IP pública.
Esto facilita la exposición sin necesidad de configurar manualmente equipamiento de red.
ClusterIP
Es el tipo de servicio predeterminado y solo expone la aplicación dentro del clúster, mediante una IP virtual interna. No está disponible para conexiones externas.
Node Pool
Un Node Pool es un conjunto de nodos que posee características comunes y sobre los que se despliegan pods. En DCD podemos observar la configuración y conexión a internet asignada al pool mediante la creación del balanceador de carga.
Kubernetes gestionado en DCD
Es una solución donde el clúster está alojado y administrado dentro de Data Center Designer, con integración total a los recursos disponibles, simplificando la administración y exposición de servicios.

Centro de Datos Virtual (Virtual Data Center)
Un entorno virtualizado que permite la creación y gestión centralizada de recursos informáticos, redes y almacenamiento de modo flexible y eficiente.
Pods
Son la mínima unidad ejecutable de Kubernetes que contiene uno o más contenedores. No se exponen directamente; siempre se accede a ellos a través de Services.
Preguntas Frecuentes (FAQ)
¿Qué lenguaje usa Kubernetes?
Kubernetes es un proyecto de código abierto desarrollado principalmente en Go (Golang), un lenguaje creado por Google basado en C que es ideal para aplicaciones de alto rendimiento y escalables. Gracias a su naturaleza open source, miles de desarrolladores pueden contribuir a su evolución.
¿Qué es un servicio en Kubernetes?
Un Service en Kubernetes es un recurso que define un punto de acceso estable para un conjunto de pods. Gracias a él se abstrae la complejidad de las instancias variables de pods y se habilita la comunicación dentro y fuera del clúster mediante diferentes tipos configurables de acceso.
¿Cómo funciona Kubernetes?
Kubernetes automatiza el despliegue, gestión y escalado de aplicaciones en contenedores mediante la agrupación de pods en clústeres. Su API abierta permite definir estados deseados y ajustarse dinámicamente a la demanda y disponibilidad de recursos, asegurando alta disponibilidad y eficiencia.
¿Por qué no se exponen los pods directamente al exterior?
Los pods en Kubernetes son efímeros, cambian de IP y estado frecuentemente. Exponerlos directamente provocaría endpoints inestables y fuga de control. En cambio, los Services proporcionan IPs y puntos de acceso estables además de opciones avanzadas para balanceo y políticas de acceso.
¿Cuánto tarda en aparecer la IP externa tras cambiar el tipo a LoadBalancer?
Normalmente, puede tardar entre 2 y 10 minutos. Es el tiempo que tarda Kubernetes gestionado en DCD para comunicarse con la infraestructura y aprovisionar el balanceador de carga.
¿Se puede restringir el acceso a la IP pública del LoadBalancer?
Sí. Aunque el servicio queda accesible públicamente, es recomendable configurar reglas de firewall, políticas de red y mecanismos de autenticación para minimizar la superficie de ataque.
¿Qué ocurre si elimino el servicio LoadBalancer y luego lo vuelvo a crear?
La IP pública generalmente cambiará ya que es asignada dinámicamente por la infraestructura. Para ambientes de producción, se recomienda usar mecanismos adicionales de DNS para manejar esta variabilidad.
¿Qué alternativas existen si mi proveedor no soporta LoadBalancer?
Se pueden usar servicios NodePort combinados con un balanceador externo o un Ingress Controller, que permite mayor control y reglas avanzadas de acceso. No obstante, en DCD el soporte para LoadBalancer simplifica estos procesos.

Conclusión
Exponer aplicaciones desplegadas en Kubernetes hacia el exterior puede parecer un desafío, pero con servicios gestionados y la integración con plataformas como Data Center Designer, se convierte en un proceso sencillo, automatizado y seguro. El uso del tipo de servicio LoadBalancer
permite obtener una IP pública y balanceo de carga sin configuraciones tediosas, optimizando la experiencia de desarrolladores y operadores.
¿Buscás implementar este tipo de soluciones en tu empresa? En Código6 podemos ayudarte. Somos especialistas en automatización, inteligencia artificial y transformación digital. Contactanos para comenzar tu proyecto hoy.
Leave A Comment