News for hackers. Stuff that matters.
Re:Falling for Kubernetes by anotherhue on Tuesday August 09, 2022 @04:46PM (#32404055)
Vanilla k8s is pretty good. But once the 8 trillion vendors have you 'curl | helm' ing you end up with a knot of a system.

Keep it simple, use GitOps (ArgoCD is great), let k8s do what it's good at, managing workloads, not as a delivery mechanism for a vendor.

As an aside, the existence of the '{{ | indent 4 }}' function in helm should disqualify it from any serious use. Render, don't template.

Re:Falling for Kubernetes by n3t on Tuesday August 09, 2022 @05:33PM (#32404631)
> As an aside, the existence of the '{{ | indent 4 }}' function in helm should disqualify it from any serious use. Render, don't template.

This. My first thought when I saw the indentation hack was "it can't be serious, production-ready software".

My take on this is as follows.

If you have a simple use case, write your K8s manifests directly.

If you have a complex use case, Helm is often more pain than it's worth. Use alternatives, for example Jsonnet[0] with kubecfg[1]. Or emit manifests from your language of choice. Just don't use Helm.

[0]: https://jsonnet.org/ [1]: https://github.com/kubecfg/kubecfg

Re:Falling for Kubernetes by 015a on Tuesday August 09, 2022 @05:41PM (#32404713)
For a complex use case: cdk8s is cool https://cdk8s.io/
Re:Falling for Kubernetes by vlunkr on Tuesday August 09, 2022 @06:08PM (#32405058)
It is shocking that such a clearly bad design choice has stuck, and that Helm has become so popular in spite of it. I've had my eye on jsonnet, I'll have to try that next time I do something in k8s.
Re:Falling for Kubernetes by 0xbadcafebee on Tuesday August 09, 2022 @08:34PM (#32406531)
It makes sense if you consider how poor K8s' design already is. They somehow made it overcomplicated, yet lacking in critical features, with terrible security, no multitenancy, unnecessarily duplicated concepts, confusing and redundant configuration, a nightmarish setup process, no VCS integration, with mutable state, and lock-in reliance on specific external software components, while also having microservices, when the components were never really intended to be replaced, and misbehave when their assumptions change between versions. Then they invented and sunsetted multiple iterations of the same concept (plugins, essentially), redesigned other concepts (Roles) without consolidating them, and decided long-term support/stable ABIs are for chumps, so that anyone using it was stuck doing infinite migrations. It's up there with Jenkins and Terraform as one of the worst designed systems I've seen. The fact that you need a million integrations to make it do anything useful at scale is proof that it's more of a development toy than a practical tool.
Re:Falling for Kubernetes by yuppie_scum on Tuesday August 09, 2022 @10:44PM (#32407354)
You don’t like terraform? The version churn and things like the .lock file are pains in the ass, but overall it’s gotten pretty elegant and well documented.
Re:Falling for Kubernetes by 0xbadcafebee on Wednesday August 10, 2022 @10:13AM (#32412302)
Google "terraform wrapper". Terraform's interface is so bad that a million people have written their own interface to deal with how terrible Terraform's is. Most people settled on Terragrunt, but in some ways that's actually worse (DRY configuration is actually impossible with Terragrunt; I wrote my own wrapper (https://github.com/pwillis-els/terraformsh) to fix that problem).

Terraform's design is that of a half-baked configuration management program. It's not even declarative programming, because declarative programming requires the program actually try to achieve the desired end state. Terraform won't do that. It will try to create or destroy something based on what it thinks the world looks like, rather than what the world actually looks like. If anything is inconsistent, it simply dies, rather than try to fix or work around the inconsistency. Which is the opposite of what configuration management is supposed to do. It's supposed to fix the system state, not run away crying. In many ways, Puppet, Chef or even (ugh) Ansible would be better than Terraform at handling infrastructure state.

For example, if you tell Terraform you want an S3 bucket, and it tries to create one, but it already exists, Terraform dies. In that case they want you to manually use an 'import' command to import the existing S3 bucket (which btw is a different syntax for every single resource). Why doesn't it automatically import resources? Hashicorp's "philosophy" is that automation is bad and why would we want a computer to make a human's life easier when we can make the human serve the computer? This basic but critical feature is so important that Google created an entire project dedicated to it, called Terraformer.

If you write some Terraform HCL, you may be able to create your resources with it. But it's also very likely Terraform will not be able to change or destroy those same resources. Every provider has its own rules about what you can do with a resource, and none of those providers are required to apply those rules throughout the resource's lifecycle. So you deploy something to prod, and then need to change it, only to find out that change is impossible, half way through a terraform apply in production. Leaving you with broken production infrastructure. Many provider resources also have rules that require you to add a Terraform lifecycle policy, or it will be impossible to create, destroy, rename, etc a resource. Rather than make those lifecycle policies the default for a given resource, Terraform requires you to know in advance that that resource requires that lifecycle policy and to add it to every instance of that resource. But it will cheerfully create resources without the policy, with a big gaping hole in the floor waiting for your infra to fall through when you next make a change.

This is a very brief list of the insane stupidity that is Terraform. A blindfolded configuration management tool that can't handle changes and doesn't like automation, validation, or sane defaults.

Re:Falling for Kubernetes by vlunkr on Wednesday August 10, 2022 @11:51AM (#32414046)
Any popular software has wrappers written around it, regardless of actual quality.
Re:Falling for Kubernetes by inkyoto on Thursday August 11, 2022 @01:17AM (#32421847)
> Terraform's design is that of a half-baked configuration management program. It's not even declarative programming, because declarative programming requires the program actually try to achieve the desired end state.

terraform is fully declarative; if I want a thing of the XYZ kind, I ask terraform «give me a thing of the XYZ kind and I don't care about how you will get it for me». Declarative programming operates with intentions without focusing on details of how the intention will actually be expressed; «give me XYZ» is an example of such an intention.

Declarative programming and the «desired end state» are orthogonal, and the desired end state may or may not even be the goal of a declarative program. For example, expert systems are all declarative, and they don't deal with «worlds» and can be «entered into» from «anywhere». And, since their «worlds» keep on constantly changing by introducing or retracting facts, at best it is only possible to think about a snapshot of such a world at a given moment in time.

> Terraform won't do that. It will try to create or destroy something based on what it thinks the world looks like, rather than what the world actually looks like.

Can you unpack that? terraform keeps the current state of «world» as a dependency graph in a state file and compares it with intentions expressed in .tf file(s) that under the hood translate into one or more new or changed graph nodes. If there are differences in two dependency graphs, it modifies the current in-memory dependency graph, applies changes to the infrastructure and incrementally updates the state file to reflect the dependency graph update progression in the infrastructure.

terraform is not a sentient being, therefore it can't solve philosophical problems nor can it reason about anything that goes beyond its state file. It is, essentially, a «make» for the infrastructure management with each provider supplying built-in build rules.

> For example, if you tell Terraform you want an S3 bucket, and it tries to create one, but it already exists, Terraform dies. In that case they want you to manually use an 'import' command to import the existing S3 bucket (which btw is a different syntax for every single resource). Why doesn't it automatically import resources?

Why? Because it is a feature.

If a S3 bucket already exists, it may mean of the following:

  1. It is already managed by another terraform project;
  2. It has another owner who might have created it using a different tool that manages the S3 bucket lifecycle differently;
  3. A coding mistake, e.g. a .tf file has been copied and pasted into;
  4. Something else.
If terraform were to be allowed to auto-import existing resources, case (1) would become a time ticking bomb until the S3 bucket would get updated by another run of a terraform project that manages it as well; case (2) would likely result in a homicide with the rightful S3 bucket owner chasing you around with a hammer; case (3) is a wake-up call to not rampantly copy and paste .tf files; case (4) can be anything else.
Re:Falling for Kubernetes by runevault on Tuesday August 09, 2022 @06:24PM (#32405301)
We are using helm at work but I've never touched it so I cannot comment on it being bad. However cargo cult habits have made quite a few technologies over the years take off when they never should have just because someone with either the right sort of intelligence and/or charisma made people believe it was good, and then the ripple effect made it take off.
Re:Falling for Kubernetes by nfhshy68 on Tuesday August 09, 2022 @10:04PM (#32407108)
I had someone on here assume we were a small dev shop because we don't use microservices the other day. I don't think they were expecting 2k devs to be what I responded with. Apparently monoliths a scale a lot bigger than you'd think.
Re:Falling for Kubernetes by vbezhenar on Wednesday August 10, 2022 @05:30AM (#32409546)
I like helm because it's like a package manager. I don't know what's inside rpm or dpkg. I think they're terrible inside either. But the fact that I can apt install gimp makes it awesome.

Same about helm. I didn't write a single helm yet. But I like packages that I can helm install and I probably would avoid software without first-class helm. Helm is good for users. I can install it, upgrade it, configure it with values. Awesome.

Re:Falling for Kubernetes by p_l on Tuesday August 09, 2022 @04:52PM (#32404119)
I judiciously delete any and all helm I can find, and fight text-based templating where possible :/

Especially since k8s doesn't even use "text" for the format, it's just happens that JSON is the serialization, use datastructures and serialize them dammit :/

Re:Falling for Kubernetes by bushbaba on Tuesday August 09, 2022 @05:26PM (#32404552)
I'm fairly convinced that helm in production is an anti-pattern. With you instead having all K8s manifests checked into your Git repository with CI/CD to handle any changes.

Helm just has too much auto-magic and remove's one of k8s best features, the git-blame / git-diff for Infrastructure.

Re:Falling for Kubernetes by blamarvt on Tuesday August 09, 2022 @05:59PM (#32404941)
I don't understand why this isn't the prevailing philosophy. I'm over here Terraforming helm deployments and having no idea what is actually happening under the covers.
Re:Falling for Kubernetes by cortesoft on Tuesday August 09, 2022 @10:39PM (#32407323)
We have our CI run a helm —-dry-run —-debug before the deploy step, so we can see the exact kubernetes resources that are going to be applied. You can even save that as an artifact so you can diff it later.
Re:Falling for Kubernetes by a012 on Tuesday August 09, 2022 @11:37PM (#32407622)
There's Helm plugin (https://github.com/databus23/helm-diff) that show diff results for you, for example

    helm diff upgrade <release> <repo> --namespace <namespace>
Re:Falling for Kubernetes by the_duke on Tuesday August 09, 2022 @05:59PM (#32404943)
Helm still saves you an incredible amount of work for setting up all the third party services.

If your team is big enough you can just write your own configs, but that takes a lot of time and often quite a bit of knowledge about the relevant service.

Rollbacks and resource cleanup is not to be underestimated either if you are not getting that from other tools like Argo.

Note: You can still use the Git-centric approach by generating configuration via `helm template`.

Re:Falling for Kubernetes by 0x457 on Tuesday August 09, 2022 @07:31PM (#32406026)
I'm convinced that the only reason Helm saves you time with 3rd party services is because 3rd party services only provide Helm chart or don't provide means of deployment to k8s at all.

I've been using kustomize to deploy some things with ArgoCD and it's so much easier. Now, I'm trying to never use helm for 3rd party.

However, for your internal things, Helm is hard to replace. It's easy to start a chart that is capable of deploying most of your internal services, but maintaining it is a nightmare.

Actually, using helm, as in `helm` the binary, directly sounds bonkers to me and I wouldn't wish this upon anyone.

Re:Falling for Kubernetes by FridgeSeal on Tuesday August 09, 2022 @07:08PM (#32405799)
I use Helm only for installing “supporting applications” -elastic searchoperator, jupyterHub, etc. Our normal deployments are standard K8s configs. These apps use Helm because a lot of the settings are complicated, Co dependent, etc.

Absolutely would not write helm charts from scratch for normal deployments, and if I got these apps in a better format than helm, I’d probably drop it immediately.

Re:Falling for Kubernetes by bottled_poe on Tuesday August 09, 2022 @07:25PM (#32405971)
It’s the fact that they are complicated which warrants manual configuration. If the org can’t write the configuration, how will they support it when something goes wrong? It’s a problem waiting to happen.
Re:Falling for Kubernetes by FridgeSeal on Wednesday August 10, 2022 @04:59AM (#32409405)
I can't edit this anymore - but to anyone reading, I ought to specify that I do _not_ use Helm directly, only via Flux, our CD tool. It ablates a lot of the issues of dealing with helm charts.
Re:Falling for Kubernetes by topspin on Tuesday August 09, 2022 @06:00PM (#32404953)
> not as a delivery mechanism for a vendor

Amen. I got turned off from k8s following a tutorial that used Helm. I ran it and watched mysteries and line noise scroll past and walked away for a year. I thought "no, I will never put this squirming mass of tapeworms in front of anyone."

Then I took up with k3s and got underway.

Re:Falling for Kubernetes by jrockway on Tuesday August 09, 2022 @06:55PM (#32405652)
> As an aside, the existence of the '{{ | indent 4 }}' function in helm should disqualify it from any serious use. Render, don't template.

Yeah, I think helm will be the death of Kubernetes. Some other workload management tool will come out, it will have a computer-science-inspired templating system (think Lisp macros, not C #defines) that is also easy to use, and the increased maintainability will be a breath of fresh air to people in helm hell and they'll switch over, even if the workload management fundamentals are worse.

It is a shame that ksonnet was abandoned. jsonnet is a very pleasant programming language for problems of similar scope. I think that people have to see some adoption or they give up; so Helm stays motivated to continue existing despite the fact that the design is fundamentally flawed, while alternatives give up when nobody uses them. If you're looking for a lesson in "worse is better", look no farther from helm. Easy things are hard, but everything is possible. That turns out to be important.

I also liked kustomize a lot, but it definitely sacrificed features for security and a clean overall design posture. I don't really know what it's missing, but it must be missing something. (I use kustomize for everything, but it seems rare in the industry. And I don't use it for complicated things like "make a namespace and app deployment for every PR"; I think to manage things like that it's missing features people want. I say just run your development branch on your workstation and commit it when it works. Running the app you write shouldn't be rocket science, and so a computer program that configures it shouldn't be necessary. The industry definitely disagrees with me there, though.)

One of the biggest problems I have with helm is that it's not easy to make local modifications to charts. That needs to be a first class feature, and something everyone knows how to use. As a vendor who ships a helm chart, I feel like almost all of my work these days is hearing from users "our k8s security team requires that every manifest set field X", and then I have to go add that for them and release it. If kustomize were the default, they'd just add that themselves instead of asking. But hey, opportunity to provide good customer service, I guess. (Luckily, most of the requests are compatible with each other. At one point we ran as root because that's the default, a customer required running as a user, and now everyone can run a locked down version; nobody NEEDED to run as root. So these requests generally improve the product, but it's a little tedious to make them ask.)

Re:Falling for Kubernetes by moondev on Tuesday August 09, 2022 @11:04PM (#32407454)
kustomize supports using a helm chart as a resource

https://kubectl.docs.kubernetes.io/references/kustomize/kust...

Re:Falling for Kubernetes by playing_colours on Wednesday August 10, 2022 @03:07AM (#32408637)
Can you please elaborate on “render, don’t template”?
Re:Falling for Kubernetes by _ikke_ on Wednesday August 10, 2022 @07:33AM (#32410266)
With templating, you treat the yaml as text with a yaml-unaware templating engine (like golangs text/template). You need to make sure that the end result is valid yaml.

With rendering, you use something that is aware of yaml, and you feed it data and it outputs valid yaml.

Re:Falling for Kubernetes by halfmatthalfcat on Tuesday August 09, 2022 @05:30PM (#32404584)
I don't understand this comment. How else are you going to deploy pieces of k8s infra into k8s if not with Helm and Helm Charts? Sure, you can use Argo to deploy and sync Helm charts into k8s but...you're still going to be using Helm (if not indirectly via Argo) and you will inevitably need to template things that need to be dynamically configured at render-time.
Re:Falling for Kubernetes by hosh on Tuesday August 09, 2022 @05:44PM (#32404749)
I don't use templates for manifests and avoid them like the plague.

I use my preferred language to emit manifests and built tooling around it. It does not template, and instead generates the manifest by transforming a data structure (hash) into json. I can then use whatever language feature or library I need to generate that data structure. This is much easier to work with than trying to edit template files.

I don't need to save the output of these because when I use the tooling, it generates and feeds that directly into kubectl. There's also a diff tool that works most of the time that lets me see what I am about to change before changing it.

In fact, I ended up adding a wrapper for Helm so that I can have all the various --set and values, source chart, chart repo, chart version pinning all versioned in git, and use the same tooling to apply those with the flags to install things idempotently turned on by default. It sets that up and calls helm instead of kubectl.

That tooling I wrote is open-source. You never heard of it because (1) I don't have the time and energy to document it or promote it, and (2) it only makes sense for teams that use that particular language. Helm is language-agnostic.

EDIT: and reading this thread, someone mentioned Kustomize. If that had been around in '16, I might not have written my own tool. It looks like it also treat YAML manifests as something to be transformed rather than templates to be rendered.

Re:Falling for Kubernetes by qbasic_forever on Tuesday August 09, 2022 @05:33PM (#32404629)
Just kubectl apply the manifests. You can even use kubectl -k for the Kustomize configuration engine that can more or less replace most of what helm does today.
Re:Falling for Kubernetes by halfmatthalfcat on Tuesday August 09, 2022 @05:39PM (#32404692)
So what, I'm going to have a big Makefile or something with a bunch of kubectl applies? For each environment too? What if one of my dependencies (cert-manager for example) doesn't support directly applying via kubectl but have to be rendered with Helm? How do I manage versions of these dependencies too?

For better or for worse Helm is the defacto standard for deploying into k8s. Kustomizing toy apps or simple things may work but I have yet to see a large production stack use anything but Helm.

Re:Falling for Kubernetes by qbasic_forever on Tuesday August 09, 2022 @05:44PM (#32404751)
You can prerender helm charts into plain old manifests and apply those. How you want to handle applying them is up to you, even helm doesn't recommend or want people to run it as a service that auto applys charts anymore. Most folks check manifests into a git repo and setup automation to apply the state of the repo to their clusters--there are tons of tools to do this for you if you want.

Definitely check out kustomize, it's not a toy and it can easily handle one main manifest with specializations for each unique deployment environment. It's a very nice model of override and patching config instead of some insane monster template and yaml generation like helm.

Re:Falling for Kubernetes by cassianoleal on Tuesday August 09, 2022 @05:45PM (#32404759)
I've worked 4 years for a client where everything was either plain K8S YAMLs Kustomizations, mostly the latter.

Large clusters, about 80 service teams and many hundreds of apps.

We (the platform team) managed roughly 30-40 services or controllers, including cert-manager, our own CRD for app deployments, ElasticSearch, Victoria Metrics, Grafana and others.

It was (still is, only I'm sadly not there anymore!) a high performing team and organisation with a lot going on.

We reviewed the decision to not use Helm many times and every time it was pretty much unanimous that we had a better solution than the opaque and awkward templating.

Re:Falling for Kubernetes by rstat1 on Wednesday August 10, 2022 @12:16AM (#32407807)
"kubectl apply -f https://github.com/cert-manager/cert-manager/releases/downlo..."

Taken straight from their docs.

Re:Falling for Kubernetes by hosh on Tuesday August 09, 2022 @05:53PM (#32404858)
I'm not using Helm for deploying applications, though I use it for vendor manifests. It's not a small production stack, nor is it a toy app.

I'm not using Makefile either.

Helm is a kind of least-common denominator software that's better than doing nothing, but the template paradigm leaves a lot to be desired. It's main advantage is being language-agnostic.

Re:Falling for Kubernetes by joshuak on Wednesday August 10, 2022 @03:36AM (#32408828)
Why would you need a Makefile? You have to run helm to apply helm charts, how is `kubectl apply -f .` any more complicated then that?

The entire existence of helm is superfluous. The features it provides are already part of Kubernetes. It was created (by /) for people who understand the package manager metaphor but don't understand how Kubernetes fundamentally works.

The metaphor is wrong! You are not installing applications on some new kind of OS. Using helm is like injecting untracked application code into a running application.

At best helm is just adding unnecessary complexity by re-framing existing features as features that helm adds.

In reality helm's obfuscation leads to an impenetrable mess of black boxes, that explodes the cost and complexity of managing a k8s cluster.

First off if you are packaging and/or publishing apps using helm charts, stop it!

There is purpose to the standardization of the Kubernetes configuration language. Just publish the damn configuration with a bit of documentation.... You know just like every other open source library! You're building the configuration for the helm chart anyway, so just publish that. It's a lot less work then creating stupid helm charts that serve no purpose but to obfuscate.

Here is your new no helm instructions: We've stopped using helm to deploy our app. To use our recommended deployment, clone this repo of yaml configs. Copy these files into your kubernetes config repo, change any options you want (see inline comments). Apply with `kubectl apply -f .`, or let your continuous deployment system deploy it on commit.

What have you lost?

Re:Falling for Kubernetes by powerhour on Tuesday August 09, 2022 @05:34PM (#32404637)
The only thing helm provides is awkward templating, IME. Ideally you'd never use a text template library to manipulate YAML or JSON structured objects. Instead you'd have scripts that generate and commit whole YAML files, or you'd just update the YAML manually (less optimal), and then you'd write those to the k8s API directly or through a purpose-built tool.

(Or, hell, helm but with no templating whatsoever).

Re:Falling for Kubernetes by jrockway on Tuesday August 09, 2022 @06:57PM (#32405685)
> How else are you going to deploy pieces of k8s infra into k8s if not with Helm?

kustomize? raw manifests? "sed s/MY_PER_DEPLOYMENT_VALUE/whatever/" < manifest.yaml | kubectl apply -f -"? "jsonnet whatever.jsonnet | kubectl apply -f -"?

But yeah, a lot of people think Helm is mandatory and ask for it by name, and if you don't provide a chart they won't use your thing.

Re:Falling for Kubernetes by cortesoft on Tuesday August 09, 2022 @11:07PM (#32407475)
You can use envsubst instead of sed
Re:Falling for Kubernetes by vbezhenar on Wednesday August 10, 2022 @05:41AM (#32409599)
You don't like text templating, so you're suggesting text templating, right?
Re:Falling for Kubernetes by cortesoft on Wednesday August 10, 2022 @01:05PM (#32415271)
I mean, I like text templating. Was just pointing out a way to do what the commenter was saying easier.
Re:Falling for Kubernetes by jrockway on Wednesday August 10, 2022 @01:31PM (#32415640)
Yeah I think it's awfully unfair to say "you can't post the name of a relevant tool unless you want to go on record as LOVING TEXT TEMPLATING". I thought your reply was useful.
Re:Falling for Kubernetes by Bayart on Wednesday August 10, 2022 @03:48AM (#32408919)
> How else are you going to deploy pieces of k8s infra into k8s if not with Helm and Helm Charts?

kubectl apply -f $MANIFESTS

> you're still going to be using Helm (if not indirectly via Argo) and you will inevitably need to template things that need to be dynamically configured at render-time.

Use Kustomize for dynamic vars and keep it at a minimum. Templating is the root of all evil.

Helm mostly adds unnecessary complexity and obscurity. Sure it's faster to deploy supporting services with it, but how often do you actually need to do that anyway ? The time you're initially gaining by using Helm might generate an order of magnitude more time in maintenance later on because you've created a situation where the underlying mechanics are both hidden and unknown from you.

Re:Falling for Kubernetes by vbezhenar on Wednesday August 10, 2022 @05:39AM (#32409590)
> kubectl apply -f $MANIFESTS

How do you configure it? Like you're installing new version, do you go over manifests and edit those by hand over and over every update? Do you maintain some sed scripts?

helm is awesome because it separates configuration.

Re:Falling for Kubernetes by Bayart on Wednesday August 10, 2022 @06:02AM (#32409724)
I actually used to sed configurations, now I use yq[0] whenever I need to programatically edit YAML/JSON. It has much less side effects.

But for Kubernetes manifests specifically, the right tool for the job is Kustomize[1] (which in that case does what Helm does for you, keeping dynamic variables separate). It ships with kubectl and I'm a big believer in using default tools when possible.

> Like you're installing new version, do you go over manifests and edit those by hand over and over every update?

I check the patch notes, diff the configuration files to see if anything new popped up, do the required changes if necessary, jump the version number and deploy.

It sounds laborious but it's really not that much work most of the time, and more importantly it forces you to have a good sense for what and how everything works. Plus it allows you to have a completely transparent, readable environment. Both are important for keeping things running in a production environment. Otherwise you might find yourself debugging incomprehensible systems you've never paid attention to in the middle of the night with 2 hours left before traffic starts coming in.

[0]: https://github.com/mikefarah/yq

[1]: https://kustomize.io

Re:Falling for Kubernetes by vbezhenar on Wednesday August 10, 2022 @06:50AM (#32410006)
Well, that makes sense but sounds like I would spend much more time than necessary for many packages. If that would be my full-time job, I guess it would work, but I just need to install something and move on to other things. Some packages install thousands of lines of yaml. I guess I would need more than one day to grok it. Installing it with helm is easy and it usually works.

Something simple like GitLab probably would be impossible to understand for a simple person.

Re:Falling for Kubernetes by Bayart on Wednesday August 10, 2022 @07:54AM (#32410422)
Yeah, I might be thinking of it as simpler than it really is just out of habit. Though it has to be said than most Kubernetes resources are pretty pedestrian, with habit you know where to look for the meaningful bits (much like any other form of source code).
Re:Falling for Kubernetes by justinsaccount on Tuesday August 09, 2022 @05:33PM (#32404623)
Re:Falling for Kubernetes by halfmatthalfcat on Tuesday August 09, 2022 @05:36PM (#32404666)
So instead of Go Templates, I'm going to use Dhall? Why? I'd be losing interop with the entire Helm ecosystem too, so there go dependencies and such to maintain my IaC.

That blog post doesn't alleviate any issues one might have using the traditional Go Templates + Helm.

Re:Falling for Kubernetes by silasdavis on Tuesday August 09, 2022 @05:43PM (#32404739)
https://www.pulumi.com/docs/get-started/kubernetes/

Gives you a Typescript API for generating resources. The difference is that these templates are semantic (via the type system) not just syntactic as in text templates. Relatedly, they also factor and compose better because functions and imports.

Re:Falling for Kubernetes by bottled_poe on Tuesday August 09, 2022 @07:31PM (#32406029)
It’s probably best you avoid using Kubernetes in production for a long while. At the very least until you understand why your comment is being so heavily downvoted.
Re:Falling for Kubernetes by halfmatthalfcat on Tuesday August 09, 2022 @07:39PM (#32406088)
I’ve been using Kubernetes in production for over 4 years. I think I fully understand what’s going on, it’s just I have a different opinion than those downvoting me.
Re:Falling for Kubernetes by anotherhue on Tuesday August 09, 2022 @08:46PM (#32406614)
There's a few dozen ways to work with k8s that don't involve helm. I understand that hasn't been your experience but to deny they exist shows a lack of.
Re:Falling for Kubernetes by halfmatthalfcat on Tuesday August 09, 2022 @09:36PM (#32406959)
I’m not denying they exist, I’m arguing they are either inferior or do not fully substitute functionality.
Re:Falling for Kubernetes by akvadrako on Wednesday August 10, 2022 @02:23AM (#32408371)
It's true they do less, but that's mostly a good thing. I never use helm, just scripts and kustomize.

The one thing it misses is a way to easily delete resources.

Re:Falling for Kubernetes by whalesalad on Tuesday August 09, 2022 @07:23PM (#32405959)
I really think this is why most people dislike and misunderstand the value of kube. If you raw dog it, it’s pretty amazing what you can build. It’s not very hard to roll your own Heroku (tailored to your workflows and workloads) with kube, if you shy away from all the noise of helm and other vendors as you say.