Install

Prerequisites to install coKreat

Sunbirded Setup

Infra Requirements

  • Kubernetes Cluster

  • Private GitHub repository to store ansible inventory

  • Fully Qualified Domain Name (FQDN) with SSL

  • Azure Storage account

  • Docker hub account

  • Public IP

  • Vm's(1 KP vm, 1 DB vm)

Copy coKreat jenkins jobs

Copy cokreat jenkins jobs coKreat-jobs to /varl/ib/jenkins/jobs folder in jenkins machine and restart jenkins service

update inventory

Use the following git commands sequentially to clone and update your private GitHub repository -

git clone https://github.com/project-sunbird/sunbird-devops
cd sunbird-devops
git checkout tags/release-6.0.0-vdn -b release-6.0.0-vdn
  • Copy the directory sunbird-devops/private_repo/ansible/inventory to your private repo/ansible/inventory/env

  • Update the files common.yml, hosts, and secrets.yml under DockDev directories. After updating, push them to your private repo branch

Build and Deploy services

JENKINS JOB TO RUNGITHUB TAGGITHUB REPOCOMMENTS

Build/job/DockCore/player

release-6.0.1

Creation-Portal

Build/job/DockCore/Program

release-6.0.1

Program service

Build/Core/APIManager

release-4.10.0_RC1

The API Gateway

Build/Core/ApiManagerEcho

master-RC1

Simply echos the request

Build/Core/Assessment

release-5.6.0_RC1

Handles course assessments

Build/Core/Bot

release-3.9.0_RC1

Frontend for the chatbot

Build/Core/Cassandra

release-4.10.0_RC1

Handles the Cassandra database schema

Build/Core/CassandraTrigger

release-4.9.0_RC1

Creates few Cassandra Triggers

Build/Core/Content

github_release_tag: release-5.5.0_RC1,,cloud_store_group_id:org.sunbird,cloud_store_artifact_id:cloud-store-sdk,cloud_store_version:1.4.6

Handles the Contents and Content Metadata

Build/Core/KnowledgeMW

release-5.2.0

Middleware for Content service

Build/Core/Player

release-6.0.1

Handles the UI elements

Build/Core/Proxy

release-3.8.0_RC14

Nginx web server / proxy

Build/Core/Router

release-3.9.0_RC1

Backend for chatbot

Build/Core/Search

release-5.1.0

Handles contents / course search

Build/Core/Taxonomy

release-5.1.0

Handles the taxonomies

Build/Core/Telemetry

release-3.3.0_RC1

Handles the telemetry generated

Build/KnowledgePlatform/FlinkJobs

github_release_tag: release-5.5.0_RC2,cloud_store_group_id:org.sunbird,cloud_store_artifact_id:cloud-store-sdk_2.12,cloud_store_version:1.4.6

Multiple functions like search indexing, video streaming

Build/KnowledgePlatform/InquiryFlinkJob

release-5.7.0_RC2

Build/KnowledgePlatform/Learning

github_release_tag: release-5.4.0_RC1, profile_id: platform-services

Handles frameworks

Build/KnowledgePlatform/Neo4j

release-4.5.0_RC12

Generates neo4j plugins

Build/KnowledgePlatform/SyncTool

release-4.5.0_RC12

Generates a jar to manually sync contents

Build/Plugins/ContentEditor

release-5.2.1_RC3

A bunch of plugins to edit certain types of content

Build/Plugins/ContentPlayer

release-4.6.0_RC1

A bunch of plugins to handle content playback

Build/Plugins/ContentPlugins

release-5.2.1_RC4

A bunch of base plugins to support the content editors and content player

Build/Plugins/GenericEditor

release-5.2.1_RC2

A bunch of plugins to edit certain types of content

Infra Provision

Note:

  • Jobs can be run in parallel to speed up execution. The only exception is you should NOT run multiple jobs which will provision packages on the same server in parallel

JENKINS JOB TO RUNGITHUB TAGGITHUB REPOCOMMENTS

Provision/Core/ApplicationElasticSearch

release-5.0.0_RC2

Installs Elasticsearch used by the applications

Provision/Core/Cassandra

release-5.1.0

Installs Cassandra database

Provision/Core/ESMapping

indices_name: all, branch_or_tag: release-5.0.0_RC2

Creates Elasticsearch indices and mappings

Provision/Core/Postgres

release-5.0.0_RC2

Installs Postgres database

Provision/Core/PostgresDbUpdate

release-5.0.0_RC2

Creates Postgres tables, schema and users

Provision/KnowledgePlatform/Learning

release-5.0.0_RC2

Install tomcat and other pre-requisites for Learning service

Provision/KnowledgePlatform/Neo4j

release-5.1.0

Installs Neo4j database

ArtifactUpload

  • Every job in the Build directory has a corresponding job in ArtifactUpload directory with the same name

  • These jobs are auto triggered and usually run without issues after the corresponding job in the build directory succeeds

  • The job will fail if your ansible inventory setup is incorrect or incomplete

  • If the job has failed, fix the ansible variables issue and rerun the job to upload the artifact / docker image

  • Ensure the artifact upload jobs are successful before proceeding

Code Deploy

Note:

  • We will run the jobs which are a pre-requisite for other jobs first

  • The pre-requisite jobs reside in different folders so we will be jumping across folders

  • Jobs in the Deploy directory can be run in parallel and don’t have any restrictions if the code is from same repo unlike the Build directory

  • Ensure you don’t run those jobs in parallel which modify the databases (such as cassandra, neo4j etc)

JENKINS JOB TO RUNGITHUB TAGGITHUB REPOCOMMENTS

Deploy/Kubernetes/CassandraDBUpdate

release-5.1.0-vdn

Creates / Updates Cassandra DB schema

Deploy/KnowledgePlatform/CassandraDbUpdate

release-5.1.0

Creates / Updates Cassandra DB schema

Deploy/Kubernetes/Cassandra

release-5.1.0-vdn

Creates / Updates Cassandra DB schema

Deploy/Kubernetes/KafkaSetup

release-5.1.0-vdn

Creates / Updates Kafka Topics

Deploy/KnowledgePlatform/KafkaSetup

release-5.0.0_RC2

Creates / Updates Kafka Topics

Deploy/KnowledgePlatform/Learning

release-5.2.0-vdn

Deploys the Learning service on tomcat

Deploy/KnowledgePlatform/Neo4j

release-5.1.0

Deploys the Neo4j plugins

Deploy/KnowledgePlatform/Neo4jDefinitionUpdate

release-5.2.0

Creates / Updates the Neo4j database

Deploy/KnowledgePlatform/FlinkJobs

branch_or_tag: release-6.0.0-vdn, job_names_to_deploy: Select All

Deploys the Flink jobs in Kubernetes cluster

Deploy/KnowledgePlatform/InquiryFlinkJob

inquiry_release_tag: release-5.7.0_RC1, branch_or_tag: release-6.0.0-vdn, job_names_to_deploy: Select All

Deploys the InquiryFlink jobs in Kubernetes cluster

Deploy/Kubernetes/nginx-private-ingress

release-5.1.0-vdn

Deploys nginx with a private load balancer

Deploy/Kubernetes/APIManager

release-5.1.0-vdn

Deploys Kong, the API gateway

Deploy/Kubernetes/OnboardAPIs

release-5.1.0-vdn

Creates the APIs in Kong

Deploy/Kubernetes/OnboardConsumers

release-5.1.0-vdn

Creates the consumers in Kong. Now read the comment mentioned in Core/Secrets.yml against the variable core_vault_sunbird_api_auth_token

Deploy/Kubernetes/UploadSchema

branch_or_tag: release-5.1.0-vdn, kp_branch_or_tag: release-4.9.0_RC8

Uploads the Content schemas to Azure blob

Deploy/Kubernetes/APIManagerEcho

release-5.1.0-vdn

Deploys Echo service

Deploy/Kubernetes/Assessment

release-6.0.0-vdn

Deploys Assessment service

Deploy/Kubernetes/Bot

release-3.9.0_RC1

Deploys Bot service

Deploy/Kubernetes/Content

release-6.0.0-vdn

Deploys Content service

Deploy/Kubernetes/KnowledgeMW

release-5.1.0-vdn

Deploys KnowledgeMW service

Deploy/Kubernetes/Player

release-6.0.0-vdn

Deploys Player service

Deploy/Kubernetes/Program

release-6.0.0-vdn

Deploys Program service

Deploy/Kubernetes/Router

release-5.1.0

Deploys Router service

Deploy/Kubernetes/Search

release-5.1.0-vdn

Deploys Search service

Deploy/Kubernetes/Taxonomy

release-5.1.0_vdn

Deploys Taxonomy service

Deploy/Kubernetes/Telemetry

release-5.1.0-vdn

Deploys Telemetry service

Deploy/Kubernetes/nginx-public-ingress

release-5.1.0-vdn

Deploys the nginx web server. Now you can open visit your domain

Deploy/Plugins/ContentEditor

release-5.1.0-vdn

Deploys ContentEditor files to Azure blob

Deploy/Plugins/ContentPlayer

release-5.1.0

Deploys ContentPlayer files to Azure blob

Deploy/Plugins/ContentPlugins

release-6.0.0-vdn

Deploys ContentPlugins files to Azure blob

Deploy/Plugins/GenericEditor

release-6.0.0-vdn

Deploys GenericEditor files to Azure blob

Last updated