Commit a57f5128 authored by George Papathanail's avatar George Papathanail
Browse files

Add Readme file

parent 7dec27d9
Loading
Loading
Loading
Loading

helm/README.md

0 → 100644
+288 −0
Original line number Diff line number Diff line
# Open Operator Platform (OOP)

## KIND Deployment via Helm

---

## 1. Introduction

This repository provides a **Helm-based reference deployment of the Open Operator Platform (OOP)** on a **local Kubernetes-in-Docker (KIND) cluster**.

The deployment enables **fast, reproducible installation** of core OOP components for:

* Local development
* Integration testing
* API experimentation
* Research and demonstrations

⚠️ **This setup is intended for development and testing only** and MUST NOT be used in production environments.

---

## 2. Deployed Components

The solution deploys the following components inside a single KIND cluster:

* **Open Exposure Gateway (OEG)**

  * Northbound API entry point for tenants/applications
  * Handles application onboarding and exposure workflows
  * Backed by MongoDB

* **Service Resource Manager (SRM)**

  * Manages application artefacts and lifecycle
  * Supports resource orchestration workflows
  * Backed by MongoDB with PV/PVC support

---

## 3. High-Level Architecture

```
+---------------------------------+
|          KIND Cluster            |
|                                 |
|  +---------------------------+  |
|  | Open Exposure Gateway     |  |
|  | (OEG)                     |  |
|  | - REST APIs               |  |
|  | - MongoDB                 |  |
|  +---------------------------+  |
|                                 |
|  +---------------------------+  |
|  | Service Resource Manager  |  |
|  | (SRM)                     |  |
|  | - Artefact Manager        |  |
|  | - MongoDB (PV/PVC)        |  |
|  +---------------------------+  |
|                                 |
+---------------------------------+
```

---

## 4. Repository Structure

```
.
├── deploy-on-kind.sh              # Automated deployment script
├── kind-oop-config.yaml           # KIND cluster configuration
├── RUN_THIS_NOW.txt               # Minimal quick start
├── KIND_QUICK_START.txt
├── KIND_DEPLOYMENT_GUIDE.md
└── oop-platform-chart/
    ├── Chart.yaml                 # Umbrella Helm chart
    ├── values.yaml                # Central configuration
    ├── README.md
    ├── QUICK_DEPLOY.md
    ├── VERIFICATION.txt
    └── charts/
        ├── oeg/                   # Open Exposure Gateway chart
        └── srm/                   # Service Resource Manager chart
```

---

## 5. Prerequisites

### 5.1 Required Software

| Tool    | Minimum Version |
| ------- | --------------- |
| Docker  | 20.x            |
| KIND    | 0.20            |
| kubectl | 1.25            |
| Helm    | v3+             |
| Bash    | 4+              |

### 5.2 Verify Installation

```bash
docker --version
kind --version
kubectl version --client
helm version
```

---

## 6. Deployment Methods

Two deployment approaches are supported:

1. **Automatic deployment** (recommended)
2. **Manual step-by-step deployment**

---

## 7. Automatic Deployment (Recommended)

### 7.1 Description

The automatic deployment method:

* Creates a KIND cluster
* Configures Kubernetes networking
* Installs all OOP components via Helm

All steps are executed by a single script.

### 7.2 Steps

```bash
chmod +x deploy-on-kind.sh
./deploy-on-kind.sh
```

### 7.3 What This Script Does

1. Creates a KIND cluster using `kind-oop-config.yaml`
2. Configures `kubectl` context
3. Deploys the umbrella Helm chart (`oop-platform-chart`)
4. Waits for core services to start

---

## 8. Manual Deployment (Step-by-Step)

### 8.1 Create the KIND Cluster

```bash
kind create cluster \
  --name oop \
  --config kind-oop-config.yaml
```

Verify cluster:

```bash
kubectl cluster-info
```

---

### 8.2 Deploy OOP Using Helm

From the repository root:

```bash
helm install oop-platform ./oop-platform-chart
```

To upgrade an existing deployment:

```bash
helm upgrade oop-platform ./oop-platform-chart
```

---

### 8.3 Verify Deployment

```bash
kubectl get pods -A
kubectl get svc -A
```

All pods should reach `Running` or `Completed` state.

---

## 9. Configuration

All configuration parameters are centralized in:

```
oop-platform-chart/values.yaml
```

Supported configuration options include:

* Container images and tags
* Service ports
* MongoDB configuration
* Ingress enablement
* Resource limits and requests

After modifying values:

```bash
helm upgrade oop-platform ./oop-platform-chart
```

---

## 10. Accessing Services

Services are exposed via Kubernetes `Service` objects.

Typical access methods:

* `kubectl port-forward`
* Ingress (if enabled)
* NodePort (local testing)

### Example: Port-forward OEG

```bash
kubectl port-forward svc/oegcontroller 8080:8080
```

---

## 11. Verification & Health Checks

```bash
kubectl get deployments -A
kubectl get statefulsets -A
kubectl describe pod <pod-name>
```

Refer to:

```
oop-platform-chart/VERIFICATION.txt
```

---

## 12. Cleanup

### 12.1 Remove Helm Deployment

```bash
helm uninstall oop-platform
```

### 12.2 Delete KIND Cluster

```bash
kind delete cluster --name oop
```

---

## 13. Troubleshooting

### Pods Not Starting

```bash
kubectl logs <pod-name>
kubectl describe pod <pod-name>
```

### Helm Errors

```bash
helm status oop-platform
```

### Reset Everything

```bash
kind delete cluster --name oop
./deploy-on-kind.sh
```