Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions about-educates/_category_.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"label": "About Educates",
"position": 2
}

39 changes: 39 additions & 0 deletions about-educates/deployment.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
sidebar_position: 2
---

# Deployment

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.

## Deployment Components

The Educates Training Platform has some requirements for it's configuration to properly work on a Kubernetes cluster on a production environment.

These requirements are:

- A **Kubernetes cluster**. Educates has been tested on **GKE**, **EKS** and **AKS**, **Minishift** and **Kind**.
- 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.
- 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.
- 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.


```mermaid
architecture-beta
group k8s(cloud)[Kubernetes Cluster]

service educates(server)[Educates Training Platform] in k8s
service kyverno(internet)[Kyverno] in k8s
service kappcontroller(internet)[Kapp Controller] in k8s
service externaldns(internet)[ExternalDNS] in k8s
service certmanager(internet)[CertManager] in k8s

educates:T -- B:kyverno
educates:T -- B:kappcontroller
educates:T -- B:externaldns
educates:T -- B:certmanager
```

**Educates Training Platform** does provide an installation mechanism via it's CLI that will provide oppinionated
deployments of the required components on local clusters, **GKE** and **EKS**. It does installation in an imperative way,
but you can also install Educates declaratively using **kapp-controller**.
137 changes: 137 additions & 0 deletions about-educates/history.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
---
sidebar_position: 6
title: Educates History
---

This page documents the evolution of the Educates project from its inception as an internal tool to becoming an independent open-source project.

## Project Timeline

The following timeline shows the major milestones in Educates' history:

```mermaid
---
config:
timeline:
disableMulticolor: true
---
timeline
title: "Educates History"
Dec 2019: "Educates 1.x Born"
Sept 2020: "Spring One Conference"
Apr 2021: "Tanzu Learning Center"
Feb 2022: "Educates 2.x Launch"
Nov 2023: "Broadcom Acquisition"
Aug 2024: "Educates 3.x Release"
Oct 2024: "Independent OSS Project"
Jun 2025: "Educates Hub Launch"
```

## Key Milestones

### December 2019 - Educates 1.x is Born

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.

**Key Features:**
- Basic workshop hosting capabilities
- Kubernetes-based architecture
- Support for interactive training sessions

### September 2020 - Spring One Conference

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.

**Achievements:**
- Successfully scaled to support hundreds of concurrent users
- Validated the platform's reliability and performance
- Demonstrated real-world applicability for large conferences

### April 2021 - Tanzu Learning Center Launch

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.

**Impact:**
- Educates became a core component of VMware's training infrastructure
- Enabled structured learning paths for Tanzu products
- Expanded the platform's user base significantly

### February 2022 - Educates 2.x Launch

The Developer Advocates team resumed active development on Educates to create version 2.x, which was designed to power multiple learning platforms:
- **[Tanzu.academy](https://tanzu.academy)** - VMware Tanzu training platform
- **[Kube.academy](https://kube.academy)** - Kubernetes training platform
- **[Spring.academy](https://spring.academy)** - Spring framework training platform

**Version 2.x Improvements:**
- Enhanced workshop authoring capabilities
- Improved user experience
- Better integration with learning management systems
- Expanded support for different training scenarios

### November 2023 - Broadcom Acquisition

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.

**Transition Period:**
- Project ownership transferred to Broadcom
- Continued maintenance and support
- Strategic evaluation of project direction

### August 2024 - Educates 3.x Release

Educates 3.x was released with significant improvements focused on usability and deployment:

**Major Enhancements:**
- **Cloud Installers**: Simplified installation process for cloud providers
- **Improved Usability**: Enhanced user experience and workflow
- **Better Documentation**: Comprehensive guides and references
- **Enhanced Features**: New capabilities and integrations

This release marked a significant step forward in making Educates more accessible and easier to deploy.

### October 2024 - Independent Open Source Project

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.

**Benefits of Independence:**
- Community-driven development and governance
- Open contribution model
- Independent project roadmap
- Broader adoption and ecosystem growth

The project is now maintained by the Educates community, with contributions from developers, users, and organizations worldwide.

### June 2025 - Educates Hub Launch

The **Educates Hub** was launched, providing a centralized platform for:
- Discovering workshops
- Sharing workshop content
- Community collaboration
- Workshop marketplace

**Hub Features:**
- Workshop catalog and discovery
- Community contributions
- Easy workshop sharing
- Integration with Educates deployments

## Evolution Summary

Educates has evolved from a small internal tool to a comprehensive, independent open-source platform:

1. **Internal Tool (2019-2020)**: Created to solve specific needs of the Developer Advocates team
2. **Production Platform (2020-2023)**: Scaled to support enterprise training and multiple learning platforms
3. **Corporate Ownership (2023-2024)**: Maintained under VMware/Broadcom ownership
4. **Independent OSS (2024-present)**: Community-driven open-source project with broad adoption

## Looking Forward

As an independent open-source project, Educates continues to evolve with:
- Active community contributions
- Regular feature releases
- Expanding use cases and adoption
- Growing ecosystem of workshops and integrations

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.

164 changes: 164 additions & 0 deletions about-educates/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
---
sidebar_position: 1
title: Architecture
---

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.

## Architectural Components

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**.

```mermaid
graph TB
subgraph "Kubernetes Cluster"
subgraph "Educates Operator"
SM[Session Manager]
SC[Secrets Manager]
end

subgraph "Training Portal"
TP[Training Portal Service]
UI[Web UI]
API[REST API]
end

subgraph "Workshop Environment"
WE[Workshop Environment Namespace]
WR[Workshop Resources]
end

subgraph "Workshop Session"
WS[Workshop Session Namespace]
WT[Web Terminal]
VE[VS Code Editor]
KC[Kubernetes Console]
FS[File Server]
GS[Git Server]
IR[Image Registry]
DR[Docker Runtime]
VC[vCluster - Optional]
end
end

User[User] -->|Access| UI
User -->|API Calls| API
UI --> TP
API --> TP
TP -->|Creates| WE
TP -->|Creates| WS
SM -->|Manages| WE
SM -->|Manages| WS
SC -->|Manages| WS
WS --> WT
WS --> VE
WS --> KC
WS --> FS
WS --> GS
WS --> IR
WS --> DR
WS -.->|Optional| VC
```

## Core Components

```mermaid
graph TB
subgraph "Kubernetes Cluster"
subgraph "Educates Operator"
SM[Session Manager]
CM[Secrets Manager]
end
end
```

### Session Manager

The Session Manager is responsible for:
- Creating and managing workshop session namespaces
- Allocating resources to sessions
- Managing session lifecycle (creation, updates, deletion)
- Ensuring proper RBAC and resource quotas are applied

### Secrets Manager

The Secrets Manager handles:
- Secret management across workshop sessions
- Secret injection into workshop environments
- Secret copying between namespaces
- Secure secret distribution

### Workshop

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.

```mermaid
---
config:
class:
hideEmptyMembersBox: true
---
classDiagram
direction LR
TrainingPortal *-- "many" Workshop
class TrainingPortal{
Title
Logo
Authentication
Access Charactertistics
Capacity
Timeouts
Workshops[]
}
class Workshop{
Title
Description
ContentLocation
Extensions
Budgets and resource quotas
Capabilities
Additional Session Resources
Additional Environment Resources
}
```


### Training Portal

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.

```mermaid
graph TB
TP1[Training Portal]
TP2[Training Portal]
W1[Workshop 1]
W2[Workshop 2]
W3[Workshop 3]
W4[Workshop 4]
W5[Workshop 5]
W6[Workshop 6]


TP1 --> W1
TP1 --> W2
TP1 --> W3
TP1 --> W4
TP1 --> W6

TP2 --> W2
TP2 --> W3
TP2 --> W5
```

The training portal provides a **web based interface** for registering for workshops and accessing them.

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.


## Resource Flow

1. **Workshop Definition**: A `Workshop` resource is created, defining the workshop content and requirements
2. **Training Portal**: A `TrainingPortal` resource is created, which sets up the web interface
3. **Workshop Environment**: The portal creates `WorkshopEnvironment` resources for each workshop
4. **Workshop Session**: When a user requests access, a `WorkshopSession` resource is created
5. **Session Resources**: The operator creates all necessary resources for the session (namespaces, services, etc.)
21 changes: 21 additions & 0 deletions about-educates/local-dev.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
sidebar_position: 5
title: Local Development
---

For local development, Educates provides a streamlined experience using **kind** (Kubernetes in Docker):

- **Fully Configured Cluster**: The Educates CLI creates a complete Kubernetes cluster with all necessary components.
- **Container Registry**: A local container registry is automatically set up for publishing and pulling workshop images.
- **Local DNS Resolver**: A local DNS resolver improves the development workflow by providing proper DNS resolution for local services.
- **Container Registry Mirrors**: Container registry mirrors can be configured to mirror upstream registries to optimize download speed times on local clusters.
- **Wildcard TLS certificate and Certificate Authority**: A local wildcard TLS certificate and Certificate Authority can be registered to allow secure communication within the cluster.

This setup allows developers to:
- Test workshops locally before deploying to production
- Iterate quickly on workshop content
- Develop and test Educates features
- Experiment with different configurations

The local development environment mirrors the production setup, making it easy to transition from development to production.

Loading