client-go VS proposals

Compare client-go vs proposals and see what are their differences.

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
client-go proposals
38 60
8,586 63
1.5% -
9.3 4.0
7 days ago 16 days ago
Go
Apache License 2.0 MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

client-go

Posts with mentions or reviews of client-go. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-02-14.
  • The Inner Workings of Kubernetes Management Frontends — A Software Engineer’s Perspective
    4 projects | dev.to | 14 Feb 2024
    The Kubernetes clients (e.g., Go client) support developers with both methods to connect to a cluster, as we can see in the following examples.
  • Has anyone ever tried to learn how k8s works?
    4 projects | /r/golang | 11 Jul 2023
    My suggestion would be to start looking at things like https://github.com/kubernetes/client-go first in order to get a feel for the API and how data plane k8s components interact with the apiserver (it's the same thing that kubelet uses). Then move on to trying to build your own k8s operator to get a feel for how people expand and customize k8s functionality without having to modify upstream at all. IMO the codebase itself is too messy and in constant flux to make too much sense of it unless you are planning to contribute to upstream.
  • Can't override Kubernetes config in Kubernetes Go client
    1 project | /r/codehunter | 6 Jul 2023
    GitHub related issue https://github.com/kubernetes/client-go/issues/735
  • CUE compared to helm/kustomize...
    3 projects | /r/kubernetes | 5 Jul 2023
    CUE is cool and all but as soon as I start writing real code structures I want to reach for client-go.
  • Go 1.21 will (probably) download newer toolchains on demand by default
    4 projects | news.ycombinator.com | 23 Jun 2023
    I'm... really not sure I agree with this, from a philosophical point of view. It feels like this is making "eh, we'll just upgrade our Go version next quarter" too easy; ultimately some responsibility toward updating your application's Go version to work with what new dependencies require should fall on Us, the application developers. Sure, we're bad at it. Everyone's lived through running years-old versions of some toolchain. But I think this just makes the problem worse, not better.

    Its compounded by the problem that, when you're setting up a new library, the `go` directive in the mod file defaults to your current toolchain; most likely a very current one. It would take a not-insignificant effort on the library author's part to change that to assert the true-minimum version of Go required, based on libraries and language features and such. That's an effort most devs won't take on.

    I'd also guess that many developers, up-to this point if not indefinitely because education is hard, interpreted that `go` directive to mean more-of "the version of go this was built with"; not necessarily "the version of go minimally required". There are really major libraries (kubernetes/client-go [1]) which assert a minimum go version of 1.20; the latest version (see, for comparison, the aws-sdk, which specifies a more reasonable go1.11 [2]). I haven't, you know, fully audited these libraries, but 1.20 wasn't exactly a major release with huge language and library changes; do they really need 1.20? If devs haven't traditionally operated in this world where keeping this value super-current results in actually significant downstream costs in network bandwidth (go1.20 is 100mb!) and CI runtime, do we have confidence that the community will adapt? There's millions of Go packages out there.

    Or, will a future version of Go patch a security update, not backport it more than one version or so, and libraries have to specify the newest `go` directive version, because manifest security scanning and policy and whatever? Like, yeah, I get the rosy worldview of "your minimum version encodes required language and library features", but its not obvious to me that this is how this field is, or even will be, used.

    Just a LOT of tertiary costs to this change which I hope the team has thought through.

    [1] https://github.com/kubernetes/client-go/blob/master/go.mod#L...

    [2] https://github.com/aws/aws-sdk-go/blob/main/go.mod

  • How to list all kubernetes objects with specific label using client-go
    1 project | /r/codehunter | 17 Jun 2023
    I looked at dynamic package, but it seems like it needs GroupVersionResource, which is different for, say, Service objects and Deployment objects. Also when I pass schema.GroupVersionResource{Group: "apps", Version: "v1"} it doesn't find anything, when I pass schema.GroupVersionResource{Version: "v1"} it finds only namespace object and also doesn't looks for labels, though I provided label options:
  • What's the best way to get notified when kubernetes Deployments change using the k8s.io/client-go library?
    1 project | /r/codehunter | 17 Apr 2023
    I'm writing a script that uses the k8s.io/client-go library (godocs here) to manipulate Deployments. In particular, I want to add a label selector to every Deployment in my cluster. Deployment label selectors are immutable. So my approach is to:
  • K8S Get deployment liveness probe status
    1 project | /r/codehunter | 16 Apr 2023
  • Learning kubebuilder - good examples of Golang watching/manipulating k8s objects?
    1 project | /r/kubernetes | 12 Feb 2023
    Actually, kubebuilder is not using the standard Go libraries, but one using reflection to dynamically resolve the client based on the type you hand it (which is arguably better). The "official" client is k8s.io/client-go.
  • My LFX Mentorship experience with OpenELB
    8 projects | dev.to | 6 Oct 2022
    Then on June 18th, 2022, I got a chance to meet our mentors and the other mentee of OpenELB (the mentee and the mentors of OpenFunction were also there). There I was informed about how to start working on the project, so I started learning about using the Kubernetes API client. After experimenting with the official Kubernetes Client, I learned that it's not very feasible to use that for dealing with CRDs (custom resource definitions), so I explored the controller-runtime client as per what I found in many sources, and found that it was a great fit for the backend of our project. During that time, I also built a simple project to see if everything would work as expected or not (as this was the first time I dealt with a Kubernetes client, I considered that debugging would be easier in a smaller project).

proposals

Posts with mentions or reviews of proposals. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-12-21.
  • Is there an alternative for Airflow for running thousands of dynamic tasks?
    3 projects | /r/dataengineering | 21 Dec 2022
    Check out temporal.io open source project. It was built at Uber for large scale business-level processes. So any data pipelines are low-rate use cases by definition.
  • KuFlow as a Temporal.io-based Workflow Orchestrator
    1 project | dev.to | 16 Dec 2022
    With KuFlow it is also possible to work with serverless workflows apart from Temporal.io, we explain it in this blog entry, but in summary, almost as a no-code tool, the correct use It would be a rather low-code tool; in just a matter of minutes with our drag-and-drop tool, you can have a workflow that interacts with one or more users of the organization.
  • How to handle background jobs in Rust?
    5 projects | /r/rust | 1 Dec 2022
    Otherwise you may want to look into Kafka or Fluvio to ensure that task runs at least once. If you're doing something like batch operations as a background task, Temporal is another great option.
  • No-code or Workflow as code? Better both
    4 projects | dev.to | 29 Nov 2022
    The runtime is developed using Temporal, which is one of the main tools that we are currently using at KuFlow. Thanks to, all the workflow executions are robust: your application will be durable, reliable, and scalable.
  • Temporal Programming, a new name for an old paradigm
    2 projects | news.ycombinator.com | 27 Nov 2022
    Hmmm I got confused by the name. I thought it's related to https://temporal.io/
  • Possible innovations in Event Sourcing frameworks.
    2 projects | /r/microservices | 21 Nov 2022
    Have you looked at temporal.io open source platform? It uses event sourcing as an implementation detail. But it greatly simplifies the user experience compared to "raw event sourcing."
  • After Airflow. Where next for DE?
    13 projects | /r/dataengineering | 15 Nov 2022
    Rewrite Airflow on top of temporal.io. This way, you get unlimited scalability and very high reliability out of the box and would be able to innovate on the features that matter for DE.
  • Show HN: Retool Workflows – Cronjobs, but better
    1 project | news.ycombinator.com | 15 Nov 2022
    Hi all, founder @ Retool here. Over the past year, we’ve been working on Retool Workflows; a fast way for engineers to automate tasks with code. We started building the product because we ourselves (as developers) were looking for something in-between writing cron jobs (which involves a lot of boilerplate) and Zapier (which oftentimes isn’t customizable enough, since it doesn’t _really_ support writing code).

    Workflows is a code-first automation tool: you’re _expected_ to write code, but we handle all the boilerplate for you. For example: out-of-the-box integration with 80+ resources (you probably don’t want to be trying to figure out OAuth 2.0 with Salesforce!), monitoring and observability (so you can see the output of every run in the past, and immediately be notified if something goes wrong), and permissions (e.g. some Okta groups can see the outputs of Workflows, but can’t change the code itself).

    Right now, the product is cloud-only, but we’re hard at work at an on-prem, self-hosted version (in a Docker image). If you’re interested in that version, feel free to email us at [email protected]. We aim to get it out in the next few weeks. Self-hosted Retool is responsible for a large portion of our usage today, and we’re excited to be supporting Workflows too.

    All Retool plans now include 1GB of Workflows throughput, which we think is quite generous (80% of active Workflows users are below 1GB). We don’t bill by run at all, so you’re welcome to run as many workflows as you want.

    We use a bunch of interesting technology for Workflows; we are, for example, using Temporal (https://temporal.io/) under the hood. That’s something we’re going to be writing a blog post about later. (We’ve been hard at work on the launch, hah.)

  • How KuFlow supports Temporal as a worfkows engine for our processes?
    3 projects | dev.to | 15 Nov 2022
    In such a diverse world, it would be boring to have a single way of doing things. That's why at KuFlow we support different ways to implement the logic of our processes and tasks. And in this post, we will talk about one of them, the orchestration through Temporal, which gives us a powerful way to manage our workflows.
  • Library for manage tasks when make a workflow automation.
    1 project | /r/softwarearchitecture | 13 Nov 2022

What are some alternatives?

When comparing client-go and proposals you can also consider the following projects:

kubebuilder - Kubebuilder - SDK for building Kubernetes APIs using CRDs

conductor - Conductor is a microservices orchestration engine.

controller-runtime - Repo for the controller-runtime subproject of kubebuilder (sig-apimachinery)

temporalite-archived - An experimental distribution of Temporal that runs as a single process

kustomize - Customization of kubernetes YAML configurations

zenml - ZenML 🙏: Build portable, production-ready MLOps pipelines. https://zenml.io.

celery - Distributed Task Queue (development branch)

seldon-core - An MLOps framework to package, deploy, monitor and manage thousands of production machine learning models

apimachinery

kubemq-community - KubeMQ is a Kubernetes native message queue broker

k3s - Lightweight Kubernetes

nextjs-cron - Cron jobs with Github Actions for Next.js apps on Vercel▲