A logo showing the text blog.marcnuri.com
English
Inicio»Java»Desarrollo de aplicaciones Java cloud-native en Kubernetes con Okteto Cloud

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

Desarrollo de aplicaciones Java cloud-native en Kubernetes con Okteto Cloud

2023-11-11 en Java etiquetado Cliente / Cloud / Java / Eclipse JKube / Kubernetes por Marc Nuri | Última actualización: 2023-11-11
English version

Introducción

En este artículo, te mostraré cómo configurar un proyecto Java Spring Boot para el desarrollo inner loop en Okteto Cloud Kubernetes con Kubernetes Maven Plugin de Eclipse JKube. Este enfoque permite un desarrollo y pruebas eficientes en un entorno remoto de Kubernetes.

Requisitos

Necesitarás lo siguiente para poder seguir este artículo:

  • Java JDK
  • Cuenta de Okteto: Puedes registrarte gratis usando tu cuenta de GitHub. Okteto no requiere una tarjeta de crédito para empezar, esta es una de mis características favoritas de esta plataforma.
  • Okteto CLI y credenciales de Kubernetes: Sigue las instrucciones detalladas en la siguiente sección.
  • Acceso al registro de contenedores

Acceso a Kubernetes

Para poder desplegar en tu clúster de desarrollo, configura las credenciales de acceso a Kubernetes de la siguiente manera.

  1. Instala el CLI de Okteto descargando la última versión para tu plataforma desde la página de releases de GitHub.
  2. Configura la variable de entorno PATH para incluir el binario descargado.
  3. Comprueba que la instalación se ha realizado correctamente:
    bash
    $ okteto version
    okteto version 2.22.2

A continuación, necesitarás configurar las credenciales de acceso a Kubernetes. Okteto proporciona un mecanismo muy sencillo para ello. Solo necesitas descargar el archivo .kube/config personalizado, y configurar tu entorno de consola actual.

Si has iniciado sesión en tu cuenta de Okteto, puedes descargar el archivo desde tu panel de control.

Okteto Cloud Dashboard - Descargar fichero Kube Config
Okteto Cloud Dashboard - Descargar fichero Kube Config

A continuación, necesitarás configurar tu entorno para usar el archivo descargado:

MacOS/Linux

bash
export KUBECONFIG=$HOME/Downloads/okteto-kube.config:${KUBECONFIG:-$HOME/.kube/config}

Windows

cmd.exe
$Env:KUBECONFIG=("$HOME\Downloads\okteto-kube.config;$Env:KUBECONFIG;$HOME\.kube\config")

Por último, necesitas conectar el CLI de okteto a tu contexto en la nube ejecutando:

bash
okteto context use cloud.okteto.com

Una nueva ventana del navegador se abrirá, y se te pedirá que inicies sesión en tu cuenta de Okteto o te redirigirá automáticamente si ya has iniciado sesión.

La consola mostrará un mensaje similar a:

bash
✓  Context 'cloud.okteto.com' created
✓  Using user @ cloud.okteto.com

Container Registry

Okteto dispone de su propio registro de contenedores. Esto permite a cada namespace de Okteto disponer de un registro privado para almacenar sus imágenes de contenedor. Para el desarrollo inner loop, es muy interesante aprovechar esta característica.

La forma más sencilla de autenticarse sin persistir las credenciales en el proyecto o el entorno es usar el CLI de Docker para iniciar sesión en el registro.

bash
docker login registry.cloud.okteto.net

El nombre de usuario es el correo electrónico asociado a tu cuenta de Okteto, o tu nombre de usuario de GitHub.

Para el password, necesitarás generar un Personal Access Token de Okteto. Puedes generar uno desde tu panel de control de Okteto Cloud.

Okteto Cloud Dashboard - Personal Access Token
Okteto Cloud Dashboard - Personal Access Token

Si todo está configurado correctamente, ahora deberías estar conectado y poder subir una imagen al registro. Continuemos configurando el proyecto.

Configuración del proyecto

Continuemos configurando nuestro proyecto para que sea compatible con Okteto.

Comenzaremos configurando el plugin Maven de Kubernetes que se encargará de construir y desplegar nuestra aplicación en el clúster.

Kubernetes Maven Plugin

Si tu proyecto no está usando Kubernetes Maven Plugin, o incluso si ya lo está usando, necesitarás añadir la siguiente configuración a la sección de plugins:

pom.xml
<plugin>
  <groupId>org.eclipse.jkube</groupId>
  <artifactId>kubernetes-maven-plugin</artifactId>
  <version>1.18.1</version>
  <configuration>
    <resources>
      <annotations>
        <service>
          <property>
            <name>dev.okteto.com/auto-ingress</name>
            <value>true</value>
          </property>
        </service>
      </annotations>
      <imagePullPolicy>Always</imagePullPolicy>
    </resources>
  </configuration>
</plugin>

Comenzamos configurando el plugin para usar la última versión de JKube.

A continuación, añadimos ajustes específicos de Okteto para generar automáticamente el Ingress. Esto lo hacemos añadiendo una sección de configuración resources con una anotación annotation para los recursos de tipo service. En este caso, estamos configurando JKube para que añada automáticamente la anotación dev.okteto.com/auto-ingress: true al servicio.

Teniendo en cuenta que estamos desarrollando para el inner loop, y el proyecto tiene una versión -SNAPSHOT, JKube etiqueta automáticamente la imagen del contenedor generado con latest. Al añadir una Image Pull Policy de Always, estamos indicando a Kubernetes/Okteto que siempre descargue la última versión de la imagen. De esta forma, cualquier cambio que realices durante tu ciclo de desarrollo iterativo, se reflejará en la versión desplegada de la aplicación.

Además de la configuración del plugin, también necesitaremos añadir algunas propiedades al fichero pom.xml del proyecto:

pom.xml
<properties>
  <jkube.generator.name>
    registry.cloud.okteto.net/your-namespace/jkube-okteto-demo
  </jkube.generator.name>
</properties>

Para poder usar el registro de contenedores de Okteto, necesitaremos configurar un nombre específico para nuestra imagen. En las propiedades del proyecto, debemos establecer un nombre de imagen para el registro registry.cloud.okteto.net, y nuestro namespace. En el fragmento anterior, necesitas reemplazar your-namespace por el namespace de tu usuario.

Desplegando la aplicación

Con tu entorno configurado, ya estás listo para desplegar la aplicación. Si has configurado tu entorno como se especifica en la sección de acceso a Kubernetes, ahora puedes desplegar la aplicación ejecutando:

bash
mvn clean package k8s:build k8s:push k8s:resource k8s:apply

Tu despliegue debería de mostrarse en el panel de control de Okteto Cloud:

Okteto Cloud Dashboard - JKube Okteto deployment
Okteto Cloud Dashboard - JKube Okteto deployment

Una vez el Pod se haya iniciado, deberías poder ejecutar cURL sobre el endpoint expuesto:

bash
$ curl https://jkube-okteto-your-namespace.cloud.okteto.net/
Hello Okteto!

Como estamos usando JKube, todos los goals específicos para desarrolladores como depurar (k8s:debug), recuperar los logs (k8s:log), etc, están disponibles.

Conclusión

En este artículo, te he mostrado cómo configurar un proyecto Java Maven para el desarrollo inner loop en Okteto Cloud Kubernetes con Kubernetes Maven Plugin de Eclipse JKube. Desarrollar y probar tu aplicación cloud-native en un clúster remoto es fundamental hoy en día. Como puedes ver, JKube proporciona una forma muy sencilla de hacerlo posible.

Puedes encontrar el código fuente completo de este artículo en GitHub.

Referencias

  • Documentación de Okteto Cloud: Descarga tus credenciales de Kubernetes
  • Documentación de Okteto Cloud: Okteto Registry
  • Documentación de Kubernetes Maven Plugin
Twitter iconFacebook iconLinkedIn iconPinterest iconEmail icon

Navegador de artículos
Cómo crear un plugin de kubectl con client-go para eliminar un NamespaceEclipse JKube 1.15 está disponible!
© 2007 - 2025 Marc Nuri