jumppad



Jumppad is a tool for building modern cloud native development environments. Using the Jumppad configuration language you can create OCI containers, Nomad/Kubernetes clusters and more.
Community
Join our community on Discord: https://discord.gg/ZuEFPJU69D
Questions
Is Jumppad like Terraform?
Kind of, but more about local environments rather than infrastructure
Why not use Docker Compose?
Docker Compose is one of our favourite tools but we found it does not manage dependencies particulary well. Compose also works on a really low level of abstraction. Jumppad addresses these missing features.
Is Jumppad just for Docker?
No, Jumppad is designed to work with Docker, Podman, Raw binaries, etc. At present we only have a Driver for Docker and Podman, but others are on our Roadmap.
Can I use Jumppad for anything other than Dev environments?
Yes, Jumppad can be used to create interactive documentation for your applications and redistributable demo environments to show off your tool or product.
Example Jumppad Config
The following snippets are examples of things you can build with Jumppad, for more detailed examples please see the Blueprints repo https://github.com/shipyard-run/blueprints
Kubernetes Cluster
resource "network" "cloud" {
subnet = "10.5.0.0/24"
}
resource "k8s_cluster" "k3s" {
driver = "k3s" // default
nodes = 1 // default
network {
id = resource.network.cloud.id
}
copy_image {
name = "ghcr.io/jumppad-labs/connector:v0.4.0"
}
}
resource "k8s_config" "fake_service" {
cluster = resource.k8s_cluster.k3s
paths = ["./fake_service.yaml"]
health_check {
timeout = "240s"
pods = ["app.kubernetes.io/name=fake-service"]
}
}
resource "helm" "vault" {
cluster = resource.k8s_cluster.k3s
repository {
name = "hashicorp"
url = "https://helm.releases.hashicorp.com"
}
chart = "hashicorp/vault"
version = "v0.18.0"
values = "./helm/vault-values.yaml"
health_check {
timeout = "240s"
pods = ["app.kubernetes.io/name=vault"]
}
}
resource "ingress" "vault_http" {
port = 18200
target {
resource = resource.k8s_cluster.k3s
port = 8200
config = {
service = "vault"
namespace = "default"
}
}
}
resource "ingress" "fake_service" {
port = 19090
target {
resource = resource.k8s_cluster.k3s
port = 9090
config = {
service = "fake-service"
namespace = "default"
}
}
}
output "VAULT_ADDR" {
value = resource.ingress.vault_http.address
}
output "KUBECONFIG" {
value = resource.k8s_cluster.k3s.kubeconfig
}