I just spun up Lemmy on my Kubernetes cluster with nginx-unprivileged and ingress-nginx. All is well so far! I’m thinking about posting the Kustomization manifests and continuing to maintain and publish OCI’s per version release of Lemmy.
👋 I’m not using Kustomize, just throwing
Deployment
manifests and such at the cluster manually. Works pretty nicely, though I had some trouble setting up the custom nginx stuff to proxy stuff in - I ended up running a new nginx instance and pointing theIngress
at that rather than the Lemmy pods directly. Maybe there’s a more elegant solution I’m missing?I am! @gabe565@lemmy.cook.gg and I worked on setting this up yesterday. He mentioned building a Helm chart for the whole shebang.
Yep I’m still working on a helm chart. Currently, each service is deployed with the bjw-s app-template helm chart, but I’d like to combine it all into a single chart.
The hardest part was getting
ingress-nginx
to pass ActivityPub requests to the backend, but we settled on a hack that seems to work well. We had to add the following configuration snippet to the frontend’s ingress annotations:nginx.ingress.kubernetes.io/configuration-snippet: | if ($http_accept = "application/activity+json") { set $proxy_upstream_name "lemmy-lemmy-8536"; } if ($http_accept = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"") { set $proxy_upstream_name "lemmy-lemmy-8536"; } if ($request_method = POST) { set $proxy_upstream_name "lemmy-lemmy-8536"; }
The value of the variable is
$NAMESPACE-$SERVICE-$PORT
.
I tested this pretty thoroughly and haven’t been able to break it so far, but please let me know if anybody has a better solution!Firstly, awesome to hear you’re using bjw-s app-template helm chart. He’s my good friend and former coworker :)
I’m also doing what @seang96@exploding-heads.com is doing.
While I don’t consider this completed yet I have posted how I’m doing things so far here