We've now got some of the basics in place - the system can create a customer namespace (and list customers).
The next thing to worry about is having it create the user's pod/volume etc in the customer namespace.
This needs a bit of thought to make sure we don't hem ourselves in, but
The catch with StatefulSet
though is that we won't easily be able to resize the storage
I also want it to be relatively easy to add new application types - although my first "app" will likely be InfluxDB OSS 2.x, I'd like it to be relatively easy to add support for something else too.
So, each "app" should probably come in the form of a class so that calls are normalised.
Activity
09-Nov-24 12:01
assigned to @btasker
09-Nov-24 12:07
changed the description
09-Nov-24 12:35
mentioned in commit 6b3c7e2c61b3809d87794de7ca0291e10c419efb
Message
feat: create an InfluxDB app (#1)
Note: this doesn't currently do anything for persistent storage
09-Nov-24 12:42
The system can now successfully define an InfluxDB 1.x install (I started with 1.x because it's much easier to get up and running).
There are some essentials that it doesn't currently do
The persistent storage presents a little bit of a challenge, because, at home, I tend to back pods with NFS. So, I need to choose from a couple of options
The second, obviously comes with a tangible cost - I'd have to pay for a cluster. I think the best bet is probably to try and make the storage definition pluggable - that way I can have a single file which makes it use NFS but can later be changed to use EBS/whatever.
The ingress definition shouldn't pose too many issues.
Preconfig shouldn't be an issue either, but need to decide which of the following to do (I'd kinda like to support both):
09-Nov-24 15:04
mentioned in commit 34b4aac871a30b2f715fbe2a9e185b00ce4570e3
Message
feat: add ability to list customers apps (#1)
09-Nov-24 15:25
mentioned in commit 19a629c1b74e064443ae4ff5f8b2edb798f71641
Message
feat: implement support for deleting customer apps (#1)
09-Nov-24 17:40
mentioned in commit 874918b634a3f50077f188054a8fb04b07297d9c
Message
feat: configure service and ingress when standing up an app (#1)
10-Nov-24 11:02
mentioned in commit a55dbf2bc41d1c060b122e2e0e0ad525339a41a8
Message
feat: add persistent storage (#1)
Note: this is currently very much tailored to my home-lab, using NFS for the mounts. I decided to just chuck it in for now so that it stopped being a blocker, but we should absolutely revisit later so that it can create PVs in cloud providers etc.
10-Nov-24 11:10
We now have most of the recipe:
StatefulSet
gets createdStorage
is persistentService
gets createdIngress
gets updated to include a rule to match the new app domainThere are a couple of outstanding bits though:
I did, however, chuck together a video of going through the process
10-Nov-24 11:18
mentioned in commit 56a44c5563202e45cf376fa1b9a8a7e9de103a5e
Message
feat: return details of the new app after creation (#1)
10-Nov-24 11:31
Pre-config of 1.x is a bit more of a challenge, because there isn't a way to automatically populate an admin user.
If we were doing it manually, the workflow would be
CREATE USER
to create an admin userTo be able to do that automatically, we're going to need to
I think that's a complex enough task that we should spin it out to its own issue (#2)
10-Nov-24 12:39
changed title from Pod definition to {+InfluxDB 1.x +}Pod definition
10-Nov-24 13:31
Just need to go through and make sure that deletion is also deleting all the relevant bits.
I also think the statefulset name needs to change - everything else uses
app_name
, but the SFS gets prefixed with "sfs"10-Nov-24 13:32
mentioned in commit b853a90612d67b2cab127f916812a921651d5cbc
Message
fix: make StateFulSet name consistent with other names (#1)
10-Nov-24 13:45
mentioned in commit 862c9964914a2e17d50f2435436b64bc8b1fade8
Message
fix: tidy up all resources when deleting an app (#1)
This updates the influxdb1x module to also remove service etc
The main framework also removes associated ingress rules.