Installation Document

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-5.1.0-vdn -b release-5.1.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 RUN
GITHUB TAG
GITHUB REPO
COMMENTS
Build/job/DockCore/player
release-5.1.3_RC1
Creation-Portal
Build/job/DockCore/Program
release-5.1.0
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.1.0
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
release-5.1.0
Handles the Contents and Content Metadata
Build/Core/KnowledgeMW
release-5.2.0
Middleware for Content service
Build/Core/Player
release-5.0.0_RC18
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
release-5.0.0_RC3
Multiple functions like search indexing, video streaming
Build/KnowledgePlatform/Learning
github_release_tag: release-5.0.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.0.0_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.0
A bunch of base plugins to support the content editors and content player
Build/Plugins/GenericEditor
release-5.0.0_RC3
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 RUN
GITHUB TAG
GITHUB REPO
COMMENTS
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 RUN
GITHUB TAG
GITHUB REPO
COMMENTS
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-5.1.0, job_names_to_deploy: Select All
Deploys the Flink 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-5.1.0-vdn
Deploys Assessment service
Deploy/Kubernetes/Bot
release-3.9.0_RC1
Deploys Bot service
Deploy/Kubernetes/Content
release-5.1.0-vdn
Deploys Content service
Deploy/Kubernetes/KnowledgeMW
release-5.1.0-vdn
Deploys KnowledgeMW service
Deploy/Kubernetes/Player
release-5.1.0-vdn
Deploys Player 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-5.1.0
Deploys ContentPlugins files to Azure blob
Deploy/Plugins/GenericEditor
release-5.1.0-vdn
Deploys GenericEditor files to Azure blob