3 ms·
From worst to slightly less worst: Helm, Istio, and everything Atlassian (Jira & confluence). Helm: go templates aren't a robust, or even remotely sensible, wa
by gravypod 6y ago
From worst to slightly less worst: Helm, Istio, and everything Atlassian (Jira & confluence).
Helm: go templates aren't a robust, or even remotely sensible, way to define the configuration changes someone will need on a day to day basis for deploying applications to multiple environments. Some metaconfig language as used in kubecfg and tanka is the way to go but every single time I work with a team on kube they say something like "Helm is fine. Everyone uses helm." It's at times like this that I remember there was a period in human history where bloodletting was an established medical practice and that's the point the software engineering industry is currently at.
Istio: someone had a great idea, implemented it poorly, and just kept hacking at it. Obvious features are missing (setting QPS & bandwidth limits per service-to-service). Configuration is disgusting. Documentation is somehow worse than k8s' docs but, unlike k8s, the code is a mess. There's absolutely no reason why it has to be implemented as a side car, it's just a hack that baloons the resource usage of the entire system and reduces effectiveness of things like edge redis caching. There's so many obvious ways to implement similar functionality to istio except do so in a transparent way. Maesh is one example but it'd also be far simpler to implement it as a combination CNI and DNS system.
Atlassian: nothing further needs to be said. The problem space is so simple and somehow it was implemented so poorly but juuuuuuuuuust enough management features look pretty and it fools people into buying the software.
If I ever get the opportunity to retire I would love to take a crack at fixing all of these.
- jpgvm 6y agoIf you don't need to use externally supplied Helm charts consider Jsonnet instead. You can roll your own tooling around it and end up a much nicer place customised for your environment and problems.
- dqpb 6y agoCuelang is far better than jsonnet.
- gravypod 6y agoCuelang is not simple or well documented. It's the "right solution" but it's not polished currently. There needs to be a lot more examples to pull from. There's a dramatic difference between: https://cuelang.org/ https://cuelang.org/ and https://jsonnet.org/ https://jsonnet.org/ I have a feeling that cuelang is still in the R&D phase. Once it's finished that I'll probably move everything I write to it. It'll probably focus more on UX and tooling and simplicity after it moves out of the R&D phase.
- gravypod 6y agoGetting buy in from people at work for this has been hard but I've finally broken through that shell. People who've never used kube and who only know how blog post engineering works are afraid of "rolling your own tool". I've gone this approach for my cluster at home. We're starting to explore this at work.
- dhruvrrp 6y agoProblem with helm is that it was not created as a deployment tool in mind, but that is the use-case that caught on. Helm was designed to be the apt get for k8s, where there is a specific set of users who create the charts and a different set that just go 'helm install redis'. They might make improvements in helm 4, but who knows.