Karavan: el diseñador visual de Apache Camel que te ayudará a crear rutas de Camel en minutos.

Image

Apache Camel Karavan es una herramienta de integración para Apache Camel que tiene como objetivo aumentar la productividad del desarrollador a través de la visualización de rutas de Camel, Karavan es una herramienta gratuita y de código abierto que se puede utilizar en cualquier entorno de desarrollo, incluido VS Code y su instalación en Kubernetes o Docker.

Karavan proporciona una serie de características que hacen que sea una herramienta poderosa para la integración de aplicaciones, que incluyen:

  • Diseño visual de rutas de Apache Camel: Karavan proporciona una interfaz de arrastrar y soltar para diseñar rutas de Apache Camel, lo que facilita a los desarrolladores visualizar y comprender sus integraciones.
  • Integración con entornos de ejecución: Karavan se integra con los entornos de ejecución de Apache Camel más populares, como Spring Boot y Quarkus, lo que facilita el despliegue y la administración de integraciones de Apache Camel.
  • Pipelines para empaquetado, construcción de imágenes y despliegue: Karavan proporciona pipelines para empaquetar integraciones de Apache Camel en JAR o imágenes Docker, y desplegarlas en Kubernetes.
  • Desarrollo de Kamelets personalizados: Karavan proporciona soporte para el desarrollo de Kamelets personalizados, que son componentes de integración reutilizables que se pueden implementar y administrar fácilmente.

Nuestro primer paseo en Karavan.

Requerimientos

Cosas que vas a necesitar para el siguiente ejemplo:

  • Repositorio de Git – Usaré repositorio en Github.
  • Registro de imágenes – Usaré el registro de Github. – ghcr.io
  • Clúster de Kubernetes – Usaré una instancia de GKE.
  • Instalación de JBang.

Instalar Karavan en GKE.

NOTA: «Los siguiente comandos utilizarán tu entorno de Kubernetes asegurate de estar conectado a tu clúster.«

  • Configura tus variables de entorno
export GITHUB_USERNAME=<DUMMY_USERNAME>
export GITHUB_REPOSITORY=<URL_REPOSITORY>
export GITHUB_TOKEN=<GITHUB_TOKEN>
export REGISTRY_URL=ghcr.io
export REGISTRY_USERNAME=<DUMMY_USER>
export REGISTRY_PASSWORD=<DUMMY_PASSWORD>
  • Descarga el instalador de Maven Central
curl -O https://repo1.maven.org/maven2/org/apache/camel/karavan/karavan-installer/4.1.0/karavan-installer-4.1.0.jar
  • Instalar Karavan
jbang org.apache.camel.karavan:karavan-installer:4.1.0 --image-registry=$REGISTRY_URL --image-group=$GITHUB_USERNAME --git-repository=$GITHUB_REPOSITORY --git-username=$GITHUB_USERNAME --git-password=$GITHUB_TOKEN --image-registry-username=$REGISTRY_USERNAME --image-registry-password=$REGISTRY_PASSWORD

Con esta configuración Karavan almacenará tus proyectos en el repositorio de Github para tener un control de versiones y guardará las imágenes de contenedores en el registro de artefactos de Github.

Como resultado obtendremos la creación del namespace «karavan», asi como los pods de infinispan y karavan.

kubectl get pods -n karavan
NAME READY STATUS RESTARTS AGE
infinispan-0 1/1 Running 0 4m39s
karavan-79f4b44cdd-nd67r 1/1 Running 0 4m38s
  • Exponer servicio de Karavan para su consumo en internet
kubectl apply -f - <<EOF
---
apiVersion: "v1"
kind: "Service"
metadata:
name: "karavan-service"
namespace: "karavan"
labels:
app.kubernetes.io/runtime: "quarkus"
spec:
ports:
- protocol: "TCP"
port: 80
targetPort: 8080
selector:
app: "karavan"
type: "LoadBalancer"
loadBalancerIP: ""
EOF
  • Cuando el servicio se haya creado correctamente obtenemos la IP publica para consumir la consola de Karavan
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
infinispan ClusterIP 10.8.17.201 <none> 11222/TCP 10m
karavan-service LoadBalancer 10.8.29.44 38.45.107.134 80:31998/TCP 42s
  • Abre en tu navegador la siguiente dirección http://<MY_EXTERNAL_IP/ recuerda modificar por tu ip del servicio de Karavan
Image 3

Crear una nueva ruta de integración con Karavan.

  • En la página principal, da clic en «Create» para añadir un nuevo proyecto.
Screenshot 2023 11 30 At 10.06.51 p.m
  • Crea un nuevo proyecto con la siguiente información:
    • Name: hello-world
    • Description: Hello World Camel
    • Project ID: hello-world
Screenshot 2023 11 30 At 10.09.42 p.m
  • Clic sobre el nombre de nuestro proyecto para añadir nuevas rutas de Camel.
Screenshot 2023 11 30 At 10.16.53 p.m
  • Crea una nueva Integración, dando clic sobre «Create»
Screenshot 2023 11 30 At 10.20.16 p.m
  • Crea una nueva Integración con la siguiente información:
    • Type: Integration (camel.yaml)
    • Name: hello-world
Screenshot 2023 11 30 At 10.21.56 p.m
  • Ahora se ha creado un nuevo archivo con el nombre hello-world-camel.yaml. Dentro del proyecto hello-world camel, seleccione la pestaña «Routes» y, a continuación, «Create route».
Screenshot 2023 11 30 At 10.27.02 p.m
  • En la pestaña «Components», busque la palabra «direct».
Screenshot 2023 11 30 At 10.29.58 p.m
  • Haga clic en el icono «Direct». Introduzca internal-route en el campo de «Name» en los parámetros.
Screenshot 2023 11 30 At 10.34.02 p.m
  • Añada más pasos a la ruta. Haga clic en el icono + bajo «Direct».
Screenshot 2023 11 30 At 10.37.53 p.m
  • Seleccione la pestaña «Integration Patterns» y, a continuación, busque la palabra «Log».
Screenshot 2023 11 30 At 10.42.15 p.m
  • Configurar el componente «Log» para imprimir el mensaje «${body}».
Screenshot 2023 11 30 At 10.44.40 p.m

Crear una API REST.

  • Haga clic en la pestaña «REST» y, a continuación, seleccione «Create service».
Screenshot 2023 11 30 At 10.49.31 p.m
  • Selecciona «Add Method».
Screenshot 2023 11 30 At 10.52.52 p.m
  • Elija el método «Post».
Screenshot 2023 11 30 At 10.54.21 p.m
  • Vincule los parámetros REST a la ruta «direct». Dentro de la configuración del método POST, seleccione To : direct:internal-route. Esto dirigirá la solicitud entrante a internal-route.
Screenshot 2023 11 30 At 10.59.35 p.m
  • Puede inspeccionar el contenido del archivo Camel YAML haciendo clic en la pestaña «YAML», los ID se generan aleatoriamente.
Screenshot 2023 11 30 At 11.03.27 p.m

Ejecute y pruebe dentro de Karavan.

  • Ejecute su Ruta de Camel dando clic en el botón «Run».
Screenshot 2023 11 30 At 11.09.45 p.m
  • Después de que el programa compile, verá la siguiente pantalla.
Screenshot 2023 11 30 At 11.12.30 p.m
  • Dentro de GKE estará en ejecución un pod llamado «hello-world».
kubectl get pods -n karavan
hello-world 1/1 Running 0 2m3s
infinispan-0 1/1 Running 0 4h44m
karavan-79f4b44cdd-nd67r 1/1 Running 0 4h44m
  • Para probar de forma local haremos un port-forward usando kubectl.
kubectl port-forward hello-world 8080:8080 -n karavan
Forwarding from 127.0.0.1:8080 -> 8080
Forwarding from [::1]:8080 -> 8080
  • Mantenga el port-forward ejecutándose en el terminal actual. Abra una nueva terminal y pruebe el servicio utilizando siguiente comando cURL:
curl localhost:8080 -X POST -d "{\"hello\":\"world\"}" -H "Content-Type: application/json"
  • Recibirá como respuesta.
{"hello":"world"}
  • Vuelva a la aplicación de Karavan que ejecuta la ruta y verifique la impresión del Log donde ver el mensaje.
Screenshot 2023 11 30 At 11.20.38 p.m
  • Detenga la ejecución dando clic sobre el icono «Delete container».
Screenshot 2023 11 30 At 11.25.26 p.m

Gestione las versiones de código de su ruta de Camel

  • Clic sobre el nombre de nuestro proyecto.
Screenshot 2023 11 30 At 10.16.53 p.m 1
  • Almacene el código de su ruta en el repositorio de Github, dando clic sobre el boton «Push».
Screenshot 2023 11 30 At 11.39.58 p.m
  • Esto generará una nueva carpeta en su repositorio de Github.
Screenshot 2023 11 30 At 11.48.35 p.m

Construya imagen de contenedor y despliegue dentro de GKE.

  • Haga clic en la pestaña «Build» y, a continuación, de clic sobre el botón «Build».
Screenshot 2023 11 30 At 11.32.21 p.m
  • Después de que la tarea de construcción termine, verá la siguiente pantalla.
Screenshot 2023 11 30 At 11.56.00 p.m
  • Como resultado el servicio creara una nueva imagen de contenedor en el registro configurado en la instalación.
Screenshot 2023 12 01 At 12.00.21 a.m
  • Configure GKE para permitir el despliegue de la imagen de contenedor.
kubectl create secret docker-registry myregistrykey --docker-server=ghcr.io \
--docker-username=$REGISTRY_USERNAME --docker-password=$REGISTRY_PASSWORD \
--docker-email=<MY_EMAIL> -n karavan
  • Permita hacer pull de la imagen de contenedor en su namespace.
kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "myregistrykey"}]}'
  • Para probar de forma local haremos un port-forward usando kubectl.
kubectl port-forward deployment/hello-world 8080:8080 -n karavan
Forwarding from 127.0.0.1:8080 -> 8080
Forwarding from [::1]:8080 -> 8080
  • Mantenga el port-forward ejecutándose en el terminal actual. Abra una nueva terminal y pruebe el servicio utilizando siguiente comando cURL:
curl localhost:8080 -X POST -d "{\"hello\":\"world\"}" -H "Content-Type: application/json"
  • Recibirá como respuesta.
{"hello":"world"}

¡Felicidades! Has desplegado con éxito un servicio usando Apache Camel y Karavan.

Conclusión

Karavan es una herramienta útil para desarrolladores que desean crear integraciones de aplicaciones de forma rápida y sencilla. Es una herramienta especialmente útil para desarrolladores que no están familiarizados con Apache Camel.

Recordemos que Karavan es un proyecto comunitario, pero existen soluciones empresariales que se basan en este proyecto, que complementan la solución brindando soporte, seguridad y estabilidad.

Para más información visite Talisman Cloud.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *