Instalar Apache Camel K en Google Kubernetes Engine usando Google Cloud Artifact Registry.

Pexels Gu Bra 19073642

Camel K es una plataforma de integración de código abierto que permite crear, implementar y administrar servicios de integración en Kubernetes. Es una forma sencilla y eficaz de conectar sistemas y datos, y puede utilizarse para una amplia gama de tareas, como la integración de datos, la orquestación de eventos.

En este artículo, veremos cómo instalar Camel K sobre Google Kubernetes Engine (GKE). GKE es un servicio de Kubernetes administrado de Google que facilita la creación y el mantenimiento de clústeres de Kubernetes.

Configurar Google Artifact Registry

  • Habilitar el servicio de Artifact Registry en tu proyecto de GCP.
gcloud services enable artifactregistry.googleapis.com
  • Crear un repositorio de docker.
gcloud artifacts repositories create my-docker-repo \
    --repository-format=docker \
    --location=us-central1 \
    --description="My Docker Repository"

Con el comando anterior se ha creado un nuevo registro en la region us-central1 con la siguiente dirección:

  • us-central1-docker.pkg.dev/<PROJECT_ID>/my-docker-repo

Donde PROJECT_ID es el proyecto de GCP.

Configurar accesos para Artifact Registry

Existen varios métodos de autenticación para ejecutar operaciones sobre el registro, algunos de ellos se describen en la documentación.

Para este escenario usaremos «Service account key« Una llave de cuenta de servicio es un par de llaves de larga duración que puede utilizar como credencial para una cuenta de servicio.

  • Configura tu variable de entorno
export PROJECT_ID=<GCP_PROJECT_ID>

Donde GCP_PROJECT_ID es el proyecto de Google Clou.
  • Crear una cuenta de servicio
gcloud iam service-accounts create camel-k-builder \
    --description="Service Account for Camel K" \
    --display-name="Camel K Builder"

Asegurate de tener el rol de «Artifact Registry Writer» para hacer lectura y escritura de artefactos.

gcloud artifacts repositories add-iam-policy-binding my-docker-repo --location=us-central1 --member=serviceAccount:camel-k-builder@$PROJECT_ID.iam.gserviceaccount.com --role=roles/artifactregistry.writer
  • Crear llave para el service account
gcloud iam service-accounts keys create camel-k-sa.json --iam-account=camel-k-builder@$PROJECT_ID.iam.gserviceaccount.com

Como resultado de la ejecución nos descargara un archivo .json que utilizaremos para configurar nuestro clúster de Kubernetes.

Instalar CLI Camel K.

Descargue Kamel CLI del siguiente enlace y descomprima el archivo. Contiene un pequeño archivo binario llamado kamel que debes poner en la ruta de tu sistema. Por ejemplo, si usas Linux, puedes poner kamel en /usr/bin.

Verifique su instalación escribiendo en una terminal el comando kamel, debería de ver una salida similar a esta

$ kamel
Apache Camel K is a lightweight integration platform, born on Kubernetes, with serverless
superpowers.

Usage:
  kamel [command]
...

Instalar Camel K en GKE

  • Crear un namespace dentro de GKE.
kubectl create ns camelk
  • Crear secreto para poder interactuar con Artifact Registry. Aquí usaremos nuestro archivo .json del service account
kubectl create secret docker-registry gcr-json-key \
  --docker-server=us-central1-docker.pkg.dev \
  --docker-username=_json_key \
  --docker-password="$(cat camel-k-sa.json)" \
  --docker-email=camel-k-builder@$PROJECT_ID.iam.gserviceaccount.com \
  -n camelk
  • Instalar Camel K en el namespace mediante Camel K CLI.
kamel install --registry us-central1-docker.pkg.dev --organization $PROJECT_ID/my-docker-repo --registry-secret gcr-json-key -n camelk
  • Valide que el operador de camel k se encuentre correctamente instalado.
kubectl get pods -n camelk
NAME                                READY   STATUS    RESTARTS   AGE
camel-k-operator-6998f57bc6-9pgb9   1/1     Running   0          30s
  • También el operador habrá generado un recurso IntegrationPlatform para el namespace (camel-k).
kubectl get integrationplatform -n camelk
NAME      PHASE   BUILD STRATEGY   PUBLISH STRATEGY   REGISTRY ADDRESS             DEFAULT RUNTIME
camel-k   Ready   routine          Spectrum           us-central1-docker.pkg.dev   3.2.0

Ejecuta una Integración con Camel K

  • Descarguemos un código de ejemplo
git clone https://github.com/apache/camel-karavan.git
  • Utilicemos el código ejemplo dentro de la carpeta karavan-demo
cd camel-karavan/karavan-demo/hello-world
  • Ejecuta la integración usando Camel K CLI
kamel run hello-world.yaml --property file:application.properties -n camelk
  • Camel K dentro de Artifact Registry publicara una nueva imagen por cada nueva integración
Image 1
  • Como resultado de la ejecución se creará un nuevo pod con la integración.
kubectl get pod -n camel
NAME                                READY   STATUS    RESTARTS   AGE
camel-k-operator-7bf97b8d98-zf4q6   1/1     Running   0          3m29s
hello-world-8888b85c4-rxvdz         1/1     Running   0          96s
  • Comprobemos que todo vaya bien.
kubectl logs -f hello-world-8888b85c4-rxvdz

2023-11-15 20:38:25,247 INFO  [cam.yaml:8] (Camel (camel-1) thread #1 - timer://tick) HELLO WORLD
2023-11-15 20:38:27,232 INFO  [cam.yaml:8] (Camel (camel-1) thread #1 - timer://tick) HELLO WORLD
2023-11-15 20:38:29,233 INFO  [cam.yaml:8] (Camel (camel-1) thread #1 - timer://tick) HELLO WORLD

Deja una respuesta

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