Commit Graph

28 Commits

Author SHA1 Message Date
Kevin McConnell 11a38a4526 Initial (wip) staging deployment
This adds an initial configuration for staging. Note that we are doing
this ahead of having the full infrastructure in all 3 DCs. So this
this will result in some cross-DC writes for now (e.g. we have a single cache in
IAD). We'll correct this as the infrastructure becomes available.

We'll also run jobs on every app server, until we split them out to
separate instances.
2025-11-17 09:12:41 -05:00
Kevin McConnell e5bbe6cf64 Remove Beamer 2025-11-17 09:11:28 -05:00
Kevin McConnell 417acab12a Upgrade Beamer to zone-aware version 2025-11-04 09:58:53 +00:00
Fernando Álvarez f5124fb338 Mount /certificates for fizzy-production 2025-10-20 14:31:36 -07:00
Fernando Álvarez 9b8236a3ab Revert "Mount /certificates for fizzy-production"
This reverts commit e13bfe8a86.
2025-10-20 14:30:17 -07:00
Fernando Álvarez e13bfe8a86 Mount /certificates for fizzy-production 2025-10-20 14:27:01 -07:00
Fernando Álvarez 662798801b Add sc-chi and df-ams app and lb nodes to Production config 2025-10-15 12:24:45 +02:00
Matthew Kent 30a4b2d721 Mount our backup vol. 2025-10-14 11:56:00 -07:00
Jeremy Daer b8f09b7f75 Deploy to fully-qualified domain names to eliminate DNS search path driven query amplification (#1293) 2025-10-11 15:57:47 -07:00
Lewis Buckley ad1960cd63 Cleanup OTel collector now it's moved to host 2025-10-03 15:06:42 +01:00
Lewis Buckley 72191b3fa8 Enable OTel scraping for the load balancers 2025-10-03 15:00:06 +01:00
Lewis Buckley 595afc00d6 Enable OTel scrapes for beta and production too 2025-10-03 14:36:51 +01:00
Fernando Álvarez 013f83b94a Move load-balancer to fizzy-lb-101 2025-10-02 17:40:57 +02:00
Lewis Buckley 3fde76b1e7 Update beta and production beamer accessories to expose port 9000 2025-09-23 15:32:02 +01:00
Kevin McConnell 7b23e9f108 Export Prometheus metrics from Beamer process 2025-09-22 14:13:48 +01:00
Kevin McConnell ca20b048e3 Update Beamer configuration to switchable version 2025-08-29 17:33:48 +01:00
Farah Schüller 651d914de6 Move to internal registry 2025-07-08 17:21:02 +02:00
Kevin McConnell 67594301a7 Add state volume to load balancer 2025-06-17 08:47:03 +01:00
Kevin McConnell d78a61b8fc Use vfs tag on production accessories 2025-06-05 14:55:02 +01:00
Mike Dalessio c3a9ac7391 Create a distinct "beta" environment
and move secrets into Rails credentials for both beta and production
environments.
2025-05-31 10:57:26 -04:00
Kevin McConnell c2c3a8d8ab Don't require TLS for Beamer at the moment 2025-05-26 15:26:31 +01:00
Kevin McConnell d96db67734 Configure deployment for load balancing
- Adds a load balancer accessory
- Disables SSL from the app's proxy (since the LB will handle it)
2025-04-25 14:18:04 +01:00
Kevin McConnell 09e544a881 Run beamer accessories in production only 2025-04-17 16:31:09 +01:00
Kevin McConnell 91df76928b Add fizzy-app-102 as a replica
The setup here is a bit rough while we settle some of the details, but
the gist of it is:

- Define accessories to run the primary/replica processes
- Add a web-replica role, which is similar to web but has the
  replication-side accessory
- Load the beamer extension on the app's primary tenanted database

Note that we aren't sending any traffic into the replica yet, but it
would be functional to do so. This stage is mainly about testing the
database replication.
2025-04-16 17:46:44 +01:00
Kevin McConnell 61b24483a7 Deploy to new node
Our production node has been replaced; `fizzy-app-101` is the new one.
2025-04-15 09:38:02 +01:00
Mike Dalessio bb5ed28130 kamal-proxy: add fizzy.37signals.com so we can return 404
instead of the TLD handshake error now seen
2025-03-12 08:29:40 -04:00
Mike Dalessio 300dffd376 Script and configuration for a multi-tenant migration
ref: https://3.basecamp.com/2914079/buckets/37331921/messages/8422006338

The script takes advantage of the fact that we can bind to the
existing untenanted database by adding it explicitly (and temporarily)
as a readonly shard to the database.yml, and so in the script
with_original_db is connected to the original database.

storage/tenants/%{tenant}/ is now the root directory for all
state stored for a particular tenant, including active storage and the
database.

We leave the existing files and production database in place after the
migration, in case we need to roll back (by reverting the code and
config).

We also don't do a granular active storage blob copy, since the
attachments are mostly on Account (and not on Bubble). Instead we
hardlink the blobs on disk (so we don't take up additional space with
duplicates).

Finally, we're manually adding the kamal-proxy hosts to the deploy
file, so that we can generate letsencrypt certs for the
subdomains. This is only intended to be a short-term solution, we'll
want something like a wildcard cert before we go live.
2025-03-12 07:53:31 -04:00
Kevin McConnell 014a297717 Add production deploy config 2025-01-27 13:30:48 +00:00