diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e556dd2..667bfacd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,187 @@ https://github.com/kubernetes/test-infra/issues/5843. Changes in `k8s.io/api` and `k8s.io/apimachinery` are mentioned here because `k8s.io/client-go` depends on them. +# v9.0.0 + +**Breaking Changes:** + +* client-go now supports additional non-alpha-numeric characters in UserInfo +"extra" data keys. It should be updated in order to properly support extra +data containing "/" characters or other characters disallowed in HTTP headers. +Old clients sending keys which were `%`-escaped by the user will have their +values unescaped by new API servers. +([#65799](https://github.com/kubernetes/kubernetes/pull/65799)) + +* `apimachinery/pkg/watch.Until` has been moved to +`client-go/tools/watch.UntilWithoutRetry`. While switching please consider +using the new `client-go/tools/watch.UntilWithSync` or `client-go/tools/watch.Until`. +([#66906](https://github.com/kubernetes/kubernetes/pull/66906)) + +* [k8s.io/apimachinery] `Unstructured` metadata accessors now respect omitempty semantics +i.e. a field having zero value will now be removed from the unstructured metadata map. +([#67635](https://github.com/kubernetes/kubernetes/pull/67635)) + +* [k8s.io/apimachinery] The `ObjectConvertor` interface is now changed such that +`ConvertFieldLabel` func takes GroupVersionKind as an argument instead of just +version and kind. ([#65780](https://github.com/kubernetes/kubernetes/pull/65780)) + +* [k8s.io/apimachinery] componentconfig `ClientConnectionConfiguration` is +moved to `k8s.io/apimachinery/pkg/apis/config`. +([#66058](https://github.com/kubernetes/kubernetes/pull/66058)) + +* [k8s.io/apimachinery] Renamed ` KubeConfigFile` to `Kubeconfig` in +`ClientConnectionConfiguration`. +([#67149](https://github.com/kubernetes/kubernetes/pull/67149)) + +* [k8s.io/apimachinery] JSON patch no longer supports `int`. +([#63522](https://github.com/kubernetes/kubernetes/pull/63522)) + +**New Features:** + +* Add ability to cancel leader election. +This also proves useful in integration tests where the whole app is started and +stopped in each test. ([#57932](https://github.com/kubernetes/kubernetes/pull/57932)) + +* An example showing how to use fake clients in tests is added. +([#65291](https://github.com/kubernetes/kubernetes/pull/65291)) + +* [k8s.io/apimachinery] Create and Update now support `CreateOptions` and `UpdateOptions`. +([#65105](https://github.com/kubernetes/kubernetes/pull/65105)) + +**Bug fixes and Improvements:** + +* Decrease the amount of time it takes to modify kubeconfig +files with large amounts of contexts. +([#67093](https://github.com/kubernetes/kubernetes/pull/67093)) + +* The leader election client now renews timeout. +([#65094](https://github.com/kubernetes/kubernetes/pull/65094)) + +* Switched certificate data replacement from `REDACTED` to `DATA+OMITTED`. +([#66023](https://github.com/kubernetes/kubernetes/pull/66023)) + +* Fix listing in the fake dynamic client. +([#66078](https://github.com/kubernetes/kubernetes/pull/66078)) + +* Fix discovery so that plural names are no longer ignored if a singular name is not specified. +([#66249](https://github.com/kubernetes/kubernetes/pull/66249)) + +* Fix kubelet startup failure when using `ExecPlugin` in kubeconfig. +([#66395](https://github.com/kubernetes/kubernetes/pull/66395)) + +* Fix panic in the fake `SubjectAccessReview` client when object is nil. +([#66837](https://github.com/kubernetes/kubernetes/pull/66837)) + +* Periodically reload `InClusterConfig` token. +([#67359](https://github.com/kubernetes/kubernetes/pull/67359)) + +* [k8s.io/apimachinery] Report parsing error in json serializer. +([#63668](https://github.com/kubernetes/kubernetes/pull/63668)) + +* [k8s.io/apimachinery] The `metav1.ObjectMeta` accessor does not deepcopy +owner references anymore. In general, the accessor interface does not enforce +deepcopy nor does it forbid it (e.g. for `unstructured.Unstructured`). +([#64915](https://github.com/kubernetes/kubernetes/pull/64915)) + +* [k8s.io/apimachinery] Utility functions `SetTransportDefaults` and `DialerFor` +once again respect custom Dial functions set on transports. +([#65547](https://github.com/kubernetes/kubernetes/pull/65547)) + +* [k8s.io/apimachinery] Speed-up conversion function invocation by avoiding +`reflect.Call`. Action required: regenerated conversion with conversion-gen. +([#65771](https://github.com/kubernetes/kubernetes/pull/65771)) + +* [k8s.io/apimachinery] Establish "406 Not Acceptable" response for +unmarshable protobuf serialization error. +([#67041](https://github.com/kubernetes/kubernetes/pull/67041)) + +* [k8s.io/apimachinery] Immediately close the other side of the connection by +exiting once one side closes when proxying. +([#67288](https://github.com/kubernetes/kubernetes/pull/67288)) + + +## API changes + +**Breaking Changes:** + +* Volume dynamic provisioning scheduling has been promoted to beta. +ACTION REQUIRED: The DynamicProvisioningScheduling alpha feature gate has been removed. +The VolumeScheduling beta feature gate is still required for this feature. +([#67432](https://github.com/kubernetes/kubernetes/pull/67432)) + +* The CSI file system type is no longer defaulted to ext4. +All the production drivers listed under https://kubernetes-csi.github.io/docs/Drivers.html +were inspected and should not be impacted after this change. +If you are using a driver not in that list, +please test the drivers on an updated test cluster first. +([#65499](https://github.com/kubernetes/kubernetes/pull/65499)) + +**New Features:** + +* Support annotations for remote admission webhooks. +([#58679](https://github.com/kubernetes/kubernetes/pull/58679)) + +* Support both directory and block device for local volume +plugin `FileSystem` `VolumeMode`. +([#63011](https://github.com/kubernetes/kubernetes/pull/63011)) + +* Introduce `autoscaling/v2beta2` and `custom_metrics/v1beta2`, +which implement metric selectors for Object and Pods metrics, +as well as allowing AverageValue targets on Objects, similar to External metrics. +([#64097](https://github.com/kubernetes/kubernetes/pull/64097)) + +* Add `Lease` API in the `coordination.k8s.io` API group. +([#64246](https://github.com/kubernetes/kubernetes/pull/64246)) + +* `ProcMount` added to `SecurityContext` and `AllowedProcMounts` added to `PodSecurityPolicy` +to allow paths in the container's `/proc` to not be masked. +([#64283](https://github.com/kubernetes/kubernetes/pull/64283)) + +* Add the `AuditAnnotations` field to `ImageReviewStatus` to allow the +`ImageReview` backend to return annotations to be added to the created pod. +([#64597](https://github.com/kubernetes/kubernetes/pull/64597)) + +* SCTP is now supported as additional protocol (alpha) alongside TCP and UDP in +Pod, Service, Endpoint, and NetworkPolicy. +([#64973](https://github.com/kubernetes/kubernetes/pull/64973)) + +* The `PodShareProcessNamespace` feature to configure PID namespace sharing +within a pod has been promoted to beta. +([#66507](https://github.com/kubernetes/kubernetes/pull/66507)) + +* Add `TTLSecondsAfterFinished` to `JobSpec` for cleaning up Jobs after they finish. +([#66840](https://github.com/kubernetes/kubernetes/pull/66840)) + +* Add `DataSource` and `TypedLocalObjectReference` fields to support +restoring a volume from a volume snapshot data source. +([#67087](https://github.com/kubernetes/kubernetes/pull/67087)) + +* `RuntimeClass` is a new API resource for defining different classes of runtimes +that may be used to run containers in the cluster. +Pods can select a `RunitmeClass` to use via the `RuntimeClassName` field. +This feature is in alpha, and the `RuntimeClass` feature gate must be enabled +in order to use it. ([#67737](https://github.com/kubernetes/kubernetes/pull/67737)) + +* To address the possibility dry-run requests overwhelming admission webhooks +that rely on side effects and a reconciliation mechanism, a new field is being +added to `admissionregistration.k8s.io/v1beta1.ValidatingWebhookConfiguration` +and `admissionregistration.k8s.io/v1beta1.MutatingWebhookConfiguration` so that +webhooks can explicitly register as having dry-run support. +If a dry-run request is made on a resource that triggers a non dry-run supporting +webhook, the request will be completely rejected, with "400: Bad Request". +Additionally, a new field is being added to the +`admission.k8s.io/v1beta1.AdmissionReview` API object, exposing to webhooks +whether or not the request being reviewed is a dry-run. +([#66936](https://github.com/kubernetes/kubernetes/pull/66936)) + +**Bug fixes and Improvements:** + +* The `DisruptedPods` field in `PodDisruptionBudgetStatus` is now optional. +([#63757](https://github.com/kubernetes/kubernetes/pull/63757)) + +* `extensions/v1beta1` Deployment's `ProgressDeadlineSeconds` now defaults to `MaxInt32`. +([#66581](https://github.com/kubernetes/kubernetes/pull/66581)) + # v8.0.0 **Breaking Changes:** diff --git a/README.md b/README.md index 5f01fa18..00be3799 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Go clients for talking to a [kubernetes](http://kubernetes.io/) cluster. -We currently recommend using the v8.0.0 tag. See [INSTALL.md](/INSTALL.md) for +We currently recommend using the v9.0.0 tag. See [INSTALL.md](/INSTALL.md) for detailed installation instructions. `go get k8s.io/client-go/...` works, but will build `master`, which doesn't handle the dependencies well. @@ -91,17 +91,16 @@ We will backport bugfixes--but not new features--into older versions of #### Compatibility matrix -| | Kubernetes 1.5 | Kubernetes 1.6 | Kubernetes 1.7 | Kubernetes 1.8 | Kubernetes 1.9 | Kubernetes 1.10 | Kubernetes 1.11 | -|---------------------|----------------|----------------|----------------|----------------|----------------|-----------------|-----------------| -| client-go 1.5 | - | - | - | - | - | - | - | -| client-go 2.0 | ✓ | +- | +- | +- | +- | +- | +- | -| client-go 3.0 | +- | ✓ | - | +- | +- | +- | +- | -| client-go 4.0 | +- | +- | ✓ | +- | +- | +- | +- | -| client-go 5.0 | +- | +- | +- | ✓ | +- | +- | +- | -| client-go 6.0 | +- | +- | +- | +- | ✓ | +- | +- | -| client-go 7.0 | +- | +- | +- | +- | +- | ✓ | +- | -| client-go 8.0 | +- | +- | +- | +- | +- | +- | ✓ | -| client-go HEAD | +- | +- | +- | +- | +- | +- | +- | +| | Kubernetes 1.6 | Kubernetes 1.7 | Kubernetes 1.8 | Kubernetes 1.9 | Kubernetes 1.10 | Kubernetes 1.11 | Kubernetes 1.12 | +|---------------------|----------------|----------------|----------------|----------------|-----------------|-----------------|-----------------| +| client-go 3.0 | ✓ | - | +- | +- | +- | +- | +- | +| client-go 4.0 | +- | ✓ | +- | +- | +- | +- | +- | +| client-go 5.0 | +- | +- | ✓ | +- | +- | +- | +- | +| client-go 6.0 | +- | +- | +- | ✓ | +- | +- | +- | +| client-go 7.0 | +- | +- | +- | +- | ✓ | +- | +- | +| client-go 8.0 | +- | +- | +- | +- | +- | ✓ | +- | +| client-go 9.0 | +- | +- | +- | +- | +- | +- | ✓ | +| client-go HEAD | +- | +- | +- | +- | +- | +- | +- | Key: @@ -128,9 +127,10 @@ between client-go versions. | client-go 3.0 | Kubernetes main repo, 1.6 branch | = - | | client-go 4.0 | Kubernetes main repo, 1.7 branch | = - | | client-go 5.0 | Kubernetes main repo, 1.8 branch | = - | -| client-go 6.0 | Kubernetes main repo, 1.9 branch | ✓ | +| client-go 6.0 | Kubernetes main repo, 1.9 branch | = - | | client-go 7.0 | Kubernetes main repo, 1.10 branch | ✓ | | client-go 8.0 | Kubernetes main repo, 1.11 branch | ✓ | +| client-go 9.0 | Kubernetes main repo, 1.12 branch | ✓ | | client-go HEAD | Kubernetes main repo, master branch | ✓ | Key: