Ahoy, Helm Java!
Introducción
Cuando trabajamos con Kubernetes, Helm se ha convertido en una de las herramientas más utilizadas para gestionar el despliegue de aplicaciones. Helm actúa como un gestor de paquetes para Kubernetes, facilitando la definición, instalación y actualización de aplicaciones de Kubernetes, incluso las más complejas.
La interfaz de línea de comandos (CLI) de Helm es la herramienta principal para gestionar los charts de Helm. Normalmente, los usuarios invocan comandos de la CLI de Helm para crear, empaquetar, instalar, actualizar y revertir versiones de aplicaciones.
Si bien las CLIs son potentes, invocar comandos de Helm directamente desde tu aplicación Java puede que no siempre sea el enfoque más eficiente. Aquí es donde entra en juego Helm Java.
Helm Java es una biblioteca Java que proporciona una API fluida para interactuar con Helm. Bajo el capó, Helm Java utiliza enlaces nativos a la biblioteca Helm Go, por lo que se comporta exactamente como la CLI de Helm.
Primeros pasos
Para incorporar Helm Java en tu proyecto, simplemente añade la siguiente dependencia a tu pom.xml
si estás utilizando Maven:
<dependency>
<groupId>com.marcnuri.helm-java</groupId>
<artifactId>helm-java</artifactId>
<version>0.0.12</version>
</dependency>
Para proyectos Gradle, añade lo siguiente a tu build.gradle
:
implementation 'com.marcnuri.helm-java:helm-java:0.0.12'
¡Eso es todo! Ahora estás listo para ejecutar Helm desde Java.
Funcionalidades
El proyecto tiene como objetivo lograr la paridad de funcionalidades con la CLI de Helm. Puedes consultar la lista completa de comandos compatibles en el README.md del repositorio de GitHub de Helm Java.
En la actualidad, helm-java soporta la mayoría de los comandos estándar de Helm, incluyendo (entre muchos otros):
- install: Instalar un chart.
- upgrade: Actualizar un despliegue a una nueva versión de un chart.
- uninstall: Desinstalar un despliegue.
- test: Ejecutar las pruebas para un despliegue.
- push: Publicar un chart en un repositorio.
- dependency management: Gestionar las dependencias de un chart.
- repo management: Añadir, listar, eliminar, actualizar e indexar repositorios de charts.
- registry: Iniciar o cerrar sesión en un registro de Helm.
- lint: Comprobar un chart en busca de posibles problemas.
- package: Empaquetar un chart en un archivo.
- template: Renderizar templates de chart localmente.
Ejemplo de instalación con Helm
Supongamos que quieres instalar un chart de Helm desde un repositorio. Puedes lograrlo con el siguiente código:
import com.marcnuri.helm.Helm;
public static void main(String[] args) {
Helm.install("prometheus-community/prometheus")
.withName("my-prometheus")
.call();
}
Por otro lado, es posible que prefieras instalar un chart desde un directorio local:
public static void main(String[] args) {
new Helm(Paths.get("path", "to", "chart"))
.install()
.withName("my-chart")
.call();
}
La mayoría de los modificadores de comandos de instalación también están soportados:
public static void main(String[] args) {
new Helm(Paths.get("path", "to", "chart"))
.install()
.generateName()
.dependencyUpdate()
.set("value.key", "value")
.set("value.key.typed", 123)
.call();
}
Como puedes ver, helm-java proporciona una API fluida que te permite interactuar con Helm de una manera muy intuitiva.
Conclusión
En esta publicación, te he presentado a Helm Java, una excelente biblioteca que te permite interactuar con Helm desde tus aplicaciones Java. Si estás considerando automatizar las operaciones de Helm mientras utilizas Java, esta biblioteca es una excelente opción que probablemente satisfará tus necesidades y te ahorrará un valioso tiempo.
Por favor, prueba Helm Java y dinos qué piensas.