Version 2.1.0
New Features
Added a new CLI for Educates. This can be used to provision a local Kind cluster with Educates deployed, create new workshops, publish them to a local image registry, and deploy them to Educates.
Added support for deploying Educates natively on ARM64. If running macOS with native Apple silicon the option does still exist to run using AMD64 using Rosetta mode. When using the new Educates CLI, the latter requires that you use the macOS AMD64 version of the CLI rather than the ARM64 version.
Added ability to source workshop content from a local directory in the workshop container. This was added to permit workshop content to be taken from a mounted volume. This could be a persistent volume preloaded with the workshop content as part of the workshop environment, or could be a preclaimed volume mapping to host file system, the latter permitting the injection of workshop content from a local host when using a Kind cluster.
Add means to override the image registry in the
TrainingPortal
, which would be used when interpolating$(image_repository)
in theWorkshop
definition settings for the workshop image and content.Generate analytic events from the session manager when
TrainingPortal
,WorkshopEnvironment
andWorkshopSession
are being processed. Note that these are only reported when webhook URL for reporting events is provided in global configuration and not when only specified viaTrainingPortal
.The workshop container home directory is now shared with the
dockerd
side car container whendocker
support is enabled for a session. This means that any containers started using docker can mount the workshop container home directory if required to access workshop files.Added
docker-compose
CLI extension fordocker
to the workshop base image.Added ability to specify services that should be started automatically when
docker
support is enabled for a session. Such services need to be specified usingdocker compose
configuration within the workshop definition. For more information see Enabling ability to use docker.It is now possible to specify the Kubernetes version to be deployed when using a virtual cluster, as well as provide a list of raw Kubernetes resource objects that should be added to the cluster when created. For more information see Provisioning a virtual cluster.
Added option to specify the runtime class for workshop pods. This is set in the global configuration when Educates is installed and makes it possible to force workshop containers to run in Kata containers for extra security. For more information see Overriding container runtime class.
A random password token for use with arbitrary services deployed along with a workshop is now provided. The name of the data variable for use in the workshop definition and workshop instructions is
services_password
. The name of the environment variable accessable within the workshop container isSERVICES_PASSWORD
.An SSH key pair is now generated for each workshop session. The value of each component of the SSH key pair are made available as a secret and variables in the workshop definition. They are also injected into the workshop container and placed into
$HOME/.ssh
directory.In addition to being able to set environment variables for a workshop session using
profile.d
scripts included with workshop content, it is now possible from asetup.d
file to output a list of the environment variables to be set by writing then to a.env
file the name of which is given by theWORKSHOP_ENV
environment variable available to thesetup.d
script.Added support for syntax highlighting of fenced code blocks in markdown version of workshop instructions.
Added REST API endpoint to training portal for terminating a workshop.
Added stop button to top right of initial splash screen when workshop dashboard is accessed. If during initial workshop session creation a failure occurs and the browser is stuck on the splash screen, the stop button can be pressed and the workshop session will be deleted and the browser redirected back to the training portal or other configured workshop portal.
Added support for deploying an assets repository (HTTP server) for a workshop environment, which is prepopulated with files based on a vendir configuration snippet. This can be used to cache workshop content, packages, or any other files locally in the Kubernetes cluster so that it is not necessary to fetch files from remote sites. For more information see Shared assets repository.
Features Changed
Improvements to how status of deployment for training portal, workshop environment and workshop session are tracked in custom resources, with the details of any errors added via a status message.
Experimental code related to running
dockerd
in rootless and unprivileged modes removed as never function correctly, in part because require kernel used on nodes to be configured in a specific manner.Update
kubectl
versions available so can support Kubernetes 1.20-1.25.The workshop image now uses port 10081 instead of port 10080 for the inbound gateway process for the workshop dashboard. Any custom workshop images will need to be rebuilt against latest workshop base image. This change should make no difference when hosting workshops in Kubernetes, but will effect any use case where workshop image was being used directly in local docker.
Changed convention for default ingress domain when running workshop image directly in local docker. Now uses
127-0-0-1.nip.io
instead of using127.0.0.1.nip.io
.Access to Kubernetes network policies in the workshop session namespaces are now blocked from the workshop user so they cannot find out which IP addresses they are being blocked from accessing.
Minimum value for memory limit ranges changed from 1Mi to 1M as metric unit is smaller than SI unit.
When using the version of Contour bundled with Educates, HTTP/2 is disabled on the ingress router so that macOS/iOS Safari (Webkit) browser will work more reliably for accessing workshop sessions. If installing Educates into a cluster where an ingress router already exists, you would need to separately configure it to disable HTTP/2 if required.
When using the REST API of the training portal, a robot account can now extend or terminate running workshop sessions.
When overriding the source for workshop instructions, replacing it with an alternate web application process running in the workshop container, the new provider of the workshop instructions can now use web sockets.
When overriding the source for workshop instructions, and the web server hosting the instructions is a distinct host, provided workshop instructions are still accessed via the embedded view on the left hand side of the workshop dashboard, they will be able to use Javascript events to trigger functionality required for clickable actions.
Bugs Fixed
When waiting for
ResourceQuota
to be ready, check forused
status value as well ashard
. This was to avoid timing issue when using OpenShift where updates toused
status value were slower and not waiting could result in subsequent error when creating resources subject to quota on the number of that resource type.Change handling of cover pages to avoid white page being flashed between cover pages presented by training portal and workshop dashboard.
Fix button to dismiss cover page for workshop dashboard and automatically remove it after a period of time when workshop setup taking too long.
Fix issues with removing/adding workshops directly from
TrainingPortal
instance where the correspondingWorkshop
definition was missing. This was resulting in any changes to set of workshop being ignored due to errors.Training portal would fail to reconcile list of workshops if the list of workshops was set to be an empty list.