[Apache Camel] docker 로 camel karavan 실행하는 법

식빵·2025년 8월 14일

apache-camel

목록 보기
5/5
post-thumbnail

https://deepwiki.com/apache/camel-karavan/ 를 많이 참조해서 작성된 글입니다.


🎯 Apache Karavan 이란?

EIP ( Enterprise Integration Patterns ) 라이브러리인 Apache Camel
Web UI 을 통해서 사용할 수 있게 해주는 것이 Apache Karavan 입니다.

그림 출처: https://github.com/apache/camel-karavan



🎯 Installation Options

Karavan 은 크게 3가지 설치 옵션이 있습니다.

Vs Code Extension 는 vs code 에디터의 플러그인을 통한 설치를 의마하고
Docker Container, Kubernetes 는 각각 Container, POD 로 설치하는 방식입니다.
이 글에서는 Docker container 를 통한 설치를 진행해보겠습니다.

혹여 다른 설치 옵션이 궁금한 분들은 DeepWiki 을 참조해주세요.



🎯 전체 구성도

출처: https://deepwiki.com/apache/camel-karavan/1.1-installation-guide#docker-installation

dockerkaravan 실행을 위해 필요한 다른 구성들이 뭐가 있는지 가볍게 알고 갑시다.
그림을 보면 가운데 karavan container 가 있고,
그 아래로 3개의 네모 박스가 보입니다.


  1. Docker Registery + Docker Socket:
    Web UI 를 통해 작성된 route 는 즉석으로 실행을 할 수 있습니다.
    실행 방법은 작성한 route 를 하나의 컨테이너로 감싸고 실행시키는 방식입니다.
    이런 이유 때문에 Docker Registery, Socket 이 필요한 겁니다.

  1. External Services - Git Repository:
    Web UI 를 통해 작성된 route 는 화면성에서는 이쁜 workflow 로 보이지만,
    실제로는 뒤에서 yaml (=camel dsl) 파일로 workflow 내용이 작성됩니다.
    이 파일을 VCS 로 관리하기 위해서 하나의 Git Repository 가 필요합니다.
    참고로 Docker/K8s 설치 옵션 모두 Git Repository 가 필요합니다.



🎯 설치 방법

1. Git Repository 생성

Git Repository 는 본인 github 계정을 사용해서 세팅해도 되지만,
저는 최대한 Portable 하게 만들고 싶어서 Docker 를 통해서 gitea 를
Docker 로 실행하고, 계정 하나를 생성하고, 저장소를 하나 생성하겠습니다.


먼저 network 하나를 생성합니다. 추후에 karavan 과 통신하기 위한 겁니다.

docker network create karavan # 명칭은 꼭 karavan 으로 해주세요!

gitea 전용 디렉토리를 하나 생성하고, docker run!

# gitea 를 위한 디렉토리 생성
mkdir -p ~/karavan/gitea

docker run -d --name gitea -p 3000:3000 -p 2222:22 \
-v "$HOME/karavan/gitea:/data" \
--network karavan \
--restart=always gitea/gitea:latest 

docker container 가 잘 실행됐다면 http://localhost:3000 에 접속합니다.

접속을 하게 되면 기본적으로 위 그림처럼 초기 설정을 해야되는 화면이 나옵니다.


저는 아무것도 건드리지 않고 스크롤을 내려서 관리자 계정 설정만 하나 작성했습니다.

  • id: admin
  • pw: admin

이렇게 하고, Gitea 설치하기를 클릭합니다.


설치 중이니 기다리라는 문구의 화면이 나옵니다.


이후에 설치가 완료되면 위처럼 깔끔한 대시보드가 나오는데,
우측 상단의 + 버튼을 클릭하고 새 저장소 를 클릭합니다.


저장소 이름은 아무렇게 지정해도 되지만 저는 karavan 으로 했습니다.
또한 메인 브랜치 명칭도 main 으로 지정했습니다.
설정이 끝났으면 생성을 끝냅니다.


git repository 생성이 완료됐습니다.
다음으로 Karavan 컨테이너를 띄워보겠습니다.




2. Karavan 컨테이너 실행

먼저 github - apache/camel-karavan 에서 제공하는 docker-compose.yaml
파일을 다운로드 받습니다.

# docker compse 를 위한 yaml 파일 다운로드
curl -O https://raw.githubusercontent.com/apache/camel-karavan/main/docs/install/karavan-docker/docker-compose.yaml

yaml 파일을 열어보면 services > karavan > environment 하단에

  • KARAVAN_GIT_REPOSITORY
  • KARAVAN_GIT_USERNAME
  • KARAVAN_GIT_PASSWORD

... 3개의 환경변수가 있습니다.

이 환경변수는 앞서 생성한 Gitea 의 계정과 저장소를 작성해주면 됩니다.
다만 저장소 URL 작성 시 Host 를 gitea 로 작성해주셔야 합니다.

docker network 를 통해서 gitea 와 karavan 이 연결되므로,
host 명칭을 container 명칭으로 지정할 수 있습니다.

name: karavan

services:

  karavan:
    container_name: karavan
    image: ghcr.io/apache/camel-karavan:4.10.2
    ports:
      - "8080:8080"
    environment:
      - KARAVAN_GIT_REPOSITORY=http://gitea:3000/admin/karavan
      - KARAVAN_GIT_USERNAME=admin
      - KARAVAN_GIT_PASSWORD=admin
      - KARAVAN_GIT_BRANCH=main
      - KARAVAN_CONTAINER_IMAGE_REGISTRY=registry:5000
      - KARAVAN_CONTAINER_IMAGE_REGISTRY_USERNAME=
      - KARAVAN_CONTAINER_IMAGE_REGISTRY_PASSWORD=
      - KARAVAN_CONTAINER_IMAGE_GROUP=karavan
      - KARAVAN_DOCKER_NETWORK=karavan
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    labels:
      - "org.apache.camel.karavan/type=internal"
    networks:
      - karavan

  registry:
    container_name: registry
    image: registry:2
    restart: always
    ports:
      - "5555:5000"
    labels:
      - "org.apache.camel.karavan/type=internal"
    networks:
      - karavan

networks:
  karavan:
    name: karavan
    external: true # 추가!

docker compose 는 미리 생성한 network 를 사용할 때는 external: true 설정이
필수입니다. 저도 gitea container 생성 당시에 미리 karavan network 를 미리
생성했기 때문에 networks > karavan 하단에 이 설정이 추가했습니다.

보충: container_name: registry ??

여기서 registry 컨테이너는 현재 저희가 Host PC 에 깔아서 사용하는 Docker 를
컨테이너 내부에서 사용하기 위한 일종의 dind (docker in docker) 컨테이너 입니다.

Karavan 은 작성한 route 를 즉석으로 실행할 수 있는데,
이때 host pc 에 있는 docker 를 사용하기 때문에 필요한 겁니다.


다 실행이 되면 http://localhost:8080 에 접속합니다.

이상으로 설치가 끝났습니다.




🎯 가볍게 사용해보기

설치만하고 끝내기 아쉬워서 정말 간단한 사용법까지 알아보겠습니다.

일단 위처럼 Create 버튼을 클릭해서 새로운 프로젝트를 생성합니다.


+ Route 버튼을 클릭해서 라우트 Group 을 하나 생성합니다.


+ Create Route 버튼을 클릭합니다.
그러면 다양한 EIP, Processor 들을 빠르게 검색하고 적용할 수 있는 화면이
나옵니다. 원하는 것을 선택하시기 바랍니다.


화면 우측에서 상세한 설정들을 지정할 수 있습니다.
저는 필수값만 작성했습니다.


이후에 계속 뭔가를 이어 붙이려면 하단의 + 버튼을 클릭하시면 됩니다.


저는 위처럼 작성해봤습니다.


이후에 우측 상단의 Run 버튼을 클릭합니다.


약간의 시간이 지나고 나서 위처럼 실행되는 camel 프로세스의 로그를 확인할 수 있습니다.

참고로 초기 실행은 라이브러리를 다운로드 때문에 느릴 수도 있습니다.


작성한 route 는 yaml 형태로 저장되는데,
이건 YAML 탭을 클릭해서 확인이 가능합니다.


생성된 yaml 파일을 giteapush 하기 위해서 위 그림처럼
좌측 상단에 표시된 아이콘을 클릭합니다.


Files 탭을 클릭하고 목록에 나오는 모든 파일들을 지정한 후에 Push 를 클릭합니다.


gitea 에 가면 이 프로젝트의 Push 내역을 확인할 수 있습니다.


이상으로 아주 간단한 사용법도 알아봤습니다.
글을 마치겠습니다.




✨ 참고링크

profile
백엔드 개발자로 일하고 있는 식빵(🍞)입니다.

0개의 댓글