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 -
Copy the directory
sunbird-devops/private_repo/ansible/inventory
to your private repo/ansible/inventory/envUpdate 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-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.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.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_RC3 | 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 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-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 | |
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 |