client-go VS kubernetes

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

client-go

Go client for Kubernetes. (by kubernetes)
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 kubernetes
38 656
8,586 106,611
1.5% 1.1%
9.3 10.0
8 days ago 1 day ago
Go Go
Apache License 2.0 Apache License 2.0
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).

kubernetes

Posts with mentions or reviews of kubernetes. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-04-10.
  • Building Scalable GraphQL Microservices With Node.js and Docker: A Comprehensive Guide
    6 projects | dev.to | 10 Apr 2024
    To learn more, you can start by exploring the official Kubernetes documentation.
  • Building Llama as a Service (LaaS)
    14 projects | dev.to | 8 Apr 2024
    With the containerized Node.js/Express API, I could run multiple containers, scaling to handle more traffic. Using a tool called minikube, we can easily spin up a local Kubernetes cluster to horizontally scale Docker containers. It was possible to keep one shared instance of the database, and many APIs were routed with an internal Kubernetes load balancer.
  • The power of the CLI with Golang and Cobra CLI
    9 projects | dev.to | 6 Apr 2024
    This package is widely used for powerful CLI builds, it is used for example for Kubernetes CLI and GitHub CLI, in addition to offering some cool features such as automatic completion of shell, automatic recognition of flags (the tags) , and you can use -h or -help for example, among other facilities.
  • Upgrading Hundreds of Kubernetes Clusters
    17 projects | dev.to | 3 Apr 2024
    We closely monitor Kubernetes and cloud providers' updates by following official changelogsand using RSS feeds, allowing us to anticipate potential issues and adapt our infrastructure proactively.
  • Kubernetes and back – Why I don't run distributed systems
    1 project | news.ycombinator.com | 28 Mar 2024
    "You are holding it wrong", huh?

    From the homepage https://kubernetes.io/:

    "Kubernetes, also known as K8s, is an open-source system for automating deployment, scaling, and management of containerized applications."

    Do you see "not recommended for smaller-scale applications" anywhere? Including on the entire home page? Looking for "small", "big" and "large" also yields nothing.

  • Open Source Ascendant: The Transformation of Software Development in 2024
    4 projects | dev.to | 19 Mar 2024
    Open Source and Cloud Computing: A Match Made in Heaven The cloud is accelerating OSS adoption. Cloud-native technologies like Kubernetes [https://kubernetes.io/] and Istio [https://istio.io/], both open-source projects, are revolutionizing how applications are built and deployed across cloud platforms.
  • Get a specific apiVersion manifest from k8s
    1 project | dev.to | 19 Mar 2024
    If you do kubectl explain deployment than (surprise!) you'll get a description for extensions/v1beta1. Because kubectl explain works the same way, just like kubectl get:
  • Open source at Fastly is getting opener
    10 projects | dev.to | 15 Mar 2024
    Through the Fast Forward program, we give free services and support to open source projects and the nonprofits that support them. We support many of the world’s top programming languages (like Python, Rust, Ruby, and the wonderful Scratch), foundational technologies (cURL, the Linux kernel, Kubernetes, OpenStreetMap), and projects that make the internet better and more fun for everyone (Inkscape, Mastodon, Electronic Frontier Foundation, Terms of Service; Didn’t Read).
  • Experience Continuous Integration with Jenkins | Ansible | Artifactory | SonarQube | PHP
    8 projects | dev.to | 24 Feb 2024
    In this project, you will understand and get hands on experience around the entire concept around CI/CD from applications perspective. To fully gain real expertise around this idea, it is best to see it in action across different programming languages and from the platform perspective too. From the application perspective, we will be focusing on PHP here; there are more projects ahead that are based on Java, Node.js, .Net and Python. By the time you start working on Terraform, Docker and Kubernetes projects, you will get to see the platform perspective of CI/CD in action.
  • The 2024 Web Hosting Report
    37 projects | dev.to | 20 Feb 2024
    The single most important development in hosting since the invention of EC2 is defined by its own 3-letter acronym: k8s. Kubernetes has won the “container orchestrator” space, becoming the default way that teams across industries are managing their compute nodes and scheduling their workloads, from data pipelines to web services.

What are some alternatives?

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

kubebuilder - Kubebuilder - SDK for building Kubernetes APIs using CRDs

Apache ZooKeeper - Apache ZooKeeper

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

bosun - Time Series Alerting Framework

kustomize - Customization of kubernetes YAML configurations

Rundeck - Enable Self-Service Operations: Give specific users access to your existing tools, services, and scripts

celery - Distributed Task Queue (development branch)

kine - Run Kubernetes on MySQL, Postgres, sqlite, dqlite, not etcd.

apimachinery

BOSH - Cloud Foundry BOSH is an open source tool chain for release engineering, deployment and lifecycle management of large scale distributed services.

k3s - Lightweight Kubernetes

Juju - Orchestration engine that enables the deployment, integration and lifecycle management of applications at any scale, on any infrastructure (Kubernetes or otherwise).