29 Commits

Author SHA1 Message Date
Jose Diaz-Gonzalez
cd4f9db95b fix: use annotation instead of location snippet 2024-02-07 13:15:16 -05:00
Jose Diaz-Gonzalez
980979ef87 feat: properly handle nginx annotation merging 2024-02-06 22:48:22 -05:00
Jose Diaz-Gonzalez
416a119904 feat: pull nginx properties as ingress annotations 2024-02-06 22:12:54 -05:00
Jose Diaz-Gonzalez
5674a29211 feat: add ability to use ingress-nginx for routing instead of traefik 2024-02-06 21:19:51 -05:00
Jose Diaz-Gonzalez
81286a0673 feat: add ability to install nginx instead of traefik 2024-02-06 21:19:14 -05:00
Jose Diaz-Gonzalez
f5f583b12b feat: add support for specifying annotations
As the command contains a colon, it must be handled in the commands binary as opposed to subcommands.

Also include a simple bats test.
2024-02-06 13:54:53 -05:00
Jose Diaz-Gonzalez
5e1089973e refactor: use type-specific functions for writing contents to a file 2024-02-06 01:39:44 -05:00
Jose Diaz-Gonzalez
06429a384e feat: install kubectx and kubens 2024-01-30 08:01:42 -05:00
Jose Diaz-Gonzalez
029e1f5f48 feat: add the dokku logo as the chart icon 2024-01-26 06:55:46 -05:00
Jose Diaz-Gonzalez
1d99e0bc6e fix: guard against missing healthcheck config
Also add support for liveness and readiness probes.
2024-01-24 02:39:39 -05:00
Jose Diaz-Gonzalez
578afc0ef7 fix: use correct name for cluster-issuers 2024-01-24 02:19:21 -05:00
Jose Diaz-Gonzalez
4a7db5ce24 feat: apply the cluster issuers on every app deploy
This ensures we can always get certificates regardless of what app gets deployed with whatever configuration.
2024-01-23 07:25:03 -05:00
Jose Diaz-Gonzalez
a9e6e96697 feat: implement scheduler-k3s:report 2024-01-23 05:01:23 -05:00
Jose Diaz-Gonzalez
204517074b fix: allow setting a custom ip address as the ip pf the dokku server
This will provide the ability to override cases where the detected ip address is invalid for whatever reason.
2024-01-23 03:26:32 -05:00
Jose Diaz-Gonzalez
2336063ca2 refactor: move templating into pseudo-generated helm chart
The previous mechanism of constructing the helm chart was pretty obnoxious due to needing to have some things in the object and some in template files that were appended afterwards. This change simplifies that by using template files per type with minimal replacements.
2024-01-23 03:00:27 -05:00
Jose Diaz-Gonzalez
001ae3c83b fix: set default value for rollback-on-failure 2024-01-23 03:00:27 -05:00
Jose Diaz-Gonzalez
62c8cb770e feat: add support for global properties 2024-01-23 03:00:27 -05:00
Jose Diaz-Gonzalez
01ec08fd79 refactor: simplify port string 2024-01-23 03:00:27 -05:00
Jose Diaz-Gonzalez
2619c3db08 fix: ensure critical addons come up when the node is tainted
Rather than taint on `node-role.kubernetes.io/master=true:NoSchedule`, we check for `CriticalAddonsOnly=true:NoSchedule` and taint on that.
2024-01-23 03:00:27 -05:00
Jose Diaz-Gonzalez
0730647af7 feat: implement :cluster-list and :cluster-remove
These - and the existing :cluster-add command - do not require root.
2024-01-23 03:00:27 -05:00
Jose Diaz-Gonzalez
69e9511666 feat: implement cluster joining for server and worker nodes
Different options get applied to each depending on what is needed for the role.

This also updates how we initialize the cluster to better support how metrics exposure and cross-server networking.
2024-01-23 03:00:27 -05:00
Jose Diaz-Gonzalez
9cd0644883 refactor: fix issues with pod entering
- ensure we always wait for the specific pod we want to be ready
- enter the default container if none is specified
2024-01-23 03:00:27 -05:00
Jose Diaz-Gonzalez
7bce908c2d fix: properly set the command for herokuish apps 2024-01-23 03:00:27 -05:00
Jose Diaz-Gonzalez
297853781f refactor: move all k8s code behind client
Also fix an issue where attaching to pods fails in rare cases
2024-01-23 03:00:27 -05:00
Jose Diaz-Gonzalez
1c5505f78b refactor: move functions around and ensure we respect local versions of golang dependencies 2024-01-23 03:00:27 -05:00
Jose Diaz-Gonzalez
8b8444fb1f feat: implement run and run:detached
This utilizes a Kubernetes Job to start a pod in order to take advantage of completed Job cleanup in Kubernetes. It also properly handles interactivity by ensuring the container has a TTY.

Note that there is currently no provision for parsing docker arguments and translating them into their Kubernetes equivalents.
2024-01-23 03:00:27 -05:00
Jose Diaz-Gonzalez
dfa7d0f78c feat: mark created namespaces as managed by dokku 2024-01-23 03:00:27 -05:00
Jose Diaz-Gonzalez
737f54a5c7 feat: implement dokku enter for k8s scheduler 2024-01-23 03:00:27 -05:00
Jose Diaz-Gonzalez
6fb03eda4e feat: implement most of deployments
The big feature missing from deployments today is healthchecks, which require extra parsing of the app.json format since the healthchecks there aren't immediately serializable to kubernetes deployment healthchecks.

Other smaller missing functionality from the existing OSS kubernetes scheduler are:

- The ability to set custom pod annotations
- The ability to set custom deployment annotations
- The ability to mount volumes

Exposing these pieces of functionality will come at a later date, if at all.
2024-01-23 03:00:27 -05:00