A logo showing the text blog.marcnuri.com
English
Inicio»Java»Kubernetes 1.19 Ingress API desde Java con YAKC

Entradas Recientes

  • Fabric8 Kubernetes Client 7.2.0 está disponible!
  • Conectarse a un servidor MCP con JavaScript y AI SDK
  • Conectarse a un servidor MCP con JavaScript y LangChain.js
  • El Futuro de las Herramientas para Desarrolladores en la era de la IA
  • Conectarse a un servidor Model Context Protocol (MCP) con Java y LangChain4j

Categorías

  • Antiguo
  • Front-end
  • Go
  • Herramientas
  • Industria y negocios
  • Inteligencia Artificial
  • Java
  • JavaScript
  • Operaciones
  • Personal
  • Proyectos personales

Archivos

  • mayo 2025
  • abril 2025
  • marzo 2025
  • febrero 2025
  • enero 2025
  • diciembre 2024
  • noviembre 2024
  • agosto 2024
  • junio 2024
  • mayo 2024
  • abril 2024
  • marzo 2024
  • febrero 2024
  • enero 2024
  • diciembre 2023
  • noviembre 2023
  • octubre 2023
  • septiembre 2023
  • agosto 2023
  • julio 2023
  • junio 2023
  • mayo 2023
  • abril 2023
  • marzo 2023
  • febrero 2023
  • enero 2023
  • diciembre 2022
  • noviembre 2022
  • octubre 2022
  • agosto 2022
  • julio 2022
  • mayo 2022
  • marzo 2022
  • febrero 2022
  • enero 2022
  • diciembre 2021
  • noviembre 2021
  • octubre 2021
  • septiembre 2021
  • agosto 2021
  • julio 2021
  • diciembre 2020
  • octubre 2020
  • agosto 2020
  • junio 2020
  • mayo 2020
  • marzo 2020
  • febrero 2020
  • enero 2020
  • noviembre 2019
  • octubre 2019
  • julio 2019
  • diciembre 2018
  • agosto 2018
  • julio 2018
  • junio 2018
  • mayo 2018
  • marzo 2018
  • febrero 2018
  • noviembre 2017
  • octubre 2017
  • agosto 2017
  • julio 2017
  • enero 2017
  • julio 2016
  • enero 2016
  • diciembre 2015
  • noviembre 2015
  • diciembre 2014
  • marzo 2014
  • febrero 2011
  • junio 2008
  • mayo 2008
  • abril 2008
  • enero 2008
  • junio 2007
  • mayo 2007
  • abril 2007
  • marzo 2007

Kubernetes 1.19 Ingress API desde Java con YAKC

2020-08-30 en Java etiquetado Cliente / Cloud / Ingress / Java / Kubernetes / OpenShift / YAKC por Marc Nuri | Última actualización: 2021-05-23
English version

Introducción

Kubernetes v1.19.0 acaba de ser lanzado. Entre las nuevas funcionalidades y mejoras destaca la graduación del Ingress API a V1 (#1453).

Pese a que los recursos de tipo Ingress se usan por la mayoría de usuarios de Kubernetes, y que esta funcionalidad se introdujo en 2015, no ha sido hasta la reciente version 1.19 en la que se ha hecho globalmente disponible.

Un Ingress es “Un objeto API que gestiona acceso externo a los servicios de un cluster, normalmente HTTP”. En otras palabras, los Ingress permiten exponer públicamente los servicios gestionados por Kubernetes.

En este artículo os mostraré como utilizar YAKC para crear un Ingress empleando la v1 del API presentado en Kubernetes v.19.0.

Imagen de un diagrama de YAKC interactuando con la API de Ingress en Kubernetes
Imagen de un diagrama de YAKC interactuando con la API de Ingress en Kubernetes

Ingress desde Java

Podéis emplear los Ingress para dotar de URLs externas y accesibles, además de balanceo de tráfico a los recursos de tipo Service. Asimismo, los recursos Ingress son útiles para proveer alojamiento virtual basado en nombres y terminación SSL.

El recurso Ingress requiere un IngressController para poder ser utilizado. En la actualidad, Kubernetes soporta y mantiene oficialmente controladores GCE y NGINX.

Destacar que Ingress v1 introduce varios cambios respecto a la versión v1beta1 Uno de los más importantes es que el campo pathType ahora es obligatorio y ya no tiene un valor por defecto.

El siguiente YAML describe un Ingress empleando un IngressController NGINX:

1apiVersion: networking.k8s.io/v1
2kind: Ingress
3metadata:
4 name: ingress-example
5 namespace: default
6spec:
7 ingressClassName: nginx
8 rules:
9   - host: "*.foo.com"
10     http:
11       paths:
12         - path: /
13           pathType: Exact
14           backend:
15             serviceName: path-exact
16             servicePort: 80

De forma similar, se puede definir el mismo Ingress y obtener el mismo resultado empleando YAKC desde Java:

1new KubernetesClient().create(NetworkingV1Api.class).createNamespacedIngress("default", Ingress.builder()
2  .metadata(ObjectMeta.builder()
3    .name("ingress-example")
4    .build())
5  .spec(IngressSpec.builder()
6    .addToRules(IngressRule.builder()
7      .host("*.foo.com")
8      .http(HTTPIngressRuleValue.builder()
9        .addToPaths(HTTPIngressPath.builder()
10          .path("/")
11          .pathType("Exact")
12          .backend(IngressBackend.builder()
13            .service(IngressServiceBackend.builder()
14              .name("path-exact")
15              .port(ServiceBackendPort.builder()
16                .number(80)
17                .build())
18              .build())
19            .build())
20          .build())
21        .build())
22      .build())
23    .build())
24  .build()
25).get();

La principal ventaja de utilizar Java (Kubernetes Client YAKC) es que puedes realizar estas tareas de forma dinámica. Por ejemplo, puedes implementar un operador basado en Java que cree automáticamente un nuevo Ingress cada vez que se de de alta un nuevo Service en el cluster.

Conclusión

Kubernetes 1.19 marca la disponibilidad general de Ingress networking.k8s.io/v1. En esta publicación os he mostrado como utilizar YAKC para crear un Ingress desde Java.

Puedes encontrar más información en la página del proyecto de YAKC en GitHub. También puedes analizar el código de prueba aquí.

Twitter iconFacebook iconLinkedIn iconPinterest iconEmail icon

Navegador de artículos
Accede al API de Kubernetes desde un Pod con JavaApache Camel y Casandra en un cluster Kubernetes
© 2007 - 2025 Marc Nuri