An implementation of the Acme Air Main Service for Java/Liberty. The main service primarily consists of the presentation layer (web pages) that interact with the other services.
This implementation can support running on a variety of runtime platforms including standalone bare metal system, Virtual Machines, docker containers, IBM Cloud, IBM Cloud Private, and other Kubernetes environments.
All of these examples assume you have the acmeair-mainservice-java, acmeair-authservice-java, acmeair-bookingservice-java, acmeair-customerservice-java, and acmeair-flightservice-java directories, (and possibly others) on your docker machine in the same directory. It also assumes all applications have been built with maven.
Prereq: Install Docker, docker-compose, and start Docker daemon on your local machine
cd acmeair-mainservice-java
Create docker network
Build/Start Containers. This will build all the micro-services, mongo db instances, and an nginx proxy.
Go to the Configuration Page and Load the Database or do the following:
curl http://docker_machine_ip/booking/loader/load
curl http://docker_machine_ip/flight/loader/load
curl http://docker_machine_ip/customer/loader/load?numCustomers=10000
This doc assumes Openshift is installed and configured, and internal image registry is available and its default-route is exposed.
Log in with oc
Example
oc login https://api.your.clusterhost.com:6443 -u ocpadmin -p password
Create new project
oc new-project acmeair
Run the deploy script. This will build the code, build the conatainers, push the containers, and setup the deployments for all 5 services.
cd acmeair-mainservice-java/scripts
./buildAndDeployToOpenshift.sh
Add podman as the last argument if using podman.
./buildAndDeployToOpenshift.sh podman
Go to the Configuration Page and Load the Database or do the following:
curl http://acmeair.apps.your.clusterhost.com/booking/loader/load
curl http://acmeair.apps.your.clusterhost.com/flight/loader/load
curl http://acmeair.apps.your.clusterhost.com/customer/loader/load?numCustomers=10000
To get more data, you can optionally enable access logs and tracing or switch the logging format to json for each service by updating the following env variables.
- name: LOGGING_FORMAT
value: 'json'
- name: ACCESS_LOGGING_ENABLED
value: 'true'
- name: TRACE_SPEC
value: 'com.acmeair*=all'
There is also a sample manifest file for deployment of the Acmeair application in a Istio service mesh, with all services and deployments required to run the application, including the gateway and virtual services definition. The required Mongo databases are also deployed as pods/services. You need to define the docker images to be used and inject the sidecars, either automatically or manually (with kubectl kube-inject command).