DEV Community

Discussion on: Docker, Kubernetes, and Helm

pshchelo profile image
Pavlo Shchelokovskyy

From my experience with Helm I'd like to point to some alternatives:

  • for apps on the simpler side of spectrum, where your customizations from deployment to deployment are small and simple (like changing the replica sizes), it may worth using Kustomize instead of Helm. It is quite cleaner/simpler IMO and is natively supported by kubectl already
  • when you move beyond stateless, k8s-native microservices to more complex, stateful apps that require non-trivial logic to properly update/upgrade/scale them (like databases) it may worth investing in learning/using or even writing your own Kubernetes operator. This pattern binds custom resources defined by a CustomResourceDefinition to a code (controller) running inside k8s pod(s) that watches those custom resources and handles life-cycle of the application defined by those. Being written in proper programming language (mostly Go currently) instead of YAML/templates, controllers can implement any logic needed, however convoluted. There already exist opensource controllers for e.g. PostgreSQL and Ceph.