There’s no library for deployment in k8s.You deploy your application as any other. What differs is the way you join nodes in a cluster. If that’s what you’ve meant, then libcluster is your friend.
I am not using anything special other than a Deployment
resource on Kubernetes to run my applications.
But there are a couple of libraries worth mentioning making integrating Kubernetes into your application a walk in the park:
- https://github.com/coryodaniel/bonny is a library to support writing actual operators for more complex Kubernetes integrations
- https://github.com/coryodaniel/k8s is an excellent Kubernetes API client
-
https://github.com/bitwalker/libcluster supports Erlang cluster formation for Elixir applications, it also ships with a designated
Cluster.Strategy.Kubernetes
And worth mentioning is supporting software that are not Erlang/Elixir specific, but really leverage your Kubernetes experience:
- https://github.com/containous/traefik acts as a Ingress controller, http/s load balancer
- https://github.com/jetstack/cert-manager lets you automatically provision certificates (e.g. Lets Encrypt) to use with traefik
- https://github.com/kubernetes-sigs/external-dns lets you provision external DNS providers for dynamic DNS management (think of declarative external DNS for your whole infrastructure out of Kubernetes/API)
Thx for the reply,
and I just found this article https://www.theguild.nl/real-world-phoenix-lets-d4y-using-k8s/
I would investigate most other ingress solutions before reaching for Traefik in a business context - Nginx Ingress and ALB Ingress are my personal recommendations. Ambassador is so-so and getting better, Istio is not just ingress and is a huge project to bite off besides, and I haven’t used any of the other Envoy-based ones in anger.
Traefik predates Kube and was never that good in its early days, and trying to support so many environments means it simply can’t embrace Kubernetes abstractions to the degree a single-purpose Kube-native project can achieve. It’s fine for home labs and POCs.
@shanesveller like with all recommend/experience posts, YMMV.
But I have to emphasize that I am running a couple high traffic websites/applications behind traefik, one of them a mid-sized micro-service landscape.
Traefik in a business and production setting has served me well since 1.x
and I am now on 2.x
.
The statement that traefik predates Kubernetes is somewhat sonsensical to me. AWS LBs, Nginx, etc predate Kubernetes and people have managed to adapt to it.
Admittedly I did not have the “easiest” time in the beginning with traefik, but that is due to the documentation that lacks some holistic examples. However, now having my declarations set, Traefik is humming along really really well.