52 lines
2.6 KiB
Markdown
52 lines
2.6 KiB
Markdown
|
|
This crate contains definitions of the resource types in the Kubernetes client API, auto-generated from the Kubernetes OpenAPI spec.
|
||
|
|
|
||
|
|
[crates.io](https://crates.io/crates/k8s-openapi)
|
||
|
|
|
||
|
|
[Documentation](https://arnavion.github.io/k8s-openapi/)
|
||
|
|
|
||
|
|
[Changelog](https://github.com/Arnavion/k8s-openapi/blob/master/CHANGELOG.md)
|
||
|
|
|
||
|
|
|
||
|
|
This crate is *not* generated using Swagger or the OpenAPI Generator directly, as clients generated by [the common client generator](https://github.com/kubernetes-client/gen) are. This gives this crate a few important advantages.
|
||
|
|
|
||
|
|
|
||
|
|
### Works around bugs in the upstream OpenAPI spec
|
||
|
|
|
||
|
|
The upstream OpenAPI spec is not written by hand; it's itself generated from the API server's Go code. As such, the spec makes mistakes when trying to convert the representations of Go types to OpenAPI, such as incorrectly representing the `JSON` type used in CRD validation, and incorrectly representing the type of objects inside a `WatchEvent`. A client generated naively from the spec inherits all these mistakes, and it is hard for such a client to fix them in "post".
|
||
|
|
|
||
|
|
Since this crate uses a custom code generator, it is able to work around these mistakes and emit correct bindings. See the list of fixes [here](https://github.com/Arnavion/k8s-openapi/blob/master/k8s-openapi-codegen/src/fixups/upstream_bugs.rs) and the breakdown of fixes applied to each Kubernetes version [here.](https://github.com/Arnavion/k8s-openapi/blob/master/k8s-openapi-codegen/src/supported_version.rs)
|
||
|
|
|
||
|
|
|
||
|
|
### Supports more versions of Kubernetes
|
||
|
|
|
||
|
|
Official clients tend to support only the three latest versions of Kubernetes. This crate supports a few more.
|
||
|
|
|
||
|
|
As mentioned above, the upstream OpenAPI spec contains mistakes. When upstream fixes these mistakes, it usually does not backport them to older versions (not even to *supported* older versions). This crate does backport those fixes if they're applicable.
|
||
|
|
|
||
|
|
|
||
|
|
# License
|
||
|
|
|
||
|
|
```
|
||
|
|
k8s-openapi
|
||
|
|
|
||
|
|
https://github.com/Arnavion/k8s-openapi
|
||
|
|
|
||
|
|
Copyright 2018 Arnav Singh
|
||
|
|
|
||
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
|
you may not use this file except in compliance with the License.
|
||
|
|
You may obtain a copy of the License at
|
||
|
|
|
||
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
||
|
|
|
||
|
|
Unless required by applicable law or agreed to in writing, software
|
||
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
|
See the License for the specific language governing permissions and
|
||
|
|
limitations under the License.
|
||
|
|
```
|
||
|
|
|
||
|
|
The OpenAPI spec that these bindings are generated from is sourced from the
|
||
|
|
Kubernetes repository https://github.com/kubernetes/kubernetes which also uses
|
||
|
|
the Apache-2.0 license.
|