Skip to content

Commit 79d78b7

Browse files
Add requirements & basic-architecture doc (#73)
Signed-off-by: Arnob kumar saha <arnob@appscode.com>
1 parent 2d9d55a commit 79d78b7

4 files changed

Lines changed: 93 additions & 0 deletions

File tree

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
---
2+
layout: 'guide'
3+
menu:
4+
docs_menu:
5+
identifier: guide-architecture
6+
name: Architecture
7+
parent: guide-start
8+
weight: 12
9+
menu_name: docs_menu
10+
section_menu: guides
11+
---
12+
13+
# Architecture
14+
Let's first discuss some basic terminologies, those will be repeated many times throughout the whole docs. The below picture will help in describing the terminologies:
15+
16+
![architecture](images/architecture.png)
17+
18+
### ACE
19+
ACE is the central management cluster where we will deploy all the ui-components. Namely the `backend server(ace-platform-api)`, `kubedb-ui`, `cluster-ui`, `billing-ui`, `platform-ui`, `grafana-ui`, ingresses etc. This will be mainly used by the administrators & devops engineers.
20+
As this is the central point of management, we call it `Management cluster`. As all the UI-components installed in this, we sometimes call `UI cluster`.
21+
22+
We also have native-integration of [OCM hub-spoke model](https://open-cluster-management.io/docs/concepts/architecture/). This is by-default enabled. This integration enables the cluster-manager to easily do similar changes(for example: installing a feature) centrally.
23+
ACE is used as the hub of OCM mode. Thats why we call this `Hub cluster` too.
24+
25+
The ACE cluster can be a single-node k3s cluster for staging or development. Or a full-fledged multi-node cluster for prod.
26+
27+
The installer page on the `selfhost-ui` on appscode.com provides instructions for quickly setting up a K3s cluster to get started immediately.
28+
29+
### DBaaS
30+
DBaaS cluster is the main cluster for database users. This can be of two main type: spoke cluster, general imported cluster.
31+
While importing, if someone make it a spoke, then cluster-manager-spoke features will be installed by the Hub cluster.
32+
If you don't want to manage it from the hub, we can just import it as a general cluster. In that case, that auto-sync from hub will not happen.
33+
34+
35+
Both ACE & DBaaS clusters can be of any vendors like AWS, Azure, Google Cloud etc. It can be an on-prem cluster too.
53.2 KB
Loading
135 KB
Loading
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
---
2+
layout: 'guide'
3+
menu:
4+
docs_menu:
5+
identifier: guide-ace-requirements
6+
name: ACE Requirements
7+
parent: guide-start
8+
weight: 14
9+
menu_name: docs_menu
10+
section_menu: guides
11+
---
12+
13+
# Requirements to deploy ACE
14+
We will discuss the resources requirements. networking requirements & best practices for deploying your first ACE & DBaaS cluster. It is highly recommended to read the [architecture](https://appscode.com/docs/en/guides/get-started/architecture.html) doc first before continuing.
15+
16+
## Requirements for ACE Cluster
17+
18+
### 1. Resources
19+
**Minimum**: Single node with 4 cpu, 16 GB ram, 100 GB disk attached. A k3s cluster will be deployed on that VM. And then the ui-components will be installed.
20+
21+
**HA Deployment**: 3 worker nodes, each with 4 cpu, 16 GB ram, PVC support (3000 iops, 200 GB disk across multiple pvcs) and LB service support. The Kubernetes control plane should be also HA.
22+
23+
### 2. Networking
24+
If you want to run in an air-gapped environments (disconnected from internet), You will have to make sure that all images are cached locally. You can use Harbor or jfrog artifactory for this.
25+
26+
We maintain a complete list of the [charts](https://github.com/appscode-cloud/installer/blob/master/catalog/copy-images.sh) & [images](https://github.com/appscode-cloud/installer/blob/master/catalog/ace.yaml).
27+
28+
#### Connectivity
29+
These are the required connectivities to everything work correctly:
30+
- `DB pod to pod` communication using dns (k8s service discovery)
31+
- `operator to db-pods` for health checks
32+
- `db pods to kube-apiserver` for failover handling (update pod label when it becomes a primary replica)
33+
- `operator to kube-apiserver` for CRUD
34+
- `Backup pods to db pods` over network and on node level so they can access the shared disks.
35+
- `Backup pods to object storage` (s3 , minio etc.)
36+
37+
#### Port Requirements
38+
1. 80 - Auto redirects to https
39+
2. 443 - Https Ingress port
40+
3. 4222 - NATS.io port
41+
4. 4224 - s3-proxy service port
42+
43+
Here is a sample video on how you can setup ACE:
44+
<iframe width="560" height="315" src="https://www.youtube.com/embed/1diG8qq73f4?si=pisqA3gOrfO1wxlx" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
45+
46+
## Requirements for DBaaS Cluster
47+
### 1. Resources
48+
Depends on how many and what size of databases users are running.
49+
50+
Minimum: Kubernetes cluster with 3 worker nodes, each with 8- 16GB ram, PVC support (3000 iops, 200 GB disk across multiple pvcs) and LB service support.
51+
52+
Note that, The largest node must be able to fit the largest DB Pod(in terms of CPU, memory).
53+
54+
### 2. Networking
55+
Literally all the Networking requirements described for ACE are also applicable here, except the `Port Requiements` part.
56+
Only one additional requirement here is that the DBaaS cluster should be accessible from the management/ACE cluster.
57+
58+
You now have an overall idea on the requirements. So, [Login](https://appscode.com/docs/en/guides/get-started/register-login.html) into your account & get going with our [installer](https://appscode.com/selfhost/). Happy ACE!

0 commit comments

Comments
 (0)