v1.8.2

Conversation

Session ID: 36f99b0bf2684b387d5a828fad640df2

Back to List
system text
23:09:52
You are an expert AI assistant editor for a blog. Your role is to help users refine, correct, and improve their blog posts. Focus on clarity, grammar, tone, and flow.
You are grounded in reality and must avoid hallucinations. Do not invent facts or modify the core meaning of the user's text unless requested.
You have a tool called `edit_text`. YOU MUST CALL THIS TOOL BY RESPONDING WITH A VALID TOOL CALL JSON PAYLOAD.
DO NOT WRITE PYTHON, JAVASCRIPT, OR ANY OTHER CODE. DO NOT WRAP YOUR RESPONSE IN `print()` OR ANY OTHER FUNCTION.
user text
23:45:45
Here is the current content of the blog:

# Have Kubernetes operators gone too far?

What does this even mean? Well, to be honest, I am not sure myself, but let's start with a short story.

I was setting up an AWS environment recently. I had an EKS cluster, some APIs, and an RDS database. The RDS password was stored in AWS Secrets Manager, but my app only supported reading secrets from environment variables. Now, I am lazy, and I didn't want to update my app to read the secret from AWS Secrets Manager, but luckily I remembered the [External Secrets Operator](https://external-secrets.io/latest/). I had used it in the past and remembered it being easy to set up—it just worked. 

So let's install it: go get the CRDs bundle from [here](https://github.com/external-secrets/external-secrets/blob/main/deploy/crds/bundle.yaml), and would you look at that—it's 28K lines long and needs a `--server-side` flag to apply because the CRDs are too big and `kubectl` doesn't support it. Whatever, apply it and move on. Let's install the operator itself. Now I have three services running in my cluster:
* external-secrets-cert-controller
* external-secrets
* external-secrets-webhook

I just wanted to move one secret from AWS to the EKS cluster, and now I have thousands of lines of YAML and more microservices than secrets. Why are there 28K lines of YAML definitions? Why does it take three services to copy one secret? What happened here? 

Story time over. Let me just try to set something straight: I don't hate a specific operator or Kubernetes. I have used External Secrets for years, and arguably, I owe my career to Kubernetes. But it is starting to feel like a Kubernetes cluster is turning into a Node project with all its npm dependencies just to do the simplest thing. And I know I am part of the problem, reaching for an operator to read a single secret.

My journey with Kubernetes started with my first job. We didn't have a cloud, and the company had its own datacenters. This means that a VM is provisioned in days and a firewall in weeks if you are unlucky. In that environment, I was on a team trying to run a Kubernetes cluster so other people could just deploy to it and not have to deal with any of the underlying infrastructure. In our cluster, there were no operators, no autoscaling, no persistent disks, but it was still preferred over managing your own infrastructure. 

We ran A Prometheus and an ELK stack for observability on VMs, no operators. I believe this was one of the best decisions for our stack and my career. Let's say something goes wrong, you go to Prometheus, check the logs, and fix it. Let's say you use the Prometheus operator and something goes wrong. You can check the logs. Then you go and read the docs of the Prometheus operator to see how to configure the settings you need to check. And this is only if you are lucky. Sometimes you have to disable an operator, recover the service, and re-enable the operator. Sometimes it feels like it is no longer enough to know how to operate a serivce now you also need to know how to operate an operator that operates a service. 

So, all I am trying to say is: What happened to learning how to operate a service, setting a pipeline to maintain it? DO we need operators that rival the number of NPM packages needed to build this website? 

---

User request:
user text
23:45:45
Can you proof read the last 3 paragraphs
model functionCall
23:46:03
Function Call:
{
  "args": {
    "replacements": [
      {
        "new_text": "This meant that a VM was provisioned in days and a firewall in weeks if you were unlucky.",
        "old_text": "This means that a VM is provisioned in days and a firewall in weeks if you are unlucky."
      },
      {
        "new_text": "We ran Prometheus and an ELK stack for observability on VMs, with no operators.",
        "old_text": "We ran A Prometheus and an ELK stack for observability on VMs, no operators."
      },
      {
        "new_text": "Sometimes it feels like it is no longer enough to know how to operate a service; now you also need to know how to operate an operator that operates a service.",
        "old_text": "Sometimes it feels like it is no longer enough to know how to operate a serivce now you also need to know how to operate an operator that operates a service."
      },
      {
        "new_text": "So, all I am trying to say is: What happened to learning how to operate a service and setting up a pipeline to maintain it? Do we need operators that rival the number of npm packages needed to build this website?",
        "old_text": "So, all I am trying to say is: What happened to learning how to operate a service, setting a pipeline to maintain it? DO we need operators that rival the number of NPM packages needed to build this website?"
      }
    ]
  },
  "name": "edit_text"
}