Skip to content

Commit 6eaeccd

Browse files
committed
add concepts doc
1 parent 537f5f7 commit 6eaeccd

6 files changed

Lines changed: 120 additions & 12 deletions

File tree

content/en/docs/concepts/_index.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@ Local data centers consist of a bunch of physical machines (can range from perso
1212

1313
From an IT and assets management's perspective, one simply needs to ensure they run and, capacity planning in mind, that they do offer enough physical resources to sustain future applications hosting needs.
1414

15-
On each data-center, some physical machines (usually lightweight) will be dedicated to providing networking kind of services, through Kowabunga's **Kiwi** agents, while others will providing computing and storage capabilities, thanks to Kowabunga's **Kaktus** agents.
15+
On each data-center, some physical machines (usually lightweight) will be dedicated to providing networking kind of services, through Kowabunga's [Kiwi](/docs/concepts/kiwi/) agents, while others will providing computing and storage capabilities, thanks to Kowabunga's [Kaktus](/docs/concepts/kaktus/) agents.
1616

1717
![](concept.png)
1818

19-
The Kowabunga project then come with **Kahuna**, its orchestration engine. This is the masterpiece cornerstone of your architecture. Kahuna act as a maestro, providing API servicess for admins and end-users, and provising and controlling virtual resources on the various data-centers through Kowabunga connected agents.
19+
The Kowabunga project then come with [Kahuna](/docs/concepts/kahuna/), its orchestration engine. This is the masterpiece cornerstone of your architecture. Kahuna act as a maestro, providing API servicess for admins and end-users, and provising and controlling virtual resources on the various data-centers through Kowabunga connected agents.
2020

21-
Ultimately, DevOps consumers will only ever interface with **Kahuna**.
21+
Ultimately, DevOps consumers will only ever interface with [Kahuna](/docs/concepts/kahuna/).
2222

2323
So, how does magic happen ?
2424

@@ -32,10 +32,10 @@ So, how does magic happen ?
3232

3333
So, let's rewind, the Kowabunga projects consists of multiple core components:
3434

35-
- **Kahuna**: the core orchestration system. Remotely controls every resource and maintains ecosystem consistent. Gateway to the Kowabunga REST API.
36-
- **Kaktus**: the HCI node(s). Provides KVM-based virtual computing hypervisor with Ceph-based distributed storage services.
37-
- **Kiwi**: the SD-WAN node(s). Provides various network services like routing, firewall, DHCP, DNS, VPN, peering (with active-passive failover).
38-
- **Koala**: the WebUI. Allows for day-to-day supervision and operation of the various projects and services.
35+
- [Kahuna](/docs/concepts/kahuna/): the core orchestration system. Remotely controls every resource and maintains ecosystem consistent. Gateway to the Kowabunga REST API.
36+
- [Kaktus](/docs/concepts/kaktus/): the HCI node(s). Provides KVM-based virtual computing hypervisor with Ceph-based distributed storage services.
37+
- [Kiwi](/docs/concepts/kiwi/): the SD-WAN node(s). Provides various network services like routing, firewall, DHCP, DNS, VPN, peering (with active-passive failover).
38+
- [Koala](/docs/concepts/koala/): the WebUI. Allows for day-to-day supervision and operation of the various projects and services.
3939

4040
Aside from these, Kowabunga introduces the concept of:
4141

@@ -93,5 +93,5 @@ But aside from cost, Kowabunga has been developed by and for DevOps, the ones wh
9393
{{% alert color="success" title="Tips for Managed Services Provider" %}}
9494
If you're acting as a **Managed Services Provider** (MSP) having to sustain various applications for dozens if not hundreds of customers, **Kowabunga** might come in handy.
9595

96-
Simply picture your various customer on-premises data-centers as Kowabunga regions. All autonomous, un-aware of each others, non-exposed to Internet (hello IT !), yet fully remotely manageable in a single unique way, thanks to **Kahuna**'s orchestration !
96+
Simply picture your various customer on-premises data-centers as Kowabunga regions. All autonomous, un-aware of each others, non-exposed to Internet (hello IT !), yet fully remotely manageable in a single unique way, thanks to [Kahuna](/docs/concepts/kahuna/)'s orchestration !
9797
{{% /alert %}}

content/en/docs/concepts/kahuna.md

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,49 @@
11
---
22
title: Kahuna
3-
description: Learn about Kahuna conceptual architecture
3+
description: Learn about Kahuna orchestrator.
44
weight: 3
55
---
6+
7+
**Kahuna** is Kowabunga's orchestration system. Its name takes root from Hawaiian's **(Big) Kahuna** word, meaning *"the expert, the most dominant thing"*.
8+
9+
**Kahuna** remotely controls every resource and maintains ecosystem consistent. It's the gateway to Kowabunga REST API.
10+
11+
From a technological stack perspective, **Kahuna** features:
12+
13+
- a [Caddy](https://caddyserver.com/) public HTTPS frontend, reverse-proxying requests to:
14+
- [Koala](/docs/concepts/koala/) Web application, or
15+
- **Kahuna** orchestrator daemon
16+
- a [MongoDB](https://www.mongodb.com/) database backend.
17+
18+
The **Kahuna** orchestrator features:
19+
20+
- **Public REST API handler**: implements and operates the API calls to manage resources,interacting with rightful local agents through JSON-RPC over WSS.
21+
- **Public WebSocket handler**: agent connection manager, where the various agents establish secure WebSocket tunnels to, for being further controlled, bypassing on-premises firewall constraints and preventing the need of any public service exposure.
22+
- **Metadata endpoint**: where managed virtual instances and services can retrieve information services and self-configure themselves.
23+
24+
Kowabunga API folds into 2 type of assets:
25+
26+
- **admin** ones, used to handle objects like region, zone, kaktus and kiwi hosts, agents, networks ...
27+
- **user** ones, used to handle objects such as **Kompute**, **Kawaii**, **Konvey** ...
28+
29+
**Kahuna** implements robust RABC and segregation of duty as to ensure access boundaries, such as:
30+
31+
- Nominative RBAC capabilities and per-organization and team user management.
32+
- Per-project teams associationfor per-resource access control.
33+
- Support for both JWT bearer (human-to-server) and API-Key token-based (server-to-server) authentication mechanisms.
34+
- Support for 2-steps account creation/validation and enforced robust passwords/tokens usage(server-generated, user-input is prohibited).
35+
- Nominative robust HMAC ID+token credentials over secured WebSocket agent connections.
36+
37+
This ensures that:
38+
39+
- only rightful designated agents are able to establish WSS connections with **Kahuna**
40+
- created virtual instances can only retrieve the metadata profile they belong to (and self configure or update themselves at boot or runtime).
41+
- users can only see and manage resources for the projects they belong to.
42+
43+
{{< alert color="warning" title="Warning" >}}
44+
Despite being central, **Kahuna**'s implementation does not yet allow for stateless distribution.
45+
46+
The current design with DB caches and WebSocket connection makes it hard to distribute without involving a message queue middleware. This is a good problem for the future, but not for now. A single Kahuna instance is perefeclty capable of handling multiple thousands of concurrent connections, which we believe to be more than enough for a private platform orchestrator (it wouldn't for a large-scale public Cloud one).
47+
48+
Providing **Kahuna** with high-availability remains however fully possible, using good-old active-passive failover mechanism.
49+
{{< /alert >}}

content/en/docs/concepts/kaktus.md

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,44 @@
11
---
22
title: Kaktus
3-
description: Learn about Kaktus conceptual architecture
3+
description: Learn about Kaktus HCI node.
44
weight: 6
55
---
6+
7+
**Kaktus** stands for **K**owabunga **A**ffordable **K**vm and **TU**rnkey **S**torage (!!), basically, our Hyper-Converged Infrastructure (HCI) node.
8+
9+
While large virtualization systems such as VMware usually requires you to dedicate servers as computing hypervisors (with plenty of CPU and memory) and associate them with remote, extensive NAS or vSAN, providing storage, Kowabunga follows the opposite approach. Modern hardware is powerful enough to handle both computing and storage.
10+
11+
This approach allows you to:
12+
13+
- use commodity hardware, if needed
14+
- use heterogenous hardware, each member of the pool featuring more or less computing and storage resources.
15+
16+
If you're already ordering a heavy computing rackable server, extending it with 4-8 SSDs is always going to be cheaper than adding an extra enterprise SAN.
17+
18+
**Kaktus** nodes will then consists of
19+
20+
- a [KVM](https://linux-kvm.org/page/Main_Page)/[QEMU](https://www.qemu.org/) + [libvirt](https://libvirt.org/) virtualization computing stack. Featuring all possible VT-x and VT-d assistance on x86_64 architectures, it'll provide near passthrough virtualization capabilities.
21+
- several local disks, to be part of a region-global [Ceph](https://ceph.io/en/) distributed storage cluster.
22+
- the **Kowabunga Kaktus agent**, connected to **Kahuna**
23+
24+
**Kaktus agent** controls the local **KVM** hypervisor through **libvirt** backend and the local-network distributed **Ceph** storage, allowing management of virtual machines and disks.
25+
26+
{{< alert color="success" title="Note" >}}
27+
When configured for production-systems, Ceph storage cluster will be backed by cross-zones N-times (usually 3) replicated high-performance block devices, providing virtually infinitely scalable and resizeable disk volumes with byte-precision.
28+
29+
Virtual disks contents being sharded into thousands of fragmented objects, spread across the various disks from the various **Kaktus** instances of a given region, the "chance" of data loss or corruption is close to none.
30+
{{< /alert >}}
31+
32+
{{< alert color="warning" title="Enterprise Recommendations" >}}
33+
If you intend to use Kowabunga to run serious business (and we hope you'll do), you need to ensure to give Ceph its full potential.
34+
35+
Too many Cloud systems are today limited (CPU stuck in I/O wait) by disk bandwidth. Using Ceph, implies that your disks I/Os are to be adressed through network. Simply put, don't expect to get NVME SSDs access time.
36+
37+
In order to ensure the fastest storage possible, it remains key that you:
38+
39+
- use local NVMe SSDs on as much server instances as possible (they'll all be part of the same cluster pool).
40+
- use physical servers with at 10 Gbps network interfaces (25 Gbps is even better, link-agregation is a nice bonus).
41+
- ensure that your regional zones are less than 1ms away from each other.
42+
43+
This may sounds like heavy requirements, but by today enterprise-grade standards, it's really isn't anymore ;-)
44+
{{< /alert >}}

content/en/docs/concepts/kiwi.md

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
---
22
title: Kiwi
3-
description: Learn about Kiwi conceptual architecture
3+
description: Learn about Kiwi SD-WAN node.
44
weight: 5
55
---
6+
7+
**Kiwi** is Kowabunga SD-WAN node in your local data-center. It provides various network services like routing, firewall, DHCP, DNS, VPN and peering, all with active-passive failover (ideally over multiple zones).
8+
9+
**Kiwi** is central to our regional infrastructure to operate smoothly and internal gateway to all your projects **Kawaii** private network instances. It controls the local network configuration and creates/updates VLANs, subnets and DNS entries per API requests.
10+
11+
**Kiwi** offers a Kowabunga project's network isolation feature by enabling VLAN-bound, cross-zones, project-attributed, VPC L3 networking range. Created virtual instances and services are bound to VPC by default and never publicly exposed unless requested.
12+
13+
Access to project's VPC resources is managed either through:
14+
15+
- **Kiwi-managed** region-global VPN tunnels.
16+
- **Kawaii-managed** project-local VPN tunnels.
17+
18+
Decision to do or another depends on private Kowabunga IT policy.

content/en/docs/concepts/koala.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
11
---
22
title: Koala
3-
description: Learn about Koala conceptual architecture
3+
description: Learn about Koala Web application.
44
weight: 4
55
---
6+
7+
**Koala** is Kowabunga's WebUI. It allows for day-to-day supervision and operation of the various projects and services.
8+
9+
![](/docs/concepts/koala.png)
10+
11+
But should you ask a senior DevOps / SRE / IT admin, fully automation-driven, he'd damn anyone who'd have used the Web client to manually create/edit resources and messes around his perfecly maintained CasC.
12+
13+
We've all been there !!
14+
15+
That's why **Koala** has been designed to be read-only. While using Kowabunga's API, the project's directive is to enforce infrastructure and configuration as code, and such, prevents any means to do harm.
16+
17+
**Koala** is AngularJS based and usually located next to **Kahuna**'s instance. It provides users with capability to connect, check for the various projects (they belong to) resources, optionnally start/reboot/stop them and/or see various piece of information and ... that's it ;-)

content/en/docs/concepts/koala.png

557 KB
Loading

0 commit comments

Comments
 (0)