> For the complete documentation index, see [llms.txt](https://obsrv.sunbird.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://obsrv.sunbird.org/guides/installation/data-center-installation-guide.md).

# Data Center

### Infrastructure Requirements

1. **Minimal Installation:**
   * You need a system with a minimum of 16 CPUs and 32GB RAM.
   * If running a multi-node cluster, ensure the network reachability between the nodes.

### Software Prerequisites

Installation of Obsrv requires the following CLI tools as prerequisites. Please note that the following instructions for installing the prerequisites are provided only for **Linux based operating systems**. Please follow the instructions for the specific tools depending upon your operating system.

#### MinIO

* Obsrv Installation requires an Object Store for backups, checkpointing and to store other configurations. We have tested our installations with MinIO, and is the recommended one for quick setup. Follow the instructions from <https://min.io/download> to install.

#### Helm

* Helm version 3.10.2 or later

  <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">curl https://get.helm.sh/helm-v3.10.2-linux-amd64.tar.gz -o helm.tar.gz &#x26;&#x26; tar -zxvf helm.tar.gz &#x26;&#x26; sudo mv linux-amd64/helm /usr/local/bin/
  </code></pre>
* Download from here - <https://helm.sh/docs/intro/install/>

#### Addons

* Ensure LoadBalancer is available. For example on a a local setup add-ons such as `metallb` can be enabled and configured. Following is a sample for minikube

  ```bash
  minikube addons enable metallb
  minikube addons configure metallb
  ```
* Ensure metrics is enabled. Following is a sample for minikube

  ```bash
  minikube addons enable metrics-server
  ```

#### Installation Steps:

1. Clone the `obsrv-automation` repository:

   ```bash
   git clone https://github.com/Sanketika-Obsrv/obsrv-automation.git
   ```
2. Navigate to the setup directory:

   ```bash
   cd ./obsrv-automation/terraform/modules/helm/unified-helm
   ```
3. Update the following values in `obsrv/values.yaml`  to reflect your MinIO environment.&#x20;

   ```yaml
   cloud-storage-provider: &global-cloud-storage-provider "s3"
   cloud-storage-region: &global-cloud-storage-region "<MINIO_REGION>"
   s3_bucket: &global-s3-bucket "<MINIO_BUCKET>"
   s3_access_key: &global-s3-access-key "<MINIO_ACCESS_KEY>"
   s3_secret_key: &global-s3-secret-access-key "<MINIO_SECRET_KEY>"
   region: &global-region "<MINIO_REGION>"
   s3_endpoint_url: &global-s3-endpoint-url "<MINIO_ENDPOINT_URL>"
   s3_path_style_access: &global-s3-path-style-access "true"
   ```
4. Export the KUBECONFIG environment variable with for your cluster. For example the below command is to set to its default path

   ```bash
   export KUBECONFIG=~/.kube/kubeconfig.yaml
   ```
5. First create the CRD’s that are required to install Obsrv

   ```bash
   kubectl create -f ./crds/
   ```
6. Run the below command to install the services. The following command may fail a couple of times due to timeouts while downloading the images. Run the same command for a couple of times incase of any errors for the installation to be successful

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">helm upgrade --install obsrv obsrv --namespace obsrv --create-namespace --atomic --debug --timeout 3600s
   </code></pre>

### Upgrade Steps:

1. Take latest code from **`obsrv-automation`** repository

   ```bash
   cd ./obsrv-automation
   git pull
   cd ./terraform/modules/helm/unified-helm
   ```
2. Ensure all the configuration configured during the installation is properly updated in all places.
3. Run the helm upgrade the cluster to the latest versions.

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">helm upgrade --install obsrv obsrv --namespace obsrv --create-namespace --atomic --debug --timeout 3600s
   </code></pre>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://obsrv.sunbird.org/guides/installation/data-center-installation-guide.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
