Donal McBreen
8bcd896242
Simplified deploy/drain timeouts
...
Remove `stop_wait_time` and `readiness_timeout` from the root config
and remove `deploy_timeout` and `drain_timeout` from the proxy config.
Instead we'll just have `deploy_timeout` and `drain_timeout` in the
root config.
For roles that run the proxy, they are passed to the kamal-proxy deploy
command. Once that returns we can assume the container is ready to
shut down.
For other roles, we'll use the `deploy_timeout` when polling the
container to see if it is ready and the `drain_timeout` when stopping
the container.
2024-09-18 15:08:08 +01:00
Donal McBreen
34effef70a
Update proxy and docs for Kamal 2.0/kamal-proxy 0.3.0
...
Update to kamal-proxy 0.3.0 and improve docs making sure they are in
sync with that version.
2024-09-18 14:00:43 +01:00
Donal McBreen
e07ac070aa
Merge pull request #945 from basecamp/kamal-2-upgrade
...
Upgrade on accessory hosts only with correct messages
2024-09-18 10:27:28 +01:00
Donal McBreen
46c0836cd4
Upgrade on accessory hosts only with correct messages
2024-09-18 10:07:07 +01:00
Donal McBreen
bd54c74682
Merge pull request #944 from basecamp/single-secrets-instance
...
Ensure we don't load the secrets more than once
2024-09-17 14:33:38 +01:00
Donal McBreen
f183419f7a
Ensure we don't load the secrets more than once
...
Secrets were being created twice, which might require logging in twice.
2024-09-17 14:21:43 +01:00
Donal McBreen
190dbd1ea3
Merge pull request #943 from basecamp/response-timeout-string
...
Need a duration string for the response timeout
2024-09-17 14:14:49 +01:00
Donal McBreen
d6eda3d741
Merge pull request #942 from basecamp/kamal-2-upgrade
...
Upgrade commands for Kamal 1.x -> 2.0
2024-09-17 13:34:00 +01:00
Donal McBreen
0fe6a17a91
Need a duration string for the response timeout
...
Add `s` as the timeout is a duration.
2024-09-17 13:23:15 +01:00
Donal McBreen
7f15fd143f
Upgrade commands for Kamal 1.x -> 2.0
...
Adds:
- `kamal upgrade` to upgrade all app hosts and accessory hosts
- `kamal proxy upgrade` to upgrade the proxy on all hosts
- `kamal accessory upgrade [name]` to upgrade accessories on all hosts
Upgrade takes rolling and confirmed options and calls `proxy upgrade`
and `accessory upgrade` in turn.
To just upgrade a single host add -h [host] to the command. But the
upgrade should run on all hosts, not just those running the proxy.
Calling upgrade on a host that has already been upgraded should work ok.
Upgrading hosts causes downtime but you can avoid if you run multiple
hosts by:
1. Implementing the pre-proxy-reboot and post-proxy-reboot hooks to
remove the host from external load balancers
2. Running the upgrade with the --rolling option
**kamal proxy upgrade**
1. Creates a `kamal` network if required
2. Stops and removes the old proxy (whether Traefik or kamal-proxy)
3. Starts a kamal-proxy container in the `kamal` network
4. Reboots the app containers in the `kamal` network
**kamal accessory upgrade [name]**
1. Creates a `kamal` network if required
2. Reboots the accessory containers in the `kamal` network
A matching `downgrade` command will be added to Kamal 1.9.
2024-09-17 13:02:02 +01:00
Donal McBreen
434490bd0c
Merge pull request #940 from basecamp/proxy
...
Replace Traefik with kamal-proxy
2024-09-17 09:47:16 +01:00
Donal McBreen
267b526438
Switch proxy/hosts to proxy/host
...
The proxy only supports a single host per app for nowm so make the
config match that.
2024-09-16 20:45:09 +01:00
Donal McBreen
1f721739d6
Use version 0.1.0 of kamal-proxy and add minimum version check
2024-09-16 16:44:58 +01:00
Donal McBreen
6c51e596ae
Put locks directories in .kamal so they leave no trace when deleted
2024-09-16 16:44:58 +01:00
Donal McBreen
7f31510aec
Set hosts via config rather than options
2024-09-16 16:44:58 +01:00
Donal McBreen
e8ff233e81
Fix default log header tests
2024-09-16 16:44:58 +01:00
Donal McBreen
a316e51eda
Add user agent to default headers
2024-09-16 16:44:58 +01:00
Donal McBreen
bf91d6c1ca
Fix command description
2024-09-16 16:44:58 +01:00
Donal McBreen
a84ee6315f
Rename service -> app directory
2024-09-16 16:44:58 +01:00
Donal McBreen
3c39086613
Not experimental
2024-09-16 16:44:58 +01:00
Donal McBreen
8b965b0a31
Handle polling without the healthcheck config
2024-09-16 16:44:58 +01:00
Donal McBreen
d2672c771e
Remove redundant call to env remove
2024-09-16 16:44:58 +01:00
Donal McBreen
24031fefb0
Remove proxy only if no apps are installed
2024-09-16 16:44:58 +01:00
Donal McBreen
35fe9c154d
Move audits back to run dir so they survive kamal remove
2024-09-16 16:44:58 +01:00
Donal McBreen
b8972a6833
Remove service directory on kamal remove
2024-09-16 16:44:58 +01:00
Donal McBreen
d7d6fa34b0
Use Volume for kamal proxy config volume
2024-09-16 16:44:58 +01:00
Donal McBreen
c21757f747
Move all files on the host under a common directory
...
This will make running kamal remove simpler, we can just clean up that
directory.
2024-09-16 16:44:58 +01:00
Donal McBreen
cb73c730f9
No need for run_id
2024-09-16 16:44:58 +01:00
Donal McBreen
109339189a
Fix up integration app_test.rb
2024-09-16 16:44:58 +01:00
Donal McBreen
33834a266a
Drop sleep after container healthy
2024-09-16 16:44:58 +01:00
Donal McBreen
e1016b2469
No need to wait_for_healthy
2024-09-16 16:44:58 +01:00
Donal McBreen
a40b644145
Check that there's no traefik hooks left behind
2024-09-16 16:44:58 +01:00
Donal McBreen
ccb7424197
Remove stray exit!
2024-09-16 16:44:58 +01:00
Donal McBreen
2125327d54
proxy/host -> proxy/hosts
2024-09-16 16:44:58 +01:00
Donal McBreen
f4d309c5cc
Rip out Traefik
2024-09-16 16:44:55 +01:00
Donal McBreen
5bca8015bc
Map kamal proxy config into .kamal/proxy/config
...
This will allow us to share files with the proxy via the host.
2024-09-16 16:44:41 +01:00
Donal McBreen
27a7b339a6
Drop run_directory configuration option
...
We need to drop to be fixed so multiple applications put the config in
the same place.
2024-09-16 16:44:41 +01:00
Donal McBreen
dcd4778dd9
Port -> app_port
2024-09-16 16:44:41 +01:00
Donal McBreen
6f2eaed398
Work out the host and port for the container
...
Avoid docker inspect:
1. Use the container ID as the host
2. Configure the port, default to 3000
2024-09-16 16:44:41 +01:00
Donal McBreen
e9d480b514
Add the proxy/ssl config and pass on to kamal-proxy
2024-09-16 16:44:41 +01:00
Donal McBreen
2fdc59a3aa
Fix tests
2024-09-16 16:44:41 +01:00
Donal McBreen
b33c999125
Remove envify, make proxy booting work with env files
2024-09-16 16:44:41 +01:00
Donal McBreen
2056351c38
Use kamal network for accessories
2024-09-16 16:44:41 +01:00
Donal McBreen
9c2d5f83f7
Boot latest version when upgrading proxy
2024-09-16 16:44:41 +01:00
Donal McBreen
f347ef7e44
Add proxy upgrade command
2024-09-16 16:44:41 +01:00
Donal McBreen
63ebeda489
Create proxy and app containers in a kamal network
2024-09-16 16:44:41 +01:00
Donal McBreen
13bdf50ceb
Fix tests for proxy defaults and required builder arch
2024-09-16 16:44:41 +01:00
Donal McBreen
bd6558630f
Fix merge error
2024-09-16 16:44:39 +01:00
Donal McBreen
53903ddcd2
Read buffer not buffering
2024-09-16 16:44:21 +01:00
Donal McBreen
55756fa6f3
Set request and response headers
2024-09-16 16:44:21 +01:00