Library for writing a Kubernetes-style API server.
Go to file
Lukasz Szaszkiewicz 6b08eca4c8 etcd-client starts retrying transient errors from the etcd cluster
This PR enables unaryClientInterceptor in conjunction with Prometheus interceptor.
Previously it was simply overwritten by the Prometheus interceptor.
As a result etcd client didn't attempt to retry certain errors.

The unaryClientInterceptor is important because it knows how to retry all sorts of errors from the etcd cluster. It will make the API server more resilient to failures -  end users won't see certain errors.
The full list of retriable (codes.Unavailable) errors can be found at https://github.com/etcd-io/etcd/blob/main/api/v3rpc/rpctypes/error.go#L72

Kubernetes-commit: b67cf46cf4dad696a4ffdec4d7d2deef2e78df36
2021-09-15 16:40:44 +02:00
.github delete all duplicate empty blanks 2019-02-22 09:43:51 +08:00
pkg etcd-client starts retrying transient errors from the etcd cluster 2021-09-15 16:40:44 +02:00
plugin/pkg DelegatingAuthenticationOptions TokenReview request timeout 2021-04-09 13:20:51 +02:00
.import-restrictions convert .import-restrictions to yaml 2020-04-22 15:41:00 -07:00
CONTRIBUTING.md Update deprecated links 2019-02-04 13:28:31 -05:00
LICENSE Add README and LICENSE to staging repos 2017-10-23 16:39:02 +05:30
OWNERS apiserver: remove inactive members from OWNERS 2020-08-10 15:07:34 +05:30
README.md delete all duplicate empty blanks 2019-02-22 09:43:51 +08:00
SECURITY_CONTACTS update security contacts for apimachinery repos 2020-07-02 16:00:53 -04:00
code-of-conduct.md Add code-of-conduct.md to staging repos 2017-12-20 15:21:56 -05:00
go.mod Merge pull request #108666 from cyclinder/update_go_mod_for_1.21 2022-03-28 17:32:15 +00:00
go.sum Merge pull request #108666 from cyclinder/update_go_mod_for_1.21 2022-03-28 17:32:15 +00:00

README.md

apiserver

Generic library for building a Kubernetes aggregated API server.

Purpose

This library contains code to create Kubernetes aggregation server complete with delegated authentication and authorization, kubectl compatible discovery information, optional admission chain, and versioned types. It's first consumers are k8s.io/kubernetes, k8s.io/kube-aggregator, and github.com/kubernetes-incubator/service-catalog.

Compatibility

There are NO compatibility guarantees for this repository, yet. It is in direct support of Kubernetes, so branches will track Kubernetes and be compatible with that repo. As we more cleanly separate the layers, we will review the compatibility guarantee. We have a goal to make this easier to use in the future.

Where does it come from?

apiserver is synced from https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apiserver. Code changes are made in that location, merged into k8s.io/kubernetes and later synced here.

Things you should NOT do

  1. Directly modify any files under pkg in this repo. Those are driven from k8s.io/kubernetes/staging/src/k8s.io/apiserver.
  2. Expect compatibility. This repo is changing quickly in direct support of Kubernetes and the API isn't yet stable enough for API guarantees.