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.