Repository navigation
Replies: 1 comment
|
We switched to Gamal for all our apps now. Just a few shot experiment, but seems like a no-brainer to implement for our flow! Implemented just what we needed, and everything is faster. Kamal is still a great project and we still use the proxy though! |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
We run Kamal in production and like the model:
config/deploy.yml, Docker, andkamal-proxyfor zero-downtime switchover. This is not a complaint about that design.The part that has been expensive for us is the Ruby CLI itself. Kamal is a control-plane tool (SSH +
docker+ proxydeploy). Almost all of the time in a deploy is Docker. Almost all of the startup cost is MRI + ActiveSupport + Thor + SSHKit, paid on everykamalinvocation, includingkamal versionandkamal app logs.On a current Mac:
require "active_support/all"alone is 256 msWe tried rewriting the CLI we actually use in Go, speaking the same on-server protocol (container names, labels,
.kamalenv files, lock dirs,docker exec kamal-proxy kamal-proxy deploy …). Result:CGO_ENABLED=0gamal versionconfig/deploy.yml(including destination overlays)docker login --password-stdininstead of putting the registry password on the command lineRepo: https://github.com/beint-no/gamal
It is not feature-complete Kamal. We did not port accessories, secret-manager adapters, remote/cloud/pack builders, asset bridging, error pages, ERB, or the 1.x Traefik upgrade. Those are not in our configs. The point of publishing it is the measurement, not a claim of parity.
Why bring it here
kamal-proxyis already Go. The remaining Ruby is the orchestrator. That job is a good fit for a static binary: one file on a laptop or a server, no gem boot, no SSHKit, no ActiveSupport. A future Kamal could keep the YAML, the proxy, and the Docker labels, and change only the CLI language.Rewrites are costly and I am not asking anyone to throw away 2.x. I am asking whether a Go CLI has been considered for Kamal 3, or as an official alternative implementation of the same protocol. Happy to be told the Ruby CLI is a deliberate product choice — then this is just a data point.
Happy to answer questions about what we implemented, what we skipped, and how the protocol mapping was verified.
All reactions