Currently type references for non-local names are output as relative types which is subject to the resolution rules as defined at https://protobuf.com/docs/language-spec#reference-resolution This works fine within the k8s.io namespace where no subpackages are named k8s, but other users of go-to-protobuf likely have k8s in their package name. This causes conflicts in the search resolution when executing `go-to-protobuf`: ``` company.example.com/k8s/custom/pkg/apis/custom.k8s.example.com/v1/generated.proto:64:12: "k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta" is resolved to "company.example.com.k8s.custom.pkg.apis.custom.k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta", which is not defined. The innermost scope is searched first in name resolution. Consider using a leading '.'(i.e., ".k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta") to start from the outermost scope. ``` To avoid this we can output fully qualified type references using a preceding dot (.) This results in a change for k8s generated.proto files, but the effect is a noop. Fixes kubernetes/code-generator#147 Signed-off-by: Andrew DeMaria <ademaria@cloudflare.com> Kubernetes-commit: 9edf1fc51c56d565348c48f3765cf094518ba7ed |
||
---|---|---|
.github | ||
pkg | ||
plugin/pkg | ||
.import-restrictions | ||
CONTRIBUTING.md | ||
LICENSE | ||
OWNERS | ||
README.md | ||
SECURITY_CONTACTS | ||
code-of-conduct.md | ||
doc.go | ||
go.mod | ||
go.sum |
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
- Directly modify any files under
pkg
in this repo. Those are driven fromk8s.io/kubernetes/staging/src/k8s.io/apiserver
. - Expect compatibility. This repo is changing quickly in direct support of Kubernetes and the API isn't yet stable enough for API guarantees.