- Use a Debian-based Linux distribution (preferably Ubuntu)
- Experience in running simple shell and bash commands
- Debian-based OS (Ubuntu)
- sshpass
- Ansible
- GIT
- kubectl
- List of servers and ability to access them using key-based authentication
- Server map to list servers against software
- Access to the DIVOC installer repository
- Access to the implementation-specific DIVOC code
The sizing and count of the servers can change based on the load requirements. However, for a truly HA setup, the following are the minimum requirements:
3 servers for HA setup: one master and 2 replicas. The etcd cluster can also be set up on the same servers.
6 servers: 3 for control plane (or master node can be relatively smaller sized instances) and 3 worker nodes (for deploying the application).
3 servers containing both Zookeeper and Kafka (Ideally Zookeeper and Kafka need to be installed on separate servers but we should be fine to install both on the same machine).
3 servers
3 servers
1 server
There are three scripts that need to be run to complete the DIVOC installation process:
- Installing the prerequisites and setting various hardware clusters as detailed above.
- Building the pushing the docker images to the appropriate registry.
- Deploying code from the registry into Kubernetes cluster.
- Clone the repository available at https://github.com/egovernments/divoc-installer.
- Create an inventory file from the sample inventory file located at https://github.com/egovernments/divoc-installer/blob/master/inventory.example.ini.
- Add the inventory details as per the comments present in the file.
- Run the install.sh present within the divoc-installer with the elevated privileges (we can also use nohup for running in the background):
{% hint style="info" %} sudo sh install.sh -i <path to inventory file> {% endhint %}
- It will install the dependencies like python3, ansible, etc.
- It will install the applications and configure them on the servers mentioned in the inventory file.
- Run the build.sh file with elevated privileges.
{% hint style="info" %} **** sudo sh build.sh -d <IP Address of Docker Registry> -r <GIT REPO URL> {% endhint %}
- Default values for the Docker repository are from dockerhub.
- The Default value for the GIT repo is the master branch of the https://github.com/egovernments/DIVOC.git.
- The sample default Kubernetes deployment files are available at **** https://github.com/egovernments/divoc-installer/tree/master/kube-deployment-config-example.
- Make a copy of the folder and change the internal script files to have the following configurations. It is recommended that you maintain your own configuration in a separate Github repository so that you have version control and backup (you require only the example folder, not the full repository).
a. Within the divoc-installer director, open the divoc-config.yaml file present within the deployment configuration directory and make the following changes:
**** - **** DB_HOST
- DB_USER
- DB_PASS
- DB_PORT
- KAFKA_BOOTSTRAP_SERVERS
- REDIS_URL
- CLICKHOUSE_URL
- AUTH_PRIVATE_KEY
- AUTH_PUBLIC_KEY
- CERTIFICATE_NAMESPACE
- CERTIFICATE_NAMESPACE_V2
- CERTIFICATE_CONTROLLER_ID
- CERTIFICATE_PUBKEY_ID
- CERTIFICATE_DID
- CERTIFICATE_ISSUER
- CERTIFICATE_BASE_URL
- CERTIFICATE_FEEDBACK_BASE_URL
- CERTIFICATE_INFO_BASE_URL
- CERTIFICATE_PUBLIC_KEY
- CERTIFICATE_PRIVATE_KEY
- CITIZEN_PORTAL_URL
b. Modify registry-deployment.yaml to change the following:
- connectionInfo_password
- connectionInfo_uri
- connectionInfo_username
- elastic_search_enabled
- registry_base_apis_enable
- taskExecutor_index_queueCapacity
- auditTaskExecutor_queueCapacity
- Signature_enabled
c. Modify keycloak-deployment.yaml to add the following information:
- DB_ADDR
- DB_DATABASE
- DB_PASSWORD
- DB_PORT
- DB_USER
- DB_VENDOR
- KEYCLOAK_USER
- KEYCLOAK_PASSWORD
- ENABLE_OTP_MESSAGE
- KAFKA_BOOTSTRAP_SERVERS
3. Run the deploy script to deploy the application on Kubernetes.
{% hint style="info" %} sudo sh deploy.sh -i <path to inventory file> -p <Directory containing Kubernetes Config files> -d <Private Docker Registry IP> -k <Kube Master Node IP> -s <Key file to access Kube Master> {% endhint %}
The indexes for efficient querying of the database tables do not get automatically created and hence need to be created manually. Execute registry_index.sql is present within the DIVOC codebase on the database. A restart of the registry service is required for this change to reflect.
Note: Database tables are only created when the first API request is received.
All content on this page by eGov Foundation is licensed under a Creative Commons Attribution 4.0 International License.