Git Product home page Git Product logo

spring-boot-camel's Introduction

Spring-Boot Camel QuickStart

This example demonstrates how you can use Apache Camel with Spring Boot based on a fabric8 Java base image.

The quickstart uses Spring Boot to configure a little application that includes a Camel route that triggers a message every 5th second, and routes the message to a log.

Prerequisites

You need nexus installed into nexus project see

Building

The example can be built with

mvn clean install

Running the example locally

The example can be run locally using the following Maven goal:

mvn spring-boot:run

Running the example in Kubernetes

It is assumed a running Kubernetes platform is already running. If not you can find details how to get started.

Assuming your current shell is connected to Kubernetes or OpenShift so that you can type a command like

kubectl get pods

or for OpenShift

oc get pods

Then the following command will package your app and run it on Kubernetes:

mvn fabric8:run

To list all the running pods:

oc get pods

Then find the name of the pod that runs this quickstart, and output the logs from the running pods with:

oc logs <name of pod>

You can also use the fabric8 developer console to manage the running pods, and view logs and much more.

More details

You can find more details about running this quickstart on the website. This also includes instructions how to change the Docker image user and registry.

CI/CD Demo

oc new-project ci-cd --description "CI/CD" --display-name="CI/CD"
oc policy add-role-to-user view system:serviceaccount:$(oc project -q):default
oc adm policy add-cluster-role-to-user self-provisioner system:serviceaccount:$(oc project -q):jenkins
oc adm policy add-cluster-role-to-user view system:serviceaccount:$(oc project -q):jenkins
oc -n openshift process jenkins-persistent | oc create -f-
oc process -f helloservice-pipeline-bc.yaml | oc apply -f-
oc start-build helloservice

Multi-branch pipeline

Use the Jenkinsfile in base directory as part of multibranch pipeline build for Pull Requests.

Operators

Ansible Operator based deployment

Build application image:

-- build image in openshift namespace for now
mvn package
oc -n openshift new-build --binary --name=spring-boot-camel -l app=spring-boot-camel -i fuse7-java-openshift:1.2
oc -n openshift start-build spring-boot-camel --from-file=./target/helloservice-1.0-SNAPSHOT.jar --follow

The application ansible role is here:

https://github.com/eformat/spring-boot-camel-role.git

Build the operator image

cd spring-boot-camel/operator/spring-boot-camel-operator

podman build --no-cache -t spring-boot-camel-operator:v0.0.1 -f build/Dockerfile .

Setup podman locally

HOST=$(oc get route default-route -n openshift-image-registry --template='{{ .spec.host }}')
sudo mkdir -p /etc/containers/certs.d/$HOST
echo $(oc get secrets router-ca --template='{{index .data "tls.crt"}}' -n openshift-ingress-operator) | base64 -d | sudo tee /etc/containers/certs.d/$HOST/ca.crt
podman login -u $(oc whoami) -p $(oc whoami -t) $HOST

Deploy operator image

oc new-project spring-boot-camel
oc policy add-role-to-user view system:serviceaccount:$(oc project -q):default
--
podman tag localhost/spring-boot-camel-operator:v0.0.1 $HOST/spring-boot-camel/spring-boot-camel-operator:v0.0.1
podman login -u $(oc whoami) -p $(oc whoami -t) $HOST
podman push $HOST/spring-boot-camel/spring-boot-camel-operator:v0.0.1

Create CR, CRD, Kube objects (admin privilege)

oc apply -f deploy/crds/springbootcamel_v1alpha1_springbootcamel_crd.yaml
oc apply -f deploy/service_account.yaml
oc apply -f deploy/role.yaml
oc apply -f deploy/role_binding.yaml
oc apply -f deploy/operator.yaml

Create CR - Application (adjust values to suit)

oc apply -f deploy/crds/springbootcamel_v1alpha1_springbootcamel_cr.yaml

Delete Application

oc delete -f deploy/crds/springbootcamel_v1alpha1_springbootcamel_cr.yaml
-- OR
oc delete SpringBootCamel/spring-boot-camel

Delete operator and configs

oc delete -f deploy/operator.yaml
oc delete -f deploy/service_account.yaml
oc delete -f deploy/role.yaml
oc delete -f deploy/role_binding.yaml

spring-boot-camel's People

Contributors

apupier avatar chirino avatar davsclaus avatar eformat avatar fusesource-ci avatar jamesnetherton avatar jstrachan avatar lburgazzoli avatar nicolaferraro avatar rhuss avatar

Watchers

 avatar  avatar  avatar

Forkers

mikecali

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.