Skip to content

Commit 9d9d868

Browse files
About educates (#39)
* Adding an about section, with diagrams and popup for carrousel * Updates to additional information about educates
1 parent 7195488 commit 9d9d868

File tree

23 files changed

+2756
-157
lines changed

23 files changed

+2756
-157
lines changed

about-educates/_category_.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"label": "About Educates",
3+
"position": 2
4+
}
5+

about-educates/deployment.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
---
2+
sidebar_position: 2
3+
---
4+
5+
# Deployment
6+
7+
Educates is a Kubernetes-based platform designed to provide interactive workshop environments. This section provides a comprehensive overview of the Educates architecture, its core concepts, and how the system works.
8+
9+
## Deployment Components
10+
11+
The Educates Training Platform has some requirements for it's configuration to properly work on a Kubernetes cluster on a production environment.
12+
13+
These requirements are:
14+
15+
- A **Kubernetes cluster**. Educates has been tested on **GKE**, **EKS** and **AKS**, **Minishift** and **Kind**.
16+
- A **domain name** so that training portals will be accessible from the internet. In our cloud deployment we use **ExternalDNS** to create the DNS records, but you can use any other DNS provider. On local cloud deployments you can rely on external services like **nip.io** or **xip.io** or use Educates Local Resolver.
17+
- A **wildcard certificate** for the domain name as we want access to the training portals to be secured. You can run Educates Training Platform over **http** but we don't recommend it. For local deployments, Educates CLI helps you manage your own certificates. For cloud deployments, you can use **cert-manager** to issue certificates from Let's Encrypt.
18+
- A **policy engine**. Educates can enforce policies on the cluster and on every workshop session. It can use Kubernetes native policies or external policy engines like **Kyverno**, which is our recommended policy engine and the default one.
19+
20+
21+
```mermaid
22+
architecture-beta
23+
group k8s(cloud)[Kubernetes Cluster]
24+
25+
service educates(server)[Educates Training Platform] in k8s
26+
service kyverno(internet)[Kyverno] in k8s
27+
service kappcontroller(internet)[Kapp Controller] in k8s
28+
service externaldns(internet)[ExternalDNS] in k8s
29+
service certmanager(internet)[CertManager] in k8s
30+
31+
educates:T -- B:kyverno
32+
educates:T -- B:kappcontroller
33+
educates:T -- B:externaldns
34+
educates:T -- B:certmanager
35+
```
36+
37+
**Educates Training Platform** does provide an installation mechanism via it's CLI that will provide oppinionated
38+
deployments of the required components on local clusters, **GKE** and **EKS**. It does installation in an imperative way,
39+
but you can also install Educates declaratively using **kapp-controller**.

about-educates/history.md

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
---
2+
sidebar_position: 6
3+
title: Educates History
4+
---
5+
6+
This page documents the evolution of the Educates project from its inception as an internal tool to becoming an independent open-source project.
7+
8+
## Project Timeline
9+
10+
The following timeline shows the major milestones in Educates' history:
11+
12+
```mermaid
13+
---
14+
config:
15+
timeline:
16+
disableMulticolor: true
17+
---
18+
timeline
19+
title: "Educates History"
20+
Dec 2019: "Educates 1.x Born"
21+
Sept 2020: "Spring One Conference"
22+
Apr 2021: "Tanzu Learning Center"
23+
Feb 2022: "Educates 2.x Launch"
24+
Nov 2023: "Broadcom Acquisition"
25+
Aug 2024: "Educates 3.x Release"
26+
Oct 2024: "Independent OSS Project"
27+
Jun 2025: "Educates Hub Launch"
28+
```
29+
30+
## Key Milestones
31+
32+
### December 2019 - Educates 1.x is Born
33+
34+
Educates was originally created as an internal tool for the VMware Tanzu Developer Advocates team. The team needed a platform to train users in Kubernetes and showcase developer tools and applications running on Kubernetes. This initial version laid the foundation for what would become a comprehensive training platform.
35+
36+
**Key Features:**
37+
- Basic workshop hosting capabilities
38+
- Kubernetes-based architecture
39+
- Support for interactive training sessions
40+
41+
### September 2020 - Spring One Conference
42+
43+
Educates proved its scalability and reliability when it was used at the Spring One conference to run **over 5,000 workshop executions**. This large-scale deployment demonstrated that Educates could handle enterprise-level training scenarios and validated the platform's architecture and design decisions.
44+
45+
**Achievements:**
46+
- Successfully scaled to support hundreds of concurrent users
47+
- Validated the platform's reliability and performance
48+
- Demonstrated real-world applicability for large conferences
49+
50+
### April 2021 - Tanzu Learning Center Launch
51+
52+
VMware launched **Tanzu Learning Center** using Educates 1.x as its foundation. This marked Educates' transition from an internal tool to a production platform powering VMware's official learning initiatives. The Learning Center provided structured training paths for VMware Tanzu products and technologies.
53+
54+
**Impact:**
55+
- Educates became a core component of VMware's training infrastructure
56+
- Enabled structured learning paths for Tanzu products
57+
- Expanded the platform's user base significantly
58+
59+
### February 2022 - Educates 2.x Launch
60+
61+
The Developer Advocates team resumed active development on Educates to create version 2.x, which was designed to power multiple learning platforms:
62+
- **[Tanzu.academy](https://tanzu.academy)** - VMware Tanzu training platform
63+
- **[Kube.academy](https://kube.academy)** - Kubernetes training platform
64+
- **[Spring.academy](https://spring.academy)** - Spring framework training platform
65+
66+
**Version 2.x Improvements:**
67+
- Enhanced workshop authoring capabilities
68+
- Improved user experience
69+
- Better integration with learning management systems
70+
- Expanded support for different training scenarios
71+
72+
### November 2023 - Broadcom Acquisition
73+
74+
Broadcom acquired VMware and gained ownership of the Educates project. This transition period involved organizational changes and strategic decisions about the future of the platform. During this time, the project continued to be maintained and used across the various learning platforms.
75+
76+
**Transition Period:**
77+
- Project ownership transferred to Broadcom
78+
- Continued maintenance and support
79+
- Strategic evaluation of project direction
80+
81+
### August 2024 - Educates 3.x Release
82+
83+
Educates 3.x was released with significant improvements focused on usability and deployment:
84+
85+
**Major Enhancements:**
86+
- **Cloud Installers**: Simplified installation process for cloud providers
87+
- **Improved Usability**: Enhanced user experience and workflow
88+
- **Better Documentation**: Comprehensive guides and references
89+
- **Enhanced Features**: New capabilities and integrations
90+
91+
This release marked a significant step forward in making Educates more accessible and easier to deploy.
92+
93+
### October 2024 - Independent Open Source Project
94+
95+
In a significant milestone, Educates was **donated by Broadcom** and became an **independent open-source project**. This transition ensured the project's long-term sustainability and community-driven development.
96+
97+
**Benefits of Independence:**
98+
- Community-driven development and governance
99+
- Open contribution model
100+
- Independent project roadmap
101+
- Broader adoption and ecosystem growth
102+
103+
The project is now maintained by the Educates community, with contributions from developers, users, and organizations worldwide.
104+
105+
### June 2025 - Educates Hub Launch
106+
107+
The **Educates Hub** was launched, providing a centralized platform for:
108+
- Discovering workshops
109+
- Sharing workshop content
110+
- Community collaboration
111+
- Workshop marketplace
112+
113+
**Hub Features:**
114+
- Workshop catalog and discovery
115+
- Community contributions
116+
- Easy workshop sharing
117+
- Integration with Educates deployments
118+
119+
## Evolution Summary
120+
121+
Educates has evolved from a small internal tool to a comprehensive, independent open-source platform:
122+
123+
1. **Internal Tool (2019-2020)**: Created to solve specific needs of the Developer Advocates team
124+
2. **Production Platform (2020-2023)**: Scaled to support enterprise training and multiple learning platforms
125+
3. **Corporate Ownership (2023-2024)**: Maintained under VMware/Broadcom ownership
126+
4. **Independent OSS (2024-present)**: Community-driven open-source project with broad adoption
127+
128+
## Looking Forward
129+
130+
As an independent open-source project, Educates continues to evolve with:
131+
- Active community contributions
132+
- Regular feature releases
133+
- Expanding use cases and adoption
134+
- Growing ecosystem of workshops and integrations
135+
136+
The project's journey from an internal tool to an independent open-source platform demonstrates its value and the commitment of its community to making interactive Kubernetes training accessible to everyone.
137+

about-educates/index.md

Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
---
2+
sidebar_position: 1
3+
title: Architecture
4+
---
5+
6+
Educates is a Kubernetes-based platform designed to provide interactive workshop environments. This section provides a comprehensive overview of the Educates architecture, its core concepts, and how the system works.
7+
8+
## Architectural Components
9+
10+
The core architecture consists of the **Session Manager**, **Secrets Manager**, which are the main Kubernetes Controllers. These controllers manages a set of **Custom Resource Definitions (CRDs)**, the **Training Portal** and **Workshop**, which are the main Kubernetes Resources a user will deal with. These resources work together to create **Workshop Environments** and **Workshop Sessions**.
11+
12+
```mermaid
13+
graph TB
14+
subgraph "Kubernetes Cluster"
15+
subgraph "Educates Operator"
16+
SM[Session Manager]
17+
SC[Secrets Manager]
18+
end
19+
20+
subgraph "Training Portal"
21+
TP[Training Portal Service]
22+
UI[Web UI]
23+
API[REST API]
24+
end
25+
26+
subgraph "Workshop Environment"
27+
WE[Workshop Environment Namespace]
28+
WR[Workshop Resources]
29+
end
30+
31+
subgraph "Workshop Session"
32+
WS[Workshop Session Namespace]
33+
WT[Web Terminal]
34+
VE[VS Code Editor]
35+
KC[Kubernetes Console]
36+
FS[File Server]
37+
GS[Git Server]
38+
IR[Image Registry]
39+
DR[Docker Runtime]
40+
VC[vCluster - Optional]
41+
end
42+
end
43+
44+
User[User] -->|Access| UI
45+
User -->|API Calls| API
46+
UI --> TP
47+
API --> TP
48+
TP -->|Creates| WE
49+
TP -->|Creates| WS
50+
SM -->|Manages| WE
51+
SM -->|Manages| WS
52+
SC -->|Manages| WS
53+
WS --> WT
54+
WS --> VE
55+
WS --> KC
56+
WS --> FS
57+
WS --> GS
58+
WS --> IR
59+
WS --> DR
60+
WS -.->|Optional| VC
61+
```
62+
63+
## Core Components
64+
65+
```mermaid
66+
graph TB
67+
subgraph "Kubernetes Cluster"
68+
subgraph "Educates Operator"
69+
SM[Session Manager]
70+
CM[Secrets Manager]
71+
end
72+
end
73+
```
74+
75+
### Session Manager
76+
77+
The Session Manager is responsible for:
78+
- Creating and managing workshop session namespaces
79+
- Allocating resources to sessions
80+
- Managing session lifecycle (creation, updates, deletion)
81+
- Ensuring proper RBAC and resource quotas are applied
82+
83+
### Secrets Manager
84+
85+
The Secrets Manager handles:
86+
- Secret management across workshop sessions
87+
- Secret injection into workshop environments
88+
- Secret copying between namespaces
89+
- Secure secret distribution
90+
91+
### Workshop
92+
93+
Provides the definition of a workshop. Preloaded by an administrator into the cluster, it defines where the workshop content is hosted, or the location of a container image which bundles the workshop content and any additional tools required for the workshop. The definition also lists additional resources that should be created which are to be shared between all workshop sessions, or for each session, along with details of resources quotas and access roles required by the workshop.
94+
95+
```mermaid
96+
---
97+
config:
98+
class:
99+
hideEmptyMembersBox: true
100+
---
101+
classDiagram
102+
direction LR
103+
TrainingPortal *-- "many" Workshop
104+
class TrainingPortal{
105+
Title
106+
Logo
107+
Authentication
108+
Access Charactertistics
109+
Capacity
110+
Timeouts
111+
Workshops[]
112+
}
113+
class Workshop{
114+
Title
115+
Description
116+
ContentLocation
117+
Extensions
118+
Budgets and resource quotas
119+
Capabilities
120+
Additional Session Resources
121+
Additional Environment Resources
122+
}
123+
```
124+
125+
126+
### Training Portal
127+
128+
Created by an administrator in the cluster to trigger the deployment of a training portal. The training portal can provide access to **one or more** distinct workshops defined by a **Workshop** resource.
129+
130+
```mermaid
131+
graph TB
132+
TP1[Training Portal]
133+
TP2[Training Portal]
134+
W1[Workshop 1]
135+
W2[Workshop 2]
136+
W3[Workshop 3]
137+
W4[Workshop 4]
138+
W5[Workshop 5]
139+
W6[Workshop 6]
140+
141+
142+
TP1 --> W1
143+
TP1 --> W2
144+
TP1 --> W3
145+
TP1 --> W4
146+
TP1 --> W6
147+
148+
TP2 --> W2
149+
TP2 --> W3
150+
TP2 --> W5
151+
```
152+
153+
The training portal provides a **web based interface** for registering for workshops and accessing them.
154+
155+
It also provides a **REST API** for requesting access to workshops, allowing custom front ends to be created which integrate with separate identity providers and which provide an alternate means for browsing and accessing workshops.
156+
157+
158+
## Resource Flow
159+
160+
1. **Workshop Definition**: A `Workshop` resource is created, defining the workshop content and requirements
161+
2. **Training Portal**: A `TrainingPortal` resource is created, which sets up the web interface
162+
3. **Workshop Environment**: The portal creates `WorkshopEnvironment` resources for each workshop
163+
4. **Workshop Session**: When a user requests access, a `WorkshopSession` resource is created
164+
5. **Session Resources**: The operator creates all necessary resources for the session (namespaces, services, etc.)

about-educates/local-dev.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
---
2+
sidebar_position: 5
3+
title: Local Development
4+
---
5+
6+
For local development, Educates provides a streamlined experience using **kind** (Kubernetes in Docker):
7+
8+
- **Fully Configured Cluster**: The Educates CLI creates a complete Kubernetes cluster with all necessary components.
9+
- **Container Registry**: A local container registry is automatically set up for publishing and pulling workshop images.
10+
- **Local DNS Resolver**: A local DNS resolver improves the development workflow by providing proper DNS resolution for local services.
11+
- **Container Registry Mirrors**: Container registry mirrors can be configured to mirror upstream registries to optimize download speed times on local clusters.
12+
- **Wildcard TLS certificate and Certificate Authority**: A local wildcard TLS certificate and Certificate Authority can be registered to allow secure communication within the cluster.
13+
14+
This setup allows developers to:
15+
- Test workshops locally before deploying to production
16+
- Iterate quickly on workshop content
17+
- Develop and test Educates features
18+
- Experiment with different configurations
19+
20+
The local development environment mirrors the production setup, making it easy to transition from development to production.
21+

0 commit comments

Comments
 (0)