Skip to content

Repository files navigation

quickube

Instant Kubernetes clusters for prototypes, experimentation, development and testing.

Getting started

Install the CLI

We will make this easier, do not fear.

  1. Go to releases and find the latest release.

  2. Download the latest ".js" release

  3. Install to /usr/local/bin:

    $ sudo mv ~/Download/qkube-v0.32.1.js /usr/local/bin/qkube
    $ sudo chmod +x /usr/local/bin/qkube
    $ qkube ls

Have fun!

Login

Not relevant right now

$ qkube login<opens browser, GitHub/Google login/signup>

Create a new cluster

$ qkube newCreated cluster "fimble-shimble" of size medium (5000mcpu, 128GiB).Using cluster "fimble-shimble" as your default kubectl context.

Now you can play with it:

$ kubectl get all...

You can also request a different size:

$ qkube new --size smallCreating new cluster "dinker-pinker" of size small (1000mcpu, 64GiB)...Using cluster "dinker-pinker" as your default kubectl context.

You can request a cluster with a specific name:

$ qkube new --name my-bangbang-cluster

List all my clusters

$ qkube ls fimble-shimble medium* dinker-pinker small bangly-pangly small

Switch clusters

$ qkube use bangly-panglyCluster "bangly-pangly" is now your default kubectl context.

Delete a cluster

$ qkube rm bangly-panglyCluster "bangly-pangly" is gone forever.

Push an image to a cluster

# DockerfileFROM hashicorp/http-echo
ENV ECHO_TEXT "Hello, quickube!"
$ docker build -t dinker-pinker.quickube.sh/echo .
$ k8s registry password | docker login dinker-pinker.quickube.sh -u admin --password-stdin
$ docker push dinker-pinker.quickube.sh/echo

Deploy a service with public access

# manifest.yamlapiVersion: apps/v1kind: Deploymentmetadata:
name: echospec:
replicas: 1selector:
matchLabels:
app: echotemplate:
metadata:
labels:
app: echospec:
containers:
- name: echoimage: dinker-pinker.quickube.sh/echo:latestports:
- containerPort: 5678
---
apiVersion: v1kind: Servicemetadata:
name: echospec:
ports:
- port: 5678selector:
app: echotype: ClusterIP
---
apiVersion: networking.k8s.io/v1kind: Ingressmetadata:
name: echospec:
rules:
- https:
paths:
- backend:
service:
name: echoport:
number: 5678path: /echopathType: Prefix

And apply:

$ kubectl apply -f manifest.yaml

And now it can be accessed from the internets via HTTPS :-):

$ curl https://dinker-pinker.quickube.sh/echoHello, quickube!

Collaboration

Create an invite URL for a cluster:

$ qkube invite bangly-panglyhttps://quickube.sh/join/bangly-pangly?key=xosdfkjsdf39dfjhsdf9l

Invitee clicks the link, logs in, and the cluster is added to their account.

Now, it's just there:

$ qkube use bangly-pangly
Using cluster "bangly-pangly" as your default kubectl context.

API

Create a new cluster

POST /clusters

Request body:

{
"size": "small"| "medium" | "large" | "xlarge","region": "<provider-dependent>",
"provider": "aws"| "azure" | "gcp"
}

Response:

{
"name": "bangly-pangly",
"size": "small"| "medium" | "large" | "xlarge","region": "<provider-dependent>",
"provider": "aws"| "azure" | "gcp"
}

Use cluster

GET /clusters/:name/creds

Response:

{
"publicIp": "1.2.3.4",
"size": "medium",
"region": "us-east-1",
"provider": "aws",
"kubeconfig": "<kubeconfig...>",
"registryPassword": "x2923847usdcbjs8kjsdfsdf"
}

List clusters

GET /clusters

Response:

{
"clusters": [
{
"name": "bangly-pangly",
"size": "small"| "medium" | "large" | "xlarge","region": "<provider-dependent>",
"provider": "aws"| "azure" | "gcp"
}
]
}

Delete a cluster

DELETE /clusters/:name

Create an invite link

POST /clusters/:name/invites

Response:

{
"invite": "https://quickube.sh/join/bangly-pangly?key=xosdfkjsdf39dfjhsdf9l"
}

Development

Launching a single instance for tests

cd scripts/launch-instance
./launch.sh

(you'll need AWS creds in your environment)

Roadmap

  • IP allow list, in customer VPC
  • Custom domain names (e.g. bangly-pangly.acme.com)
  • Cluster templates (e.g. preloaded secrets, services, argo, etc)
  • Self-hosted in customer account and managed by us
  • Remote debugging with hot reloading
  • Auto-create for pull requests (preview environments)
  • RBAC

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages