aws-iam-authenticator VS client-go

Compare aws-iam-authenticator vs client-go and see what are their differences.

aws-iam-authenticator

A tool to use AWS IAM credentials to authenticate to a Kubernetes cluster (by kubernetes-sigs)

client-go

Go client for Kubernetes. (by kubernetes)
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
aws-iam-authenticator client-go
9 38
2,144 8,632
0.8% 1.0%
8.2 9.2
8 days ago 3 days 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.

aws-iam-authenticator

Posts with mentions or reviews of aws-iam-authenticator. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-02-04.
  • A Step-by-Step Guide to Easily Deploying EKS Infrastructure and Applications Using Terraform
    2 projects | dev.to | 4 Feb 2024
    curl -Lo aws-iam-authenticator https://github.com/kubernetes-sigs/aws-iam-authenticator/releases/download/v0.5.9/aws-iam-authenticator_0.5.9_linux_amd64 chmod +x ./aws-iam-authenticator mkdir -p $HOME/bin && cp ./aws-iam-authenticator $HOME/bin/aws-iam-authenticator && export PATH=$PATH:$HOME/bin echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
  • Ask r/kubernetes: What are you working on this week?
    2 projects | /r/kubernetes | 31 Oct 2022
    I will be setting up vcluster to work with aws-iam-authenticator. This should work just by following the readme, so I'll be spending extra time automating the setup.
  • Using client-go to `kubectl apply` against the Kubernetes API directly with multiple types in a single YAML file
    6 projects | /r/codehunter | 14 Aug 2022
    Edit: Because I need to do this for more than one cluster and am creating clusters programmatically (AWS EKS API + CloudFormation/eksctl), I would like to minimize the overhead of creating ServiceAccounts across many cluster contexts, across many AWS accounts. Ideally, the only authentication step involved in creating my clientset is using aws-iam-authenticator to get a token using cluster data (name, region, CA cert, etc). There hasn't been a release of aws-iam-authenticator for a while, but the contents of master allow for the use of a third-party role cross-account role and external ID to be passed. IMO, this is cleaner than using a ServiceAccount (and IRSA) because there are other AWS services the application (the backend API which creates and applies add-ons to these clusters) needs to interact with.
  • Five Dex Alternatives for Kubernetes Authentication
    6 projects | dev.to | 16 Jun 2022
    Access to Kubernetes clusters in Amazon EKS is controlled by the AWS IAM Authenticator for Kubernetes. The authenticator runs on the EKS control plane and depends on the aws-auth ConfigMap for configuration settings. Every time you use kubectl to perform actions on the EKS cluster, the AWS IAM Authenticator generates an STS token (AWS Security Token Service). Kubernetes uses the IAM authenticator service to verify the identity of users specified in this security token.
  • Launch HN: Infra (YC W21) – Open-source access management for Kubernetes
    4 projects | news.ycombinator.com | 17 May 2022
    As someone who is a big fan of Teleport, sorry, I just don't get it.

    > Teleport doesn't provide identity provider integrations beyond GitHub (e.g. Okta) in their open source project

    Right, and if you're a small team (5-10 people, like you're targeting) you don't really need SSO on the infra layer. It's a nice to have, it's best practice, but the truth is, by the time you really need it (enough engineers that account management is a pain), you typically have the budget for an Enterprise license.

    > They have a different architecture that involves deploying a centralized proxy service (whereas Infra verifies credentials at the destination infrastructure vs at a central proxy).

    So anyway you need to deploy something central to issue certificates. And anyway, if, to quote you, "We plan to make money by running a managed service version of Infra so teams don’t need to host and upgrade Infra manually.", isn't that the central proxy service? Yet the open-source version avoids it somehow?

    > We plan to make money by running a managed service version of Infra so teams don’t need to host and upgrade Infra manually

    So you want to sell to teams that a) are too small to afford the license for a product like Teleport Enterprise, b) have enough money that they can afford a premium product above and beyond the free offering provided by their Kubernetes vendor, like https://github.com/kubernetes-sigs/aws-iam-authenticator (for EKS), c) are willing to install and maintain another agent on their cluster (infra), but aren't willing to install and maintain the central proxy point?

    > we've designed Infra around an extensible REST API from the start whereas Teleport uses GRPC.

    This isn't really important from a product perspective. For what it's worth, Teleport started with a REST API; they moved to gRPC because, if I recall correctly, gRPC helped them scale to support larger infrastructure better.

    If you're launching a competing product to Teleport, which is now by far the most mature product in the space, then currently, at least from where I'm sitting, you aren't offering sufficient added value compared to the incumbent offerings, which also include CloudFlare Access, Checkpoint Harmony Connect SASE, Hashicorp Boundary (their offerings aren't quite Kubernetes native, but it's the same idea)...

  • Kubernetes Multi-Cluster Part 3: Authentication and Access Control
    4 projects | dev.to | 9 May 2022
    If you’re looking for a cloud provider that caters to identity and access management, then tools like aws-iam-authenticator (AWS) and Anthos Identity Service (Google) are good places to start.
  • Kubernetes Cluster Authentication using AWS IAM
    1 project | dev.to | 9 Feb 2022
    AWS IAM Authenticator.
  • EKS, grupos IAM, "dono do cluster" e system:masters
    2 projects | dev.to | 2 Feb 2022
  • EKS Auth Deep Dive
    1 project | dev.to | 17 Sep 2021
    aws-auth configmap is based on aws-iam-authenticator and has several configuration options:

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).

What are some alternatives?

When comparing aws-iam-authenticator and client-go you can also consider the following projects:

aws-vault - A vault for securely storing and accessing AWS credentials in development environments

kubebuilder - Kubebuilder - SDK for building Kubernetes APIs using CRDs

dex - OpenID Connect (OIDC) identity and OAuth 2.0 provider with pluggable connectors

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

iam-policy-json-to-terraform - Small tool to convert an IAM Policy in JSON format into a Terraform aws_iam_policy_document

kustomize - Customization of kubernetes YAML configurations

aws-ebs-csi-driver - CSI driver for Amazon EBS https://aws.amazon.com/ebs/

celery - Distributed Task Queue (development branch)

aws-efs-csi-driver - CSI Driver for Amazon EFS https://aws.amazon.com/efs/

apimachinery

audit2rbac - Autogenerate RBAC policies based on Kubernetes audit logs

k3s - Lightweight Kubernetes