Eden Platform updates 2026-03-01

Started by CultLeader, Today at 04:17:11 PM

Previous topic - Next topic

CultLeader

Hey boys, I've been using Eden platform in the background and kept adding more and more things that I needed.

As I predicted before, now I need to modify Eden platform less and less as I rough it out and is now reaching maturity, so this time I added these features:

typesafe Postgres query notifications

this natively supports pg_notify in your backend rust applications, just define pg_channel in pg_schema table and use it in the backend application via used_producer_channels if you want to send typesafe notifications or if define used_consumer_channels if you want to receive typesafe notifications. I made this when I wanted some backend service to instantly be notified about net work in postgres

// define the type with pg channel
DATA STRUCT versioned_type {
  type_name: some_type
  WITH versioned_type_snapshot {
    version: 1,
    snapshot_source: '{
      instrument @0 :String,
      size @1 :F64
    }'
  }
}

DATA STRUCT pg_channel {
  schema_name: my_db_schema,
  channel_name: the_new_channel,
  payload_type: some_type
}

Then you can modify backend_application_pg_shard to use the channels for production and consumption (even in the same service)

DATA STRUCT backend_application_pg_shard {
  ...
  used_consumer_channels: '
    the_new_channel
  ',
  used_producer_channels: '
    the_new_channel
  ',
  ...
}

And just like that you'll have typesafe definitions in your rust backend application generated to use channel with typesafe structs for production and consumption (for consumption you'll be forced to implement the consumer of typesafe messages).

MinIO publicly exposed bucket ingresses

I was shocked how little work this was to do because all the building blocks were there. Just define minio_public_ingress row like

DATA STRUCT minio_public_ingress {
  bucket: my-minio-cluster=>my-minio-bucket,
  subdomain: muh-cdn,
  tld: my-awesome-domain.net,
}

Compile project, run l1 (for DNS records) and l2 (for load balancer update) provisioning and that's it, you're done. Your MinIO bucket is publicly exposed at https://muh-cdn.my-awesome-domain.net/my-file.jpg for reading.

  • Let's encrypt certs are auto generated (we already had them for your TLD)
  • DNS records are automatically added to external load balancer
  • Nginx external load balancer rule is already generated

That's how we roll in Eden platform, few lines and amazing power.

Monitoring of certificate expiration for consul/nomad/vault certificates

This is a small change but I exposed metrics of in prometheus node exporter for certificates of consul/nomad/vault so we could monitor yearly expirations as I'm already running in production for nearly two years now, up to you to set up the alerts for those.

Zero downtime certificate reload for vault

Other services like consul/nomad we can just restart, but if we restart vault we must reflash keys, so in case certificate is changed we'll just softly reload vault. It will use the new certificate but we will not cause downtime for vault node.

Some NATS hiccups fixed

Nats didn't have correct disk usage reported in the jetstream system and stopped receiving messages unpredictbly for me, so I just made it assume there's a lot more free space to resolve the issue because I see when disk is about to run out from alerts anyway, I don't need NATS to stop working.

Expose NATS message ids for NATS native deduplication

Preferred master replicas for postgres

I exposed patroni functionality to set failover priority if you want some node to be preferred as a master, say I had couple servers with blazing fast nvme drives

Fixed bug that nomad client starts earlier than zfs datasets are decrypted and mounted (useful post restart not to blowup root dataset disk space usage)

DateTime64(9) and UUID are supported in clickhouse

Rewrote NATS consumer in backend application to make it more reliable and auto retry consumption

When importing data from nats to clickhouse using stream mirroring you can ignore extra source fields from nats stream

Added 17.2 version of postgres

Expose more metrics in NATS jetstream system

Fixed patroni haproxy failover to the master node

Have a good day bois!