Local Clusters & PaaS - give it a go!

Podplane is currently in “Developer Preview” pre-1.0 stage. I wanted to provide an update here because Local clusters are now at a point where I think folks could get some real value using them, and it would be great to focus on broader platform/architecture testing and stablity.

But first, thank you to everyone who has starred the Podplane GitHub repo, we are at 66 and counting! And a huge thank you to:

  • @cbro for being the first new contributor, with 5 PRs landing in Netsy, and 1 PR landing in Podplane.
  • @Max_Collier for being the first to raise a forum topic which resulted in a direct improvement to the security posture of Podplane Components.

It’s still early days, getting AWS clusters stable is very close, and Google Cloud / Proxmox support is on deck. However, here’s what works today for Local clusters:

installation

You can now install via Homebrew:

brew install podplane/tap/podplane

or via Go:

go install github.com/podplane/podplane@latest

air-gap support

Download all of the dependencies required to start local clusters:

podplane deps download

local start

Run a new local cluster:

podplane local start

deploy

Deploy the example “hello” app, view it in your browser, use kubectl or k9s with the local cluster:

podplane deploy web --name hello \
    --image default-registry.local/mirror/ghcr.io/podplane/hello:latest \
    --hostname hello.default.localhost

open https://hello.default.localhost:4433/

kubectl get pods

k9s

env vars

Pass an environment variable to the example “hello” app (it renders a custom message)

podplane deploy web --name hello \
    --image default-registry.local/mirror/ghcr.io/podplane/hello:latest \
    --hostname hello.default.localhost \
    -e HELLO_MESSAGE="G'day! 🚀"

open https://hello.default.localhost:4433/

secrets

Create a secret (vaulted using a key stored in your system keychain), and deploy the example “hello” app with that secret mounted and loaded from the mounted file:

podplane secret create --for hello secure-message

podplane deploy web --name hello \
    --image default-registry.local/mirror/ghcr.io/podplane/hello:latest \
    --hostname hello.default.localhost \
    --secret secure-message \
    -e HELLO_MESSAGE='/var/run/podplane/secrets/secure-message'

build

Build and deploy a custom Dockerfile/Containerfile without Docker/Podman or a daemon:

git clone git@github.com:podplane/ocimage.git

cd ocimage/examples/typescript/fullstack-tanstack-start

podplane build -f Containerfile.bun

podplane deploy web --name fullstack-tanstack-start \
    --image default-registry.local/apps/fullstack-tanstack-start:latest \
    --hostname fullstack-tanstack-start.default.localhost

open https://fullstack-tanstack-start.default.localhost:4433

Note that if your Dockerfile/Containerfile is unable to be built daemonless, podplane build (and the underlying ociamge) will attempt to fallback to a local docker command for performing the build. Read more here: GitHub - podplane/ocimage: Build, tag, and push container images, using a strict docker command and Dockerfile subset, with no runtime dependencies, no daemon, and an 11MB binary. · GitHub

logs

View your application logs:

podplane logs fullstack-tanstack-start

shell

Shell into your app:

podplane shell fullstack-tanstack-start

or if the container doesn’t have a sh or bash shell, get an ephemeral container sidecar:

podplane shell hello

wget -O - http://localhost:8080

Note that when you exit, podplane will prompt to rotate the Pod to effective remove the ephemeral container sidecar.

push

Copy a built image elsewhere:

podplane push apps/fullstack-tanstack-start apps/hello123

This example shows copying the image within the current local registry, but it also works with remote registries.


Thanks for reading! Please post your feedback on this forum, feel free to use it to send a DM, or if you’ve found a specific bug create an issue on the relevant Podplane GitHub repo.

1 Like