[HN Gopher] Deploying Kubernetes clusters in increasingly absurd...
       ___________________________________________________________________
        
       Deploying Kubernetes clusters in increasingly absurd languages
        
       Author : jaxxstorm
       Score  : 121 points
       Date   : 2022-05-06 15:26 UTC (7 hours ago)
        
 (HTM) web link (leebriggs.co.uk)
 (TXT) w3m dump (leebriggs.co.uk)
        
       | protomyth wrote:
       | Might as well do MUMPS and COBOL for the next article.
       | 
       | I found the Fortran example very interesting. I guess it makes
       | sense modern libraries would be available.
        
         | jaxxstorm wrote:
         | I actually tried to get something working in COBOL, but my lack
         | of familiarity with it made it a struggle. Would happily take a
         | contribution at https://github.com/jaxxstorm/pulumi-examples
        
       | dilyevsky wrote:
       | https://github.com/cruise-automation/isopod
       | 
       | Starlark -> protos -> k8s api. Jic you wanted more confuse
        
       | AndyNemmity wrote:
       | What is that cat replacement you are using?
        
         | scheme271 wrote:
         | It's called bat ( https://github.com/sharkdp/bat )
        
       | timcavel wrote:
        
       | lukehoban wrote:
       | There have been some good questions in a few of the threads here
       | about why Pulumi added YAML support in the first place. I thought
       | I'd share a few thoughts on that.
       | 
       | Certainly it wasn't only about being able to compile all sorts of
       | esoteric languages down into a YAML-based data representation -
       | though it's fun to see the results of that here :-).
       | 
       | Our goal at Pulumi has really been to offer the best tools for
       | infrastructure as code, and for defining and managing cloud
       | infrastructure more generally, for _any_ developer working with
       | the cloud.
       | 
       | We started with a focus on the high-end - teams managing
       | significant complexity of cloud infrastructure to get the most
       | they can out of the managed services their cloud providers are
       | making available as building blocks. We've grown with this part
       | of the market, with great adoption and usage across many of the
       | most advanced cloud engineering teams.
       | 
       | In order to grow with these users, we've invested in many layers
       | of the Infrastructure as Code stack. Some of those improvements
       | have been related to the software engineering benefits of using
       | traditional general purpose programming languages to manage cloud
       | infrastructure - IDEs, types, abstraction and reuse, test
       | frameworks, packaging and versioning and so much more. But we've
       | also been making improvements at many other layers of the stack.
       | Our cloud deployment orchestration engine is now, I believe, the
       | richest option in the market - with multi-cloud support, built-in
       | secrets management, refactoring support with aliases, rich
       | controls over replacement behaviour, built-in support for
       | components, and much more. And our native providers for Azure,
       | Kubernetes, Google Cloud and AWS are the most complete and most
       | up-to-date providers for managing those cloud platforms.
       | 
       | We wanted to be able to offer all these benefits to the broadest
       | possible range of developers working in the cloud. Since we
       | already have very rich programming language options, we wanted to
       | add an option at the other end of the spectrum - the simplest
       | possible interface we could to the Pulumi platform. And that is
       | what Pulumi YAML is. It is _very_ simple, and designed for small
       | scale use cases (a few to a dozen resources). It composes with
       | the rest of the Pulumi ecosystem, so it's easy to push complexity
       | into components built in other Pulumi languages, to reference
       | outputs of stacks deployed by other Pulumi languages, or even to
       | "eject" into another Pulumi language if the complexity gets too
       | high in YAML. So unlike many other IaC ecosystems where YAML or a
       | DSL is the _only_ option, in Pulumi, YAML can be a nice solution
       | for simple use cases, without having to be abused for the complex
       | use cases that are already well served by Pulumi's existing
       | alternative programming language choices.
       | 
       | There's more details on all of these points at
       | https://www.pulumi.com/blog/pulumi-yaml/ for those interested in
       | learning more!
        
       | waprin wrote:
       | When I worked at Google, I made an App Engine Flexible runtime
       | for the Whitespace language (only valid characters are space,
       | tab, etc).
       | https://en.wikipedia.org/wiki/Whitespace_(programming_langua...
       | 
       | App Engine Flexible was another one of these products that just
       | needed a container that responded on certain ports, it was quite
       | fun to get it working. But I ended up writing a tiny "compiler"
       | that would compile a small subset of Python to whitespace since
       | writing just whitespace itself was quite challenging, obviously.
       | 
       | I wanted to release it on April Fools Day but my manager was
       | totally against it because April fools had become its own serious
       | entity in the marketing org and he didn't want me stealing their
       | thunder ( these days Google has dropped April Fools jokes
       | altogether, I guess it got a little played out).
        
         | dilyevsky wrote:
         | I remember some people being really upset with My Little Pony
         | Borg ui theme
        
           | ceph_ wrote:
           | I understand where they were coming from, having to look at a
           | pink/rainbow bm ui while debugging a page didn't make it any
           | easier. But it was also one of the greatest April fools jokes
           | of all time.
           | 
           | RIP My Little Borgmaster: Production is Magic
        
         | cecilpl2 wrote:
         | > April fools had become its own serious entity in the
         | marketing org
         | 
         | This is hilarious and not at all surprising
        
       | BonoboIO wrote:
       | Brainfuck?
       | 
       | https://en.wikipedia.org/wiki/Brainfuck
       | 
       | Example: ++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---
       | .+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
        
         | jaxxstorm wrote:
         | https://github.com/jaxxstorm/pulumi-examples/pull/97
        
       | throwaway787544 wrote:
       | I love this article, but I also hate that Pulumi has created yet
       | another bad DSL using YAML. One day, somebody in charge of
       | product design will also be a good engineer, and the crazy shit
       | customers ask for will not end up a terrible feature. Until that
       | day...
        
         | Jenk wrote:
         | You guys will just _love_ the shared mentality on  /r/DevOps.
         | Apparently YAML is the one true declarative language that all
         | others are failing to imitate. I'm literally Judas for
         | preferring to use typescript with pulumi.
        
           | baq wrote:
           | i hate yaml more than xml and that is saying something. i get
           | looked at strange when i say this loudly, like i'm from mars
           | or whatever. it's like being in a collective hallucination
           | where you know you're right and everybody else is wrong and
           | nothing makes sense anymore.
           | 
           | i've tried to fight this by leading by example with
           | https://dhall-lang.org/ but apparently having a configuration
           | compiler is too much... unless the compiler takes yaml as
           | input, then it's fine.
        
         | phillipcarter wrote:
         | why-not-both.jpg?
         | 
         | I hate yaml as much as the next developer, but I've met plenty
         | of folks who far prefer it to using a "real" language.
         | Different strokes for different folks?
         | 
         | The challenge from a product standpoint is how to balance these
         | different ways to do something without (a) ostracizing one
         | group, and (b) creating a confusing mess on the "get started"
         | path.
        
           | 0xbadcafebee wrote:
           | Some people prefer some things just because they haven't
           | learned a better way, but if you show them a better way,
           | they'd gladly use it. I think the mission of a product
           | designer should be to see through what the user thinks they
           | need, and provide something that solves their real problem in
           | the best way.
           | 
           | In the case of IaC, what the customer really wants is a
           | programmatic way to generate instructions for Pulumi to use
           | to build infrastructure. The dream of "declarative" anything
           | is to explain what you want and have a machine make it
           | reality, right? But in practice that's hard to do. The
           | machine needs to be very, very smart.
           | 
           | But it's not that smart. So we cheat and invent non-
           | programming-languages, so that people end up telling the
           | machine in far too much detail what they want. Do I really
           | want to tell the machine to "go in a loop creating resources
           | as long as there are resources in a list" ? Or do I really
           | want to do some _other thing_ , and making these resources
           | should just be an incidental part of that that I shouldn't
           | have to explain at all?
           | 
           | Programmers who like YAML for anything other than pure data
           | serialization don't actually like YAML, they just like that
           | they can cheat with it. No need to write a configuration
           | format if you read your configuration from it. No need to
           | write a DSL if you execute logic based on it. The programmers
           | who don't like YAML wanted to do the same things, but were
           | bitten by all the problems that came from using the wrong
           | thing for the wrong purpose.
           | 
           | So really, the product person and experienced engineer need
           | to work together to prevent this whole situation from ever
           | occurring. Create a schema, and create libraries that can
           | generate YAML based on the schema, but do it in such a way
           | that no human would ever want to edit it by hand, and too
           | complicated to ever write a generator for it without the
           | schema. This way the customer can't shoot themselves in the
           | foot, or demand changes which would make everything worse.
        
         | oneplane wrote:
         | It's a bit of an XKCD where they keep re-inventing YAML-based
         | DSLs. We have weird "native" YAMLs for AWS, GCP and Azure, and
         | then YAML DSLs to generate those YAML DSLs. Even SaltStack and
         | Ansible do it...
         | 
         | It's almost like someone had a bad idea and put XKCD and Xzibit
         | in a blender...
        
           | chupasaurus wrote:
           | Ansible even states that it doesn't have DSL while it
           | actually is when you go to the rabbit hole deep enough.
        
             | deathanatos wrote:
             | ... you don't have to but peer slightly into that rabbit
             | hole; your first example Ansible playbook should very
             | clearly demonstrate it has a DSL...
        
         | zozbot234 wrote:
         | This article gets one thing right: if you're going to
         | autogenerate something as complex as YAML, you'll really,
         | really want to stick to a sane subset of the underlying
         | language (here, JSON).
        
         | throwaway894345 wrote:
         | All of this IAC crap was sold to barely-tech-literate
         | engineering managers as "declarative makes the complexity go
         | away!" so every IAC vendor wed themselves to YAML or HCL or
         | JSON, but of course the complexity _doesn't_ go away and so the
         | vendors came up with increasingly absurd ways to DRY up this
         | YAML (text templates a la Helm or encoding a DSL into your
         | config language a la Terraform and CloudFormation). Eventually
         | people realized this was madness and what's really needed is a
         | programming language that can resolve to these static
         | manifests, so these vendors in their zeal to forever
         | misunderstand the assignment came out with CDKs so we can
         | compile source code to YAML with a whole bunch of pointless
         | inheritance to really make a mess of things.
        
           | datalopers wrote:
           | It's okay they'll all be unemployed by Christmas 2023 and
           | we'll look back on this tech boom with "maybe we should have
           | solved business problems instead of spending all our time
           | rewriting from one devops tooling to the next?"
        
             | Jenk wrote:
             | That claim is more absurd than those you mock.
        
               | datalopers wrote:
               | This tech bubble already popped a leak (Nov 2021) and is
               | deflating rapidly. There's enough runway to last another
               | year or two. Down-rounds and lay-offs are coming fast.
               | 
               | Companies with ample cash will be fine, of course, but
               | all these spurious startups with egregious VC funding,
               | overpaid Pulumi and Kubernetes and <insert all the other
               | unnecessary tech> engineers will soon be out of work and
               | unable to find similar employment comp.
               | 
               | People who get shit done and can run lean profit driven
               | businesses will continue to survive just fine.
        
               | outworlder wrote:
               | I was going to complain about conflating the market with
               | the economy, but the more I wrote, the more I started to
               | agree with you.
               | 
               | Companies relying on crazy market valuations will pop
               | just like they always did. Companies with sufficient
               | revenue OR cash should continue.
               | 
               | Kubernetes is fine and it's not _unnecessary_. It's
               | absolutely crucial to many companies and having this tech
               | available has solved many problems. It creates other
               | problems, of course.
               | 
               | People like to complain about Kubernetes, but my
               | viewpoint is that _microservices_ is the unnecessary tech
               | here. Sure, some stacks may benefit, but I 'm willing to
               | wager that most companies are not doing microservices,
               | they are actually creating distributed monoliths just to
               | be able to ship their org chart. And, in the process,
               | adding all sorts of technologies that shouldn't be
               | necessary.
        
               | datalopers wrote:
               | Yep. The freedom of choice created by microservices and
               | developer tendency to play with everything under the sun
               | and immediately rewrite tooling into it. Now you have
               | people writing node alongside python alongside haskell
               | alongside rust in the same org all talking to eachother
               | via really inefficient http calls.
               | 
               | It's not just that of course. It's the entire web
               | toolchain and build pipelines, SPAs, react, node/npm,
               | that entire community reinventing "SSR" and caching.
               | 
               | It's the "modern data platform" movement where people
               | stop using databases and slap everything into python and
               | 10 layers of ETL and job queues and dags all so it loads
               | into a cloud data platform with a separation of storage
               | and compute at the end.
               | 
               | It's all a bunch of crap is my issue and why I call it a
               | bubble. Nobody is solving actual business problems.
               | They're just creating tooling and then new companies to
               | make that tooling less insufferable.
               | 
               | As one tiny example, how much of say Datadog's revenue is
               | coming from overfunded VC companies who have never
               | considered cost or utility. Those logs should have been
               | sent to /dev/null in the first place is usually the
               | answer.
        
               | phillipcarter wrote:
               | I don't suspect you'd change your mind, but I disagree
               | with this statement:
               | 
               | > Nobody is solving actual business problems.
               | 
               | I think most people are solving business problems and
               | that you're (perhaps justifiably) jaded on the tech side
               | of it.
        
               | outworlder wrote:
               | It's more like - there's a bunch of people trying solve
               | business problems while having to work around technology
               | decisions that they don't get to make, then hiring other
               | people that are working on solving the problems created
               | by said choices.
               | 
               | The entire CNCF doesn't solve a single business problem.
               | And I say this while working with K8s since 2016. Not
               | once has a customer thanked me for my tech stack.
               | 
               | You and the parent are probably talking about different
               | people.
        
               | mardifoufs wrote:
               | We've been hearing the same exact thing since at least
               | 2013. I remember when 2015 was going to be the next huge
               | tech crash, but nothing happened.
        
               | outworlder wrote:
               | Market something irrational something solvent
        
               | baq wrote:
               | stop listening to cnbc, start looking at the numbers.
               | shit's gone really bad really fast and it's only
               | starting. first signs of weakness in LQD, HYG and JNK
               | have been there since december and it's been straight
               | down from there. stay aware.
        
               | datalopers wrote:
               | https://en.wikipedia.org/wiki/Dot-com_bubble
               | 
               | > Low interest rates in 1998-99 facilitated an increase
               | in start-up companies
               | 
               | > In 2000, the dot-com bubble burst, and many dot-com
               | startups went out of business after burning through their
               | venture capital and failing to become profitable.
               | 
               | Sound familiar? It should, because history rhymes.
        
               | Jenk wrote:
               | What is utterly absurd is not the claim that capitalism
               | has boom or bust, but that IAC is in _any_ way related.
        
               | [deleted]
        
               | bogomipz wrote:
               | How exactly does a Wikipedia entry for the 1999 dot com
               | crash support your assertion that that a market crash is
               | imminent? How is that any different than make posting a
               | Wikipedia link for World War II as supporting evidence
               | that World War 3 is imminent? At any rate it does not
               | sound familiar. Nor does it look familiar. The world in
               | 2022 looks very different compared to the world at the
               | end of the last century.
               | 
               | People have seemingly predicted 20 of the last 1 tech
               | bubbles. The "Dot Com Bust 2.0" headline is practically a
               | meme at this point. I feel like it's something lazy
               | journalists do on slow news days. Here's a brief sampling
               | from the last 8 years.
               | 
               | From 2014 - "In Some Ways, It's Looking Like 1999 in the
               | Stock Market"[1]
               | 
               | From 2016 - "This Tech Bubble Is Bursting"[2]
               | 
               | From 2018 - "Silicon Valley tech bubble is larger than it
               | was in 2000, and the end is coming" [3]
               | 
               | From 2020 - "6 Reasons This Tech Bubble Is Bursting"[4]
               | 
               | Ad infinitum.
               | 
               | [1] https://www.nytimes.com/2014/03/30/business/in-some-
               | ways-its...
               | 
               | [2] https://www.wsj.com/articles/this-tech-bubble-is-
               | bursting-14...
               | 
               | [3] https://www.cnbc.com/2018/05/22/tech-bubble-is-
               | larger-than-i...
               | 
               | [4] https://www.fool.com/investing/2020/09/10/6-reasons-
               | this-tec...
        
               | tyrfing wrote:
               | Yup, the clock is ticking and a lot of people haven't
               | realized yet. The circular economy of VC-funded startups
               | selling things to other startups will be some of the
               | worst hit...
               | 
               | Not sure about Pulumi, looks like they only have a series
               | B 1.5 years ago. Either they have a very short runway at
               | this point or found some real ARR.
        
           | bogomipz wrote:
           | I'd be curious to hear what you see as a better alternative
           | to all of this "IAC crap."
           | 
           | Also how many IAC vendors are there really? Hashicorp, Pulumi
           | and AWS? What are the others?
           | 
           | As I recall before cloud era infrastructure on any kind scale
           | was still code, its just that the code was maintaining
           | thousands of lines of Kickstart of FAI configs and associated
           | preinstall and postinstall shell scripts. I don't remember
           | that being any more pleasant to maintain.
        
           | klysm wrote:
           | Would you rather manually manage things through a UI? It's
           | not like IAC doesn't solve problems. Sure it introduces some
           | and isn't optimal but I'm curious to hear your solution.
        
       | flurie wrote:
       | I know this piece is mostly for the humor of increasingly arcane
       | config generation systems, but given that Pulumi is attempting to
       | displace the most popular application using HCL2, I find it
       | interesting that the HCL example looks ergonomically awful.
       | 
       | The CUE support in particular looks fairly interesting, because I
       | think it is going to end up being the universal translator for a
       | bunch of these golang tools due to its ability to pull in types
       | directly from code.
        
       | jaxxstorm wrote:
       | Since I wrote this article, my colleagues and friends have
       | chipped in with even more absurd examples.
       | 
       | How about some Pascal? https://github.com/jaxxstorm/pulumi-
       | examples/pull/96 Or maybe Emacs Lisp is more your flavour?
       | https://github.com/jaxxstorm/pulumi-examples/pull/95
       | 
       | Or the piece de resistance: Brainfuck:
       | https://github.com/jaxxstorm/pulumi-examples/pull/97
        
         | lukeramsden wrote:
         | I'm assuming there's some sort of transpiler to brainfuck? I
         | just cannot stomach the idea that that was written by hand
         | somehow....
        
           | retrac wrote:
           | Usual strategy is to use a macro assembler and lots of macros
           | to build up some civilized things like stacks and
           | subroutines. But there are also several high level (ish)
           | languages that have compilers to BF.
           | 
           | https://esolangs.org/wiki/Brainfuck_code_generation
        
           | rrdharan wrote:
           | https://en.wikipedia.org/wiki/Brainfuck
           | 
           | > Although Brainfuck programs, especially complicated ones,
           | are difficult to write, it is quite trivial to write an
           | interpreter for Brainfuck in a more typical language such as
           | C due to its simplicity. There even exist Brainfuck
           | interpreters written in the Brainfuck language itself.
        
             | shpongled wrote:
             | The parent comment was about a transpiler targeting
             | brainfuck, not an interpreter. Writing a brainfuck
             | interpreter (or compiler to x86/etc) is indeed trivial...
             | writing a compiler targeting brainfuck is another beast
             | entirely.
        
         | _Algernon_ wrote:
         | TIL that the language I learned to program in (Pascal) is
         | absurd.
        
           | mst wrote:
           | Pascal seems somewhat absurd for this particular purpose but
           | that does not at all mean it is, itself, absurd.
           | 
           | Though I learned on BBC BASIC so my idea of what counts as
           | absurd as a first language may, of course, be questionable :D
        
           | SkinTaco wrote:
           | How's it feel, old man :)
        
           | cultofmetatron wrote:
           | it occupied a similar niche as go (easy to learn, fast to
           | compile, easy to deploy)
           | 
           | honestly its a shame it fell by the wayside.
        
         | zitterbewegung wrote:
         | Why is Emacs lisp absurd ? It's an editor that is widely
         | popular .
        
           | donio wrote:
           | And JSON support in Emacs is not some obscure feature these
           | days, it's heavily relied on by many popular packages.
        
           | alimov wrote:
           | Maybe "unexpected" would be a good substitute for absurd.
        
             | donio wrote:
             | It's not even that. There are several k8s packages on MELPA
             | and they are meant for real use rather than a blog joke.
        
           | gunfighthacksaw wrote:
           | Dynamic scoping.
           | 
           | Not saying it's without utility, but to the mainstream: pants
           | on head bonkers.
        
             | donio wrote:
             | Emacs has supported lexical binding for almost a decade now
             | and all the elisp files in Emacs itself use it. Most modern
             | packages do too.
        
         | outworlder wrote:
         | The ELisp version is quite nice.
        
       ___________________________________________________________________
       (page generated 2022-05-06 23:00 UTC)