Skip to content

Commit 46ea08f

Browse files
author
Vadym Mudryi
committed
Updated README
1 parent 19cedfb commit 46ea08f

File tree

1 file changed

+117
-24
lines changed

1 file changed

+117
-24
lines changed

README.md

Lines changed: 117 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,128 @@
1-
# !!! Work in progress
1+
# 🚧 Work in Progress
22

3-
Not all features available in docker swarm solution are supported now.
3+
Please note that not all features from the Docker Swarm solution are supported yet.
44

5-
Limitations:
6-
- Only manual helm installation and upgrade
7-
- Manual initial users configuration for minio, mongodb, elastic search
8-
- No data reset feature
5+
### Limitations:
6+
- Manual Helm installation and upgrade only
7+
- Manual initial user configuration for MinIO, MongoDB, Elasticsearch
8+
- No data reset feature available
99

10-
# General information
10+
---
1111

12-
Repository to store infrastructure code for OpenCRVS deployment
12+
## General Information
1313

14+
This repository is used to store infrastructure code for deploying OpenCRVS.
15+
16+
---
1417

1518
# OpenCRVS on Kubernetes
1619

17-
## Kubernetes cluster Prerequisites
20+
## Prerequisites for Kubernetes Cluster
1821

1922
### Storage
2023

21-
Storage class with encryption or respective encryption is implemented at filesystem level:
22-
- For existing OpenCRVS installations make sure cluster has at least `hostpath` storage class configured and directories on file system are pointed to encrypted partitions. `hostpath` is the best option for drop-in replacement docker swarm to kubernetes, data will not be touched in that case. Later data can be migrated to more robust storage, e/g `local` or `nfs` volumes.
23-
- For new installations please check available options at official documentation [[1]](https://kubernetes.io/docs/concepts/storage/volumes/), [[2]](https://kubernetes.io/docs/concepts/storage/storage-classes/#provisioner). Recommended storage class for new installations is NFS.
24-
25-
Please also check all available options for CSI at: https://github.com/kubernetes-csi/
26-
27-
**NOTE:** Depending on available hardware resources it is also possible to optimize installation by splitting data into different types of volumes, e/g `hostpath` works better for Elasticsearch, while `NFS` is best option for `minio` and `mongo` (`postgres`)
28-
29-
30-
31-
# Links
32-
33-
[1] https://kubernetes.io/docs/concepts/storage/volumes/
34-
35-
[2] https://kubernetes.io/docs/concepts/storage/storage-classes/#provisioner
24+
Ensure your cluster has a storage class with encryption, or encryption is implemented at the filesystem level:
25+
26+
- **For existing OpenCRVS installations:**
27+
Make sure the cluster has at least the `hostpath` storage class configured and directories on the filesystem should point to encrypted partitions.
28+
`hostpath` is the best option for migration from Docker Swarm to Kubernetes; it allows data to remain untouched. Data can be migrated to more robust storage later, such as `local` or `nfs` volumes after OpenCRVS migration to Kubernetes.
29+
30+
- **For new installations:**
31+
- Please check the available storage options in the official documentation: [Kubernetes Volumes Documentation](https://kubernetes.io/docs/concepts/storage/volumes/) and [Kubernetes Storage Classes Documentation](https://kubernetes.io/docs/concepts/storage/storage-classes/#provisioner).
32+
- The recommended storage class for new installations is NFS.
33+
34+
Additionally, explore all possible options for CSI (Container Storage Interface) at the [CSI GitHub repository](https://github.com/kubernetes-csi/).
35+
36+
**NOTE:** Depending on your available hardware resources, you may optimize the installation by splitting data across different types of volumes. For example:
37+
- `Hostpath` works better for Elasticsearch.
38+
- `NFS` is the best option for MinIO and Mongo (or Postgres).
39+
40+
---
41+
42+
# Development with Kubernetes
43+
44+
## Prerequisites
45+
46+
Ensure you have one of the following solutions installed on your laptop:
47+
- Docker Desktop (with Kubernetes enabled)
48+
- MicroK8s
49+
- Minikube
50+
51+
You will also need the following tools for running the local development environment:
52+
- Git
53+
- Tilt
54+
- Helm
55+
- Kubectl
56+
57+
**NOTE:** This guide does not cover the installation of these prerequisites.
58+
59+
---
60+
61+
## For OpenCRVS Core Developers
62+
63+
You need to clone the [opencrvs-core](https://github.com/opencrvs/opencrvs-core) and [infrastructure](https://github.com/opencrvs/infrastructure) repositories. If these repositories are already on your laptop, ensure they are in the same folder.
64+
65+
1. Create a new folder or use an existing folder to store the repositories.
66+
2. Open a terminal (command line) and navigate to the folder.
67+
3. Clone the OpenCRVS Core repository:
68+
```bash
69+
git clone [email protected]:opencrvs/opencrvs-core.git
70+
```
71+
4. Clone the Infrastructure repository:
72+
```bash
73+
git clone [email protected]:opencrvs/infrastructure.git
74+
```
75+
5. Change directory to the OpenCRVS Core repository:
76+
```bash
77+
cd opencrvs-core
78+
```
79+
6. [Temporary Step] Switch to the k8s-version branch:
80+
```bash
81+
git checkout k8s-version
82+
```
83+
7. Run Tilt:
84+
```bash
85+
tilt up
86+
```
87+
8. Navigate to [http://localhost:10350/](http://localhost:10350/)
88+
89+
---
90+
91+
## For OpenCRVS Country Configuration Developers
92+
93+
You need to fork the [opencrvs-countryconfig](https://github.com/opencrvs/opencrvs-countryconfig) repository and clone the [infrastructure](https://github.com/opencrvs/infrastructure) repository. If these repositories are already on your laptop, ensure they are in the same folder.
94+
95+
1. Create a new folder or use an existing folder to store the repositories.
96+
2. Open a terminal (command line) and navigate to the folder.
97+
3. Clone your fork of the OpenCRVS Country Configuration repository:
98+
```bash
99+
git clone [email protected]:<your-github-account>/<your-repository>.git
100+
```
101+
4. Clone the Infrastructure repository:
102+
```bash
103+
git clone [email protected]:opencrvs/infrastructure.git
104+
```
105+
5. Change directory to your forked repository:
106+
```bash
107+
cd <your-repository>
108+
```
109+
6. [Temporary Step] Switch to the k8s-version branch:
110+
```bash
111+
git checkout k8s-version
112+
```
113+
7. Run Tilt:
114+
```bash
115+
tilt up
116+
```
117+
8. Navigate to [http://localhost:10350/](http://localhost:10350/)
118+
119+
---
120+
121+
Feel free to let me know if you need any further adjustments or have additional questions!
122+
---
123+
124+
125+
# Useful Links
126+
127+
- [Kubernetes Volumes Documentation](https://kubernetes.io/docs/concepts/storage/volumes/)
128+
- [Kubernetes Storage Classes Documentation](https://kubernetes.io/docs/concepts/storage/storage-classes/#provisioner)

0 commit comments

Comments
 (0)