Table of Content

  1. Objective

  2. Upgradation process for AWS

  3. Upgradation process for AZURE

  4. Upgradation process for Local

  5. Appendix

    1. Network Architecture

    2. Microservice Details

    3. cQube Upgradation Process

Objective

This document mainly focuses on the Upgrading the cQube from the older version to the newer version. Here we have included network architecture for upgradation cQube and the Upgradation process step-by-step.

Upgradation process for AWS 

Step - 1: Connect to the cqube AWS ec2 instance

  • For linux and macOS:

    • Download the .pem file which is generated while creating the EC2 instance

    • Open the terminal and navigate to the folder where .pem file has been downloaded

    • Then give the read permission to the .pem file using following command

  sudo chmod 400 <aws.pem>

  • Use the following command to connect to the instance

ssh -i <path_to_the_pem_file>  <user_name>@<public_ip_of_the_instance>

Upgradation process for AZURE

Step - 1: Connect to the cqube Azure VM instance

  • For linux and macOS:

    • Download the .pem file which is generated while creating the azure VM instance

    • Open the terminal and navigate to the folder where .pem file has been downloaded

    • Then give the read permission to the .pem file using following command

  sudo chmod 400 <aws.pem>

  • Use the following command to connect to the instance

ssh -i <path_to_the_pem_file>  <user_name>@<public_ip_of_the_instance>

Upgradation process for LOCAL

Prerequisites to install cQube on local machine


  • Ubuntu 22.04 (supported) 

  •  16 GB of System RAM (minimum requirement)

  •  4 core CPU (minimum requirement)

  •  Domain name (with SSL)

  •  250 GB Storage



Step - 2: Clone the cqube-devops repository using following command

git clone https://github.com/Sunbird-cQube/cqube-devops.git       

Step - 3: Navigate to the directory where cqube is cloned or downloaded and checkout to the desired branch

cd cqube-devops/ && git checkout dev


Step - 4: Give the following permissions to the install.sh file

sudo chmod u+x upgrade.sh

Step - 5: Install cqube with non root user with sudo privileges

sudo ./upgrade.sh

upgrade.sh file contains a shell script where it will run shell scripts and ansible-playbook to setup the cqube



Step - 6: User Input Variables - These are the variables which need to be entered by the user by following the Hint provided

  • state_name ( Enter the required state code by referring to the state list provided )

  • api_end_point ( Enter the url in which cqube to be configured )

  • Storage_type (Enter the storage_type as aws or local or azure.  If User opting for aws You will be prompted with the following  AWS s3 credentials to enter and it will create the s3 bucket. If s3_bucket already exists it will prompt you to enter a unique s3 bucket name. And it will be generated in the upgradation_config.yml.)

  • s3_access_key

  • s3_secret_key

  • s3 bucket name



  • Storage_type (Enter the storage_type as local, minio will install  and configure the minio username and minio password and create the minio bucket And it will be generated in the upgradation_config.yml.)

  • Storage_type (Enter the storage_type as Azure, If User opting for Azure you will be prompted with the following  Azure credentials to enter and it will create an azure container , if azure container exists it will prompt to enter a unique azure container name. And it will be generated in the upgradation_config.yml.)

  • azure_connection_string

  • azure_account_name

  • azure_account_key



Step - 7: Optional_variables- Database credentials contain default values. If the user wishes to enter their own credentials then the user should opt for yes to enter their credentials otherwise can opt for no when the question pops up

  • db_user_name ( Enter the postgres database username ) 

  • db_name ( Enter the postgres database name )

  • db_password ( Enter the postgres password )


Step - 8: Optional_variables- Read Only Database credentials contain default values. If the user wishes to enter their own credentials then the user should opt for yes to enter their credentials otherwise can opt for no when the question pops up

  • read_only_db_user ( Enter the read only postgres database username ) 

  • read_only_db_password ( Enter the read only postgres password )


Step - 9: Once the upgradation_config file is generated, A preview of the upgradation_config file is displayed followed by a question where the user gets an option to re enter the configuration values on choosing yes. If option no is selected then the upgrade.sh moves to the next section.

Step - 10:  A preview of the program_selector.yml file is displayed followed by a question where the user gets an option to enable or disable the programs on choosing yes. If option no is selected then the upgrade.sh moves to the next section.

Step - 11: Once the Upgradation is completed, You will be prompted with the following messages and required reference urls.

cQube Upgraded Successfully

cQube ingestion api can be accessible using <domain_name>









Appendix

Mic Network Architecture

The following steps define the cQube setup and workflow completion processes in AWS. cQube mainly comprises the areas mentioned below:

  1. EC2 Server

  2. IAM user and Role creation for S3 connectivity.

The cQube network setup process is described in the block diagram below:



Microservices Details

   Following are the details of the microservices which get installed in the cqube server.

  • Ingestion-ms: The ingestion-ms is used to upload the data of the events, datasets, dimensions, transformers and pipeline. All these apis will be to ingesting the data into the cQube.

  • Spec-ms: The spec-ms is used to import schema of the events, datasets, dimensions, transformers and pipeline. All these specs will be defined by the cQube platform prior to ingesting the data into the cQube. These specifications are derived by considering the KPIs as the Indicator.

  • Generator-ms: The generator-ms is used to create the specs & transformers for the derived datasets. Performed aggregation logics, updating data to datasets based on transformation. Status update of file processing

  • Nifi-ms: Apache NiFi is used as a real-time integrated data logistics and simple event processing platform

  • Postgres-ms: Postgres microservice contains the schema and tables

  • Nginx-ms: It is commonly used as a reverse proxy and load balancer to manage incoming traffic and distribute it to slower upstream servers

  • Kong-ms: It is a lightweight API Gateway that secures, manages, and extends APIs and microservices.

  • Dashboard-ms: It consists of an angular app, it is used to visualize the datasets present in postgres-ms in the form of charts. On run time it requests spec-ms to fetch data from postgres-ms and load it into the client side(Browser)

  • Query_builder-ms: It consists of backend API, which consists of JWT,METRICS,QUERY apis 

JWT - it will generate a jwt token to restrict the other apis.

METRICS - it consists of menus for the navigation bar and dashboard cards.

QUERY - this api used for executing the SQL queries which integrated with Dashboard-ms.

LASTMODIFIED - this api will use for the last modified data  in the s3,azure and minio



cQube Deployment Procedure      

 upgradel.sh sh file contains a shell script where it will run following shell scripts and ansible-playbook to setup the cqube

Basic_requirements.sh:

This script basically updates and upgrades the software packages in the server and installs the basic softwares such as 

  • Python3

  • Pip3

  • Ansible

  • Docker

  • Docker compose

upgradation_Config_file_generator.sh:

  This script is used to generate a configuration file which contains some constant values and few required variables should be entered by the user. Following are the variables which get added in the config file.

Note: Users should follow the Hints provided in the description and should enter the variables accordingly. If the entered value is wrong then an error message gets displayed and the user should modify the variable value accordingly.Constant Variables: These variables are auto generated

  • System_user_name

  • base_dir

  • Private_ip

  • aws_default_region

User Input Variables-These are variables which need to be entered by the user by following the Hint provided

  • state_name ( Enter the required state code by referring to the state list provided )

  • api_end_point ( Enter the url in which cqube to be configured )

  • storage_type

Storage_type is aws enter the below variables

  • s3_access_key

  • s3_secret_key

  • s3 bucket name       

Storage_type is azure enter the below variables

  • azure connection string

  • azure account name

  • Azure account key

  • azure container  name


Storage_type is a local system that will automatically create the minio username and minio password and minio bucket.

  • minio username

  • minio password

  • minio bucket


Minino can be accessed by Dashboard with http://localhost:9001 end point, here you can see the minio bucket which is created  by default and the username is minioadmin and password is minioadmin


Optional_variables - Database credentials contain default values. If the user wishes to enter their own credentials then the user should opt for yes to enter their credentials otherwise can opt for no when the question pops up

  • db_user_name ( Enter the postgres database username ) 

  • db_name ( Enter the postgres database name )

  • db_password ( Enter the postgres password )


Optional_variables- Read Only Database credentials contain default values. If the user wishes to enter their own credentials then the user should opt for yes to enter their credentials otherwise can opt for no when the question pops up

  • read_only_db_user ( Enter the read only postgres database username ) 

  • read_only_db_password ( Enter the read only postgres password )


Once the upgradation_config file is generated, A preview of the upgradation_config file is displayed followed by a question where the user gets an option to re enter the configuration values on choosing yes. If option no is selected then the upgrade.sh moves to the next section.

Repository_clone.sh:

   This script clones the following repositories in the microservices directory and checkout to the required release branch



    Note: If the repository is already cloned then the script will pull the updated code.

Ansible-playbook:

upgrade.yml

      An upgrade.yml ansible playbook gets triggered where it triggers the required roles to build the following microservices images.

  • Ingestion-ms

  • Spec-ms

  • Generator-ms

  • Postgres-ms

  • Nifi-ms

  • Dashboard-ms

  • Query_builder-ms

  • Kong-ms

  • Nginx-ms


upgrade_compose.yml:

      A docker compose ansible script gets triggered where it will up all the containers to running state.

      Note: The following commands can be used from the Ansible directory to down the containers and to start the containers, respectively.

  • docker-compose -f upgrade_docker-compose.yml down

  • docker-compose -f upgrade_docker-compose.yml up -d


Run_api.sh:

Run_api.sh script will run the v4-data-emission api using curl command in the ingestion_ms container. And it will run the adapter file to run VSK_data_transformation.sh script in the generator-ms container.


     Once the Upgradation is completed, You will be prompted with the following messages and required reference urls.

cQube Upgraded Successfully


 We can check the containers running status by using following command

  • sudo docker ps