# Supported Environments

To use any of the following, specify the corresponding imageid within your scenario's index.json. Note each row includes links to a live example and source.

Environment Implementation Notes ImageID Example / Code
Ubuntu 18.04 Docker installed and running ubuntu:1804 Example / Code
Ubuntu 20.04 Docker installed and running ubuntu:2004 Example / Code
Kubernetes Cluster 1.18 2 nodes with kubeadm installed, nothing running. Based on Ubuntu. Designed for teaching how to use Kubernetes from scratch. See additional implementation notes below. kubernetes-cluster:1.18 Example / Code
Kubernetes Cluster 1.18 (Pre-configured) 2 node cluster with 1 main, 1 node. Based on Ubuntu. Run launch.sh when the scenario starts to ensure cluster is running. See additional implementation notes below. kubernetes-cluster-running:1.18 Example / Code
Java / Scala openjdk:15 Example / Code
Kotlin kotlin:1.3.61 Example / Code
Python 3.6 python:3.6 Example / Code
Python 3.7 python:3.7 Example / Code
Python 3.8 python:3.8 Example / Code
Go golang:1.14 Example / Code
Rust rust:1.44.1 Example / Code
Ruby ruby:2.5 Example / Code
C# (dotnet core 6.0) dotnet:6.0 Example / Code
R rlang:3.6.3 Example / Code
Node.js nodejs:12 Example / Code
Bash Lightweight Linux instance without Docker bash1804 Example / Code

Test all the environments and find source files here:

# Deprecated Environments

Do not use any of the images below, as they will be removed in the future. If any of your scenarios reference these environments, a warning will appear on your katacoda.com profile page, encouraging you to update to one of the supported images listed above.

Environment Implementation Notes ImageID
Docker Docker installed and running docker
Ubuntu 16.04 Docker installed and running ubuntu / ubuntu:1604
Ubuntu 19.04 Docker installed and running ubuntu1904
Centos 7 Docker installed and running TBC
Kubernetes Cluster 1.21 2 nodes with kubeadm installed, nothing running. Based on Ubuntu.
Designed for teaching how to use Kubernetes from scratch
kubernetes-cluster / kubernetes-cluster:1.14
Kubernetes Cluster 1.21 (Pre-configured) 2 node cluster with 1 main, 1 node. Based on Ubuntu.
Run launch.sh when the scenario starts to ensure cluster is running.
kubernetes-cluster-running / kubernetes-cluster-running:1.14
R rlang, rlang:3.4

# Implementation Notes

Certain environments have additional functionality or items to be aware of when working with them.

# Kubernetes / Minikube Port Forwarding

If you are planning to use the kubectl port-forward functionality within your scenario then please be aware that by default this only accepts connections from 127.0.0.1 and as such the Katacoda Proxy won't be able to access the port. Instead, please ensure that the command binds to 0.0.0.0 using kubectl port-forward --address 0.0.0.0.

# Kubernetes Cluster Running

With the running environment we aim that the user will always connect. However, when we have an unexpected load spike the cluster might still be starting when the user is connected.

To provide the user with feedback, we recommend that you automatically run a script called launch.sh when the user connects by calling it inside of your foreground.sh or background.sh file(s). This can be done automatically via a Foreground Script.

Without running launch.sh, users will see the following error when they attempt to access Kubernetes before it has started: The connection to the server localhost:8080 was refused - did you specify the right host or port?