amaankulshreshtha / ICP-Airways

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ICP-Airways


Lotion
Air-Line ticketing and booking application on IBM Cloud Private

Powered by Nodejs, Kubernetes, Angular, and IBM Cloud Private

Travis Build


Pre-req installation

  1. Install Nodejs
  2. Install Kubectl
  3. Intall Docker
  4. Install Angular4Cli
  5. Install DBVisualiser
  6. Install minikube
  7. Install Hypervisor-virtualbox
  8. Install gulpcli
$ npm i gulp-cli -g

Microservices available

  • Booking-microservice
  • Checkin-microservice
  • Listing-microservice
  • Login-microservice
  • Signup-microservice
  • Db2-microservice
  • Jenkins-microservice
  • Angular frontend microservice

Point to local docker registery to minikube

$ eval $(minikube docker-env)

Install all dependencies and create images

  1. Booking Microservice
$ cd booking-microservice
$ npm i
$ gulp scripts
$ docker build -t booking-microservice .
  1. Checkin Microservice
$ cd checkin-microservice
$ npm i
$ gulp scripts
$ docker build -t checkin-microservice .
  1. Listing Microservice
$ cd listing-microservice
$ npm i
$ gulp scripts
$ docker build -t listing-microservice .
  1. Login Microservice
$ cd login-microservice
$ npm i
$ gulp scripts
$ docker build -t login-microservice .
  1. Signup Microservice
$ cd signup-microservice
$ npm i
$ gulp scripts
$ docker build -t signup-microservice .
  1. Db2 Microservice
$ cd db2-microservice
$ docker build -t db2 .
  1. Jenkins Microservice
$ docker build -t jenkins .

Start minikube

$ minikube start

Some minikube commands

  1. Get minikube master ip
$ minikube get ip
  1. Get minikube dashboard
$ minikube dashboard

3 3. Get minikube nodes

$ minikube get nodes
  1. Minikube enable adons
$ minikube addons enable ingress
  1. Get all minikube addons enabled and disabled
$ minikube addons enable ingress

remeber to use same terminal session

Running config maps and secrets

  1. Running config maps to load env variable for our microservices
$ cd configMaps-secrets/configMaps
$ kubectl create -f configMaps.yml
$ kubectl get configmap
  1. Running secrets to load env variable for our microservices to load username and pass safely instead of hardcoding
$ cd configMaps-secrets/secrets
$ kubectl create -f secrets.yml
$ kubectl get secrets

Run jenkins in kubernetes

  1. Deploy
$ cd jenkins
$ kubectl create -f deployment.yml
  1. get external svc port is it deployed to
$ kubectl get scv
  1. access jenkins http://minikubeip:scvport

1

2

Deploying DB2

  1. Navigate to db2-microservice folder
$ cd db2-microservice
  1. Deploy to minikube
$ kubectl create -f service-deployment.yml
  1. Get pods name of db2
$ kubectl get pods
  1. ssh to pods container of db2
$ kubectl exec -it podname bash
  1. switch user to db2inst1
$ su - db2inst1
  1. Create Database and connect to it
$ db2 create database SAMPLE
$ db2 connect to SAMPLE
  1. Download existing flight data from github and set permissions
$ wget https://raw.githubusercontent.com/SaifRehman/ICP-Airways/master/dataset/flights.csv
$ chown db2inst1:db2inst1 /home/db2inst1/flights.csv
  1. Create Database and importing existing data to Flights table
  • Flights Table
db2 CREATE TABLE "SAMPLE.FlightsData (ID int NOT NULL , Year varchar(255) NULL , Month varchar(255) NULL, DayofMonth varchar(255) NULL, DepTime varchar(255) NULL,  CRSDepTime varchar(255) NULL, ArrTime varchar(255) NULL, CRSArrTime varchar(255) NULL, FlightNum varchar(255) NULL, TailNum varchar(255) NULL, ActualElapsedTime varchar(255) NULL, CRSElapsedTime varchar(255) NULL, Airtime varchar(255) NULL, ArrDelay varchar(255) NULL, DepDelay varchar(255) NULL,   Origin varchar(255) NULL, Dest varchar(255) NULL, Distance varchar(255) NULL, PRIMARY KEY (ID))"
  • User Table
db2 CREATE TABLE "SAMPLE.UserData (UserID int NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1) , LastName varchar(255) NULL , FirstName varchar(255) NULL, Location varchar(255) NULL, Email varchar(255) NULL,  Password varchar(255) NULL, Age int NULL, PRIMARY KEY (UserID))"
  • Booking Table
db2 CREATE TABLE "SAMPLE.Booking (BookingID int NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1) ,TS TIMESTAMP NOT NULL , Checkin varchar(255) NOT NULL, UserID INT NOT NULL, FlightID INT NOT NULL, FOREIGN KEY (UserID) REFERENCES SAMPLE.UserData(UserID), FOREIGN KEY (FlightID) REFERENCES SAMPLE.FlightsData(ID), PRIMARY KEY (BookingID))"
  • Importing existing data to flights table
$ db2  IMPORT FROM "/home/db2inst1/flights.csv" OF DEL INSERT INTO SAMPLE.FlightsData

Deploying all backend microservices

  1. booking-microservice
$ cd booking-microservice 
$ kubectl create -f service-deployment.yml
  1. checkin-microservice
$ cd checkin-microservice 
$ kubectl create -f service-deployment.yml
  1. listing-microservice
$ cd listing-microservice 
$ kubectl create -f service-deployment.yml
  1. login-microservice
$ cd login-microservice 
$ kubectl create -f service-deployment.yml
  1. signup-microservice
$ cd signup-microservice 
$ kubectl create -f service-deployment.yml

Running Angular Microservice Frontend

  1. Navigate to icp-frontend
$ cd icp-frontend
  1. Build Docker image
$ docker build -t angular .
  1. Deploy
$ kubectl create -f service-deployment.yml

High level Architecture Diagram

high

Low level Architecture Diagram

low

About


Languages

Language:TypeScript 50.6%Language:HTML 21.6%Language:Shell 13.2%Language:CSS 8.7%Language:JavaScript 6.0%