k8s.io/client-go@v0.31.1/CHANGELOG.md (about) 1 TODO: This document was manually maintained so might be incomplete. The 2 automation effort is tracked in 3 https://github.com/kubernetes/test-infra/issues/5843. 4 5 Changes in `k8s.io/api` and `k8s.io/apimachinery` are mentioned here 6 because `k8s.io/client-go` depends on them. 7 8 # v10.0.0 9 10 **Breaking Changes:** 11 12 * Action required: client-go will no longer have bootstrap 13 (`k8s.io/client-go/tools/bootstrap`) related code. Any reference to it will 14 break. Please redirect all references to `k8s.io/bootstrap` instead. 15 ([#67356](https://github.com/kubernetes/kubernetes/pull/67356)) 16 17 * The methods `NewSelfSignedCACert` and `NewSignedCert` now use `crypto.Signer` 18 interface instead of `rsa.PrivateKey` for certificate creation. This is done 19 to allow different kind of private keys (for example: ecdsa). 20 ([#69329](https://github.com/kubernetes/kubernetes/pull/69329)) 21 22 * `GetScale` and `UpdateScale` methods have been added for `apps/v1` clients 23 and with this, no-verb scale clients have been removed. 24 ([#70437](https://github.com/kubernetes/kubernetes/pull/70437)) 25 26 * `k8s.io/client-go/util/cert/triple` package has been removed. 27 ([#70966](https://github.com/kubernetes/kubernetes/pull/70966)) 28 29 **New Features:** 30 31 * `unfinished_work_microseconds` is added to the workqueue metrics. 32 It can be used to detect stuck worker threads (kube-controller-manager runs many workqueues.). 33 ([#70884](https://github.com/kubernetes/kubernetes/pull/70884)) 34 35 * A method `GetPorts` is added to expose the ports that were forwarded. 36 This can be used to retrieve the locally-bound port in cases where the input was port 0. 37 ([#67513](https://github.com/kubernetes/kubernetes/pull/67513)) 38 39 * Dynamic listers and informers, that work with `runtime.Unstructured` objects, 40 are added. These are useful for writing generic, non-generated controllers. 41 ([68748](https://github.com/kubernetes/kubernetes/pull/68748)) 42 43 * The dynamic fake client now supports JSONPatch. 44 ([#69330](https://github.com/kubernetes/kubernetes/pull/69330)) 45 46 * The `GetBinding` method is added for pods in the fake client. 47 ([#69412](https://github.com/kubernetes/kubernetes/pull/69412)) 48 49 **Bug fixes and Improvements:** 50 51 * The `apiVersion` and action name values for fake evictions are now set. 52 ([#69035](https://github.com/kubernetes/kubernetes/pull/69035)) 53 54 * PEM files containing both TLS certificate and key can now be parsed in 55 arbitrary order. Previously key was always required to be first. 56 ([#69536](https://github.com/kubernetes/kubernetes/pull/69536)) 57 58 * Go clients created from a kubeconfig that specifies a `TokenFile` now 59 periodically reload the token from the specified file. 60 ([#70606](https://github.com/kubernetes/kubernetes/pull/70606)) 61 62 * It is now ensured that oversized data frames are not written to 63 spdystreams in `remotecommand.NewSPDYExecutor`. 64 ([#70999](https://github.com/kubernetes/kubernetes/pull/70999)) 65 66 * A panic occuring on calling `scheme.Convert` is fixed by populating the fake 67 dynamic client scheme. ([#69125](https://github.com/kubernetes/kubernetes/pull/69125)) 68 69 * Add step to correctly setup permissions for the in-cluster-client-configuration example. 70 ([#69232](https://github.com/kubernetes/kubernetes/pull/69232)) 71 72 * The function `Parallelize` is deprecated. Use `ParallelizeUntil` instead. 73 ([#68403](https://github.com/kubernetes/kubernetes/pull/68403)) 74 75 * [k8s.io/apimachinery] Restrict redirect following from the apiserver to 76 same-host redirects, and ignore redirects in some cases. 77 ([#66516](https://github.com/kubernetes/kubernetes/pull/66516)) 78 79 ## API changes 80 81 **New Features:** 82 83 * GlusterFS PersistentVolumes sources can now reference endpoints in any 84 namespace using the `spec.glusterfs.endpointsNamespace` field. 85 Ensure all kubelets are upgraded to 1.13+ before using this capability. 86 ([#60195](https://github.com/kubernetes/kubernetes/pull/60195)) 87 88 * The [dynamic audit configuration](https://github.com/kubernetes/community/blob/master/keps/sig-auth/0014-dynamic-audit-configuration.md) 89 API is added. ([#67547](https://github.com/kubernetes/kubernetes/pull/67547)) 90 91 * A new field `EnableServiceLinks` is added to the `PodSpec` to indicate whether 92 information about services should be injected into pod's environment variables. 93 ([#68754](https://github.com/kubernetes/kubernetes/pull/68754)) 94 95 * `CSIPersistentVolume` feature, i.e. `PersistentVolumes` with 96 `CSIPersistentVolumeSource`, is GA. `CSIPersistentVolume` feature gate is now 97 deprecated and will be removed according to deprecation policy. 98 ([#69929](https://github.com/kubernetes/kubernetes/pull/69929)) 99 100 * Raw block volume support is promoted to beta, and enabled by default. 101 This is accessible via the `volumeDevices` container field in pod specs, 102 and the `volumeMode` field in persistent volume and persistent volume claims definitions. 103 ([#71167](https://github.com/kubernetes/kubernetes/pull/71167)) 104 105 **Bug fixes and Improvements:** 106 107 * The default value of extensions/v1beta1 Deployment's `RevisionHistoryLimit` 108 is set to `MaxInt32`. ([#66605](https://github.com/kubernetes/kubernetes/pull/66605)) 109 110 * `procMount` field is no longer incorrectly marked as required in openapi schema. 111 ([#69694](https://github.com/kubernetes/kubernetes/pull/69694)) 112 113 * The caBundle and service fields in admission webhook API objects now correctly 114 indicate they are optional. ([#70138](https://github.com/kubernetes/kubernetes/pull/70138)) 115 116 # v9.0.0 117 118 **Breaking Changes:** 119 120 * client-go now supports additional non-alpha-numeric characters in UserInfo 121 "extra" data keys. It should be updated in order to properly support extra 122 data containing "/" characters or other characters disallowed in HTTP headers. 123 Old clients sending keys which were `%`-escaped by the user will have their 124 values unescaped by new API servers. 125 ([#65799](https://github.com/kubernetes/kubernetes/pull/65799)) 126 127 * `apimachinery/pkg/watch.Until` has been moved to 128 `client-go/tools/watch.UntilWithoutRetry`. While switching please consider 129 using the new `client-go/tools/watch.UntilWithSync` or `client-go/tools/watch.Until`. 130 ([#66906](https://github.com/kubernetes/kubernetes/pull/66906)) 131 132 * [k8s.io/apimachinery] `Unstructured` metadata accessors now respect omitempty semantics 133 i.e. a field having zero value will now be removed from the unstructured metadata map. 134 ([#67635](https://github.com/kubernetes/kubernetes/pull/67635)) 135 136 * [k8s.io/apimachinery] The `ObjectConvertor` interface is now changed such that 137 `ConvertFieldLabel` func takes GroupVersionKind as an argument instead of just 138 version and kind. ([#65780](https://github.com/kubernetes/kubernetes/pull/65780)) 139 140 * [k8s.io/apimachinery] componentconfig `ClientConnectionConfiguration` is 141 moved to `k8s.io/apimachinery/pkg/apis/config`. 142 ([#66058](https://github.com/kubernetes/kubernetes/pull/66058)) 143 144 * [k8s.io/apimachinery] Renamed ` KubeConfigFile` to `Kubeconfig` in 145 `ClientConnectionConfiguration`. 146 ([#67149](https://github.com/kubernetes/kubernetes/pull/67149)) 147 148 * [k8s.io/apimachinery] JSON patch no longer supports `int`. 149 ([#63522](https://github.com/kubernetes/kubernetes/pull/63522)) 150 151 **New Features:** 152 153 * Add ability to cancel leader election. 154 This also proves useful in integration tests where the whole app is started and 155 stopped in each test. ([#57932](https://github.com/kubernetes/kubernetes/pull/57932)) 156 157 * An example showing how to use fake clients in tests is added. 158 ([#65291](https://github.com/kubernetes/kubernetes/pull/65291)) 159 160 * [k8s.io/apimachinery] Create and Update now support `CreateOptions` and `UpdateOptions`. 161 ([#65105](https://github.com/kubernetes/kubernetes/pull/65105)) 162 163 **Bug fixes and Improvements:** 164 165 * Decrease the amount of time it takes to modify kubeconfig 166 files with large amounts of contexts. 167 ([#67093](https://github.com/kubernetes/kubernetes/pull/67093)) 168 169 * The leader election client now renews timeout. 170 ([#65094](https://github.com/kubernetes/kubernetes/pull/65094)) 171 172 * Switched certificate data replacement from `REDACTED` to `DATA+OMITTED`. 173 ([#66023](https://github.com/kubernetes/kubernetes/pull/66023)) 174 175 * Fix listing in the fake dynamic client. 176 ([#66078](https://github.com/kubernetes/kubernetes/pull/66078)) 177 178 * Fix discovery so that plural names are no longer ignored if a singular name is not specified. 179 ([#66249](https://github.com/kubernetes/kubernetes/pull/66249)) 180 181 * Fix kubelet startup failure when using `ExecPlugin` in kubeconfig. 182 ([#66395](https://github.com/kubernetes/kubernetes/pull/66395)) 183 184 * Fix panic in the fake `SubjectAccessReview` client when object is nil. 185 ([#66837](https://github.com/kubernetes/kubernetes/pull/66837)) 186 187 * Periodically reload `InClusterConfig` token. 188 ([#67359](https://github.com/kubernetes/kubernetes/pull/67359)) 189 190 * [k8s.io/apimachinery] Report parsing error in json serializer. 191 ([#63668](https://github.com/kubernetes/kubernetes/pull/63668)) 192 193 * [k8s.io/apimachinery] The `metav1.ObjectMeta` accessor does not deepcopy 194 owner references anymore. In general, the accessor interface does not enforce 195 deepcopy nor does it forbid it (e.g. for `unstructured.Unstructured`). 196 ([#64915](https://github.com/kubernetes/kubernetes/pull/64915)) 197 198 * [k8s.io/apimachinery] Utility functions `SetTransportDefaults` and `DialerFor` 199 once again respect custom Dial functions set on transports. 200 ([#65547](https://github.com/kubernetes/kubernetes/pull/65547)) 201 202 * [k8s.io/apimachinery] Speed-up conversion function invocation by avoiding 203 `reflect.Call`. Action required: regenerated conversion with conversion-gen. 204 ([#65771](https://github.com/kubernetes/kubernetes/pull/65771)) 205 206 * [k8s.io/apimachinery] Establish "406 Not Acceptable" response for 207 unmarshable protobuf serialization error. 208 ([#67041](https://github.com/kubernetes/kubernetes/pull/67041)) 209 210 * [k8s.io/apimachinery] Immediately close the other side of the connection by 211 exiting once one side closes when proxying. 212 ([#67288](https://github.com/kubernetes/kubernetes/pull/67288)) 213 214 215 ## API changes 216 217 **Breaking Changes:** 218 219 * Volume dynamic provisioning scheduling has been promoted to beta. 220 ACTION REQUIRED: The DynamicProvisioningScheduling alpha feature gate has been removed. 221 The VolumeScheduling beta feature gate is still required for this feature. 222 ([#67432](https://github.com/kubernetes/kubernetes/pull/67432)) 223 224 * The CSI file system type is no longer defaulted to ext4. 225 All the production drivers listed under https://kubernetes-csi.github.io/docs/drivers.html 226 were inspected and should not be impacted after this change. 227 If you are using a driver not in that list, 228 please test the drivers on an updated test cluster first. 229 ([#65499](https://github.com/kubernetes/kubernetes/pull/65499)) 230 231 **New Features:** 232 233 * Support annotations for remote admission webhooks. 234 ([#58679](https://github.com/kubernetes/kubernetes/pull/58679)) 235 236 * Support both directory and block device for local volume 237 plugin `FileSystem` `VolumeMode`. 238 ([#63011](https://github.com/kubernetes/kubernetes/pull/63011)) 239 240 * Introduce `autoscaling/v2beta2` and `custom_metrics/v1beta2`, 241 which implement metric selectors for Object and Pods metrics, 242 as well as allowing AverageValue targets on Objects, similar to External metrics. 243 ([#64097](https://github.com/kubernetes/kubernetes/pull/64097)) 244 245 * Add `Lease` API in the `coordination.k8s.io` API group. 246 ([#64246](https://github.com/kubernetes/kubernetes/pull/64246)) 247 248 * `ProcMount` added to `SecurityContext` and `AllowedProcMounts` added to `PodSecurityPolicy` 249 to allow paths in the container's `/proc` to not be masked. 250 ([#64283](https://github.com/kubernetes/kubernetes/pull/64283)) 251 252 * Add the `AuditAnnotations` field to `ImageReviewStatus` to allow the 253 `ImageReview` backend to return annotations to be added to the created pod. 254 ([#64597](https://github.com/kubernetes/kubernetes/pull/64597)) 255 256 * SCTP is now supported as additional protocol (alpha) alongside TCP and UDP in 257 Pod, Service, Endpoint, and NetworkPolicy. 258 ([#64973](https://github.com/kubernetes/kubernetes/pull/64973)) 259 260 * The `PodShareProcessNamespace` feature to configure PID namespace sharing 261 within a pod has been promoted to beta. 262 ([#66507](https://github.com/kubernetes/kubernetes/pull/66507)) 263 264 * Add `TTLSecondsAfterFinished` to `JobSpec` for cleaning up Jobs after they finish. 265 ([#66840](https://github.com/kubernetes/kubernetes/pull/66840)) 266 267 * Add `DataSource` and `TypedLocalObjectReference` fields to support 268 restoring a volume from a volume snapshot data source. 269 ([#67087](https://github.com/kubernetes/kubernetes/pull/67087)) 270 271 * `RuntimeClass` is a new API resource for defining different classes of runtimes 272 that may be used to run containers in the cluster. 273 Pods can select a `RunitmeClass` to use via the `RuntimeClassName` field. 274 This feature is in alpha, and the `RuntimeClass` feature gate must be enabled 275 in order to use it. ([#67737](https://github.com/kubernetes/kubernetes/pull/67737)) 276 277 * To address the possibility dry-run requests overwhelming admission webhooks 278 that rely on side effects and a reconciliation mechanism, a new field is being 279 added to `admissionregistration.k8s.io/v1beta1.ValidatingWebhookConfiguration` 280 and `admissionregistration.k8s.io/v1beta1.MutatingWebhookConfiguration` so that 281 webhooks can explicitly register as having dry-run support. 282 If a dry-run request is made on a resource that triggers a non dry-run supporting 283 webhook, the request will be completely rejected, with "400: Bad Request". 284 Additionally, a new field is being added to the 285 `admission.k8s.io/v1beta1.AdmissionReview` API object, exposing to webhooks 286 whether or not the request being reviewed is a dry-run. 287 ([#66936](https://github.com/kubernetes/kubernetes/pull/66936)) 288 289 **Bug fixes and Improvements:** 290 291 * The `DisruptedPods` field in `PodDisruptionBudgetStatus` is now optional. 292 ([#63757](https://github.com/kubernetes/kubernetes/pull/63757)) 293 294 * `extensions/v1beta1` Deployment's `ProgressDeadlineSeconds` now defaults to `MaxInt32`. 295 ([#66581](https://github.com/kubernetes/kubernetes/pull/66581)) 296 297 # v8.0.0 298 299 **Breaking Changes:** 300 301 * `KUBE_API_VERSIONS` has been removed. 302 303 * [https://github.com/kubernetes/kubernetes/pull/63165](https://github.com/kubernetes/kubernetes/pull/63165) 304 305 * The client-go/discovery `RESTMapper` has been moved to client-go/restmapper. 306 307 * [https://github.com/kubernetes/kubernetes/pull/63507](https://github.com/kubernetes/kubernetes/pull/63507) 308 309 * `CachedDiscoveryClient` has been moved from kubectl to client-go. 310 311 * [https://github.com/kubernetes/kubernetes/pull/63550](https://github.com/kubernetes/kubernetes/pull/63550) 312 313 * The `EventRecorder` interface is changed to include an `AnnotatedEventf` method, which can add annotations to an event. 314 315 * [https://github.com/kubernetes/kubernetes/pull/64213](https://github.com/kubernetes/kubernetes/pull/64213) 316 317 * [k8s.io/apimachinery] The deprecated `RepairMalformedUpdates` flag has been removed. 318 319 * [https://github.com/kubernetes/kubernetes/pull/61455](https://github.com/kubernetes/kubernetes/pull/61455) 320 321 **New Features:** 322 323 * A new easy-to-use dynamic client is added and the old dynamic client is now deprecated. 324 325 * [https://github.com/kubernetes/kubernetes/pull/62913](https://github.com/kubernetes/kubernetes/pull/62913) 326 327 * client-go and kubectl now detect and report an error on duplicated name for user, cluster and context, while loading the kubeconfig. 328 329 * [https://github.com/kubernetes/kubernetes/pull/60464](https://github.com/kubernetes/kubernetes/pull/60464) 330 331 * The informer code-generator now allows specifying a custom resync period for certain informer types and uses the default resync period if none is specified. 332 333 * [https://github.com/kubernetes/kubernetes/pull/61400](https://github.com/kubernetes/kubernetes/pull/61400) 334 335 * Exec authenticator plugin now supports TLS client certificates. 336 337 * [https://github.com/kubernetes/kubernetes/pull/61803](https://github.com/kubernetes/kubernetes/pull/61803) 338 339 * The discovery client now has a default request timeout of 32 seconds. 340 341 * [https://github.com/kubernetes/kubernetes/pull/62733](https://github.com/kubernetes/kubernetes/pull/62733) 342 343 * The OpenStack auth config from is now read from the client config. If the client config is not available, it falls back to reading from the environment variables. 344 345 * [https://github.com/kubernetes/kubernetes/pull/60200](https://github.com/kubernetes/kubernetes/pull/60200) 346 347 * The in-tree support for openstack credentials is now deprecated. Please use the `client-keystone-auth` from the cloud-provider-openstack repository. Details on how to use this new capability is documented [here](https://github.com/kubernetes/cloud-provider-openstack/blob/master/docs/using-client-keystone-auth.md) 348 349 * [https://github.com/kubernetes/kubernetes/pull/64346](https://github.com/kubernetes/kubernetes/pull/64346) 350 351 **Bug fixes and Improvements:** 352 353 * 406 mime-type errors are now tolerated while attempting to load new openapi schema. This improves compatibility with older servers when creating/updating API objects. 354 355 * [https://github.com/kubernetes/kubernetes/pull/61949](https://github.com/kubernetes/kubernetes/pull/61949) 356 357 * Removes the generated `DeleteCollection()` method for `Services` since the API does not support it. 358 359 * [https://github.com/kubernetes/kubernetes/pull/63861](https://github.com/kubernetes/kubernetes/pull/63861) 360 361 * Event object references with apiversion now report an apiversion, instead of just the group. 362 363 * [https://github.com/kubernetes/kubernetes/pull/63913](https://github.com/kubernetes/kubernetes/pull/63913) 364 365 [https://github.com/kubernetes/kubernetes/pull/62462](https://github.com/kubernetes/kubernetes/pull/62462) 366 367 * [k8s.io/apimachinery] `runtime.Unstructured.UnstructuredContent()` no longer mutates the source while returning the contents. 368 369 * [https://github.com/kubernetes/kubernetes/pull/62063](https://github.com/kubernetes/kubernetes/pull/62063) 370 371 * [k8s.io/apimachinery] Incomplete support for `uint64` is now removed. This fixes a panic encountered while using `DeepCopyJSON` with `uint64`. 372 373 * [https://github.com/kubernetes/kubernetes/pull/62981](https://github.com/kubernetes/kubernetes/pull/62981) 374 375 * [k8s.io/apimachinery] API server can now parse `propagationPolicy` when it sent as a query parameter sent with a delete request. 376 377 * [https://github.com/kubernetes/kubernetes/pull/63414](https://github.com/kubernetes/kubernetes/pull/63414) 378 379 * [k8s.io/apimachinery] APIServices with kube-like versions (e.g. v1, v2beta1, etc.) will be sorted appropriately within each group. 380 381 * [https://github.com/kubernetes/kubernetes/pull/64004](https://github.com/kubernetes/kubernetes/pull/64004) 382 383 * [k8s.io/apimachinery] `int64` is the only allowed integer for printers. 384 385 * [https://github.com/kubernetes/kubernetes/pull/64639](https://github.com/kubernetes/kubernetes/pull/64639) 386 387 ## API changes 388 389 **Breaking Changes:** 390 391 * Support for `alpha.kubernetes.io/nvidia-gpu` resource which was deprecated in 1.10 is removed. Please use the resource exposed by `DevicePlugins` instead (`nvidia.com/gpu`). 392 393 * [https://github.com/kubernetes/kubernetes/pull/61498](https://github.com/kubernetes/kubernetes/pull/61498) 394 395 * Alpha annotation for `PersistentVolume` node affinity has been removed. Update your `PersistentVolume`s to use the beta `PersistentVolume.nodeAffinity` field before upgrading. 396 397 * [https://github.com/kubernetes/kubernetes/pull/61816](https://github.com/kubernetes/kubernetes/pull/61816) 398 399 * `ObjectMeta ` `ListOptions` `DeleteOptions` are removed from the core api group. Please use the ones in `meta/v1` instead. 400 401 * [https://github.com/kubernetes/kubernetes/pull/61809](https://github.com/kubernetes/kubernetes/pull/61809) 402 403 * `ExternalID` in `NodeSpec` is deprecated. The externalID of the node is no longer set in the Node spec. 404 405 * [https://github.com/kubernetes/kubernetes/pull/61877](https://github.com/kubernetes/kubernetes/pull/61877) 406 407 * PSP-related types in the `extensions/v1beta1` API group are now deprecated. It is suggested to use the `policy/v1beta1` API group instead. 408 409 * [https://github.com/kubernetes/kubernetes/pull/61777](https://github.com/kubernetes/kubernetes/pull/61777) 410 411 **New Features:** 412 413 * `PodSecurityPolicy` now supports restricting hostPath volume mounts to be readOnly and under specific path prefixes. 414 415 * [https://github.com/kubernetes/kubernetes/pull/58647](https://github.com/kubernetes/kubernetes/pull/58647) 416 417 * `Node.Spec.ConfigSource.ConfigMap.KubeletConfigKey` must be specified when using dynamic Kubelet config to tell the Kubelet which key of the `ConfigMap` identifies its config file. 418 419 * [https://github.com/kubernetes/kubernetes/pull/59847](https://github.com/kubernetes/kubernetes/pull/59847) 420 421 * `serverAddressByClientCIDRs` in `meta/v1` APIGroup is now optional. 422 423 * [https://github.com/kubernetes/kubernetes/pull/61963](https://github.com/kubernetes/kubernetes/pull/61963) 424 425 * A new field `MatchFields` is added to `NodeSelectorTerm`. Currently, it only supports `metadata.name`. 426 427 * [https://github.com/kubernetes/kubernetes/pull/62002](https://github.com/kubernetes/kubernetes/pull/62002) 428 429 * The `PriorityClass` API is promoted to `scheduling.k8s.io/v1beta1`. 430 431 * [https://github.com/kubernetes/kubernetes/pull/63100](https://github.com/kubernetes/kubernetes/pull/63100) 432 433 * The status of dynamic Kubelet config is now reported via `Node.Status.Config`, rather than the `KubeletConfigOk` node condition. 434 435 * [https://github.com/kubernetes/kubernetes/pull/63314](https://github.com/kubernetes/kubernetes/pull/63314) 436 437 * The `GitRepo` volume type is deprecated. To provision a container with a git repo, mount an `EmptyDir` into an `InitContainer` that clones the repo using git, then mount the `EmptyDir` into the Pod's container. 438 439 * [https://github.com/kubernetes/kubernetes/pull/63445](https://github.com/kubernetes/kubernetes/pull/63445) 440 441 * The Sysctls experimental feature has been promoted to beta (enabled by default via the `Sysctls` feature flag). `PodSecurityPolicy` and `Pod` objects now have fields for specifying and controlling sysctls. Alpha sysctl annotations will be ignored by 1.11+ kubelets. All alpha sysctl annotations in existing deployments must be converted to API fields to be effective. 442 443 * [https://github.com/kubernetes/kubernetes/pull/63717](https://github.com/kubernetes/kubernetes/pull/63717) 444 445 * The annotation `service.alpha.kubernetes.io/tolerate-unready-endpoints` is deprecated. Users should use `Service.spec.publishNotReadyAddresses` instead. 446 447 * [https://github.com/kubernetes/kubernetes/pull/63742](https://github.com/kubernetes/kubernetes/pull/63742) 448 449 * `VerticalPodAutoscaler` has been added to `autoscaling/v1` API group. 450 451 * [https://github.com/kubernetes/kubernetes/pull/63797](https://github.com/kubernetes/kubernetes/pull/63797) 452 453 * Alpha support is added for dynamic volume limits based on node type. 454 455 * [https://github.com/kubernetes/kubernetes/pull/64154](https://github.com/kubernetes/kubernetes/pull/64154) 456 457 * `ContainersReady` condition is added to the Pod status. 458 459 * [https://github.com/kubernetes/kubernetes/pull/64646](https://github.com/kubernetes/kubernetes/pull/64646) 460 461 **Bug fixes and Improvements:** 462 463 * Default mount propagation has changed from `HostToContainer` (`rslave` in Linux terminology) to `None` (`private`) to match the behavior in 1.9 and earlier releases. `HostToContainer` as a default caused regressions in some pods. 464 465 * [https://github.com/kubernetes/kubernetes/pull/62462](https://github.com/kubernetes/kubernetes/pull/62462) 466 467 # v7.0.0 468 469 **Breaking Changes:** 470 471 * Google Cloud Service Account email addresses can now be used in RBAC Role bindings since the default scopes now include the `userinfo.email` scope. This is a breaking change if the numeric uniqueIDs of the Google service accounts were being used in RBAC role bindings. The behavior can be overridden by explicitly specifying the scope values as comma-separated string in the `users[*].config.scopes` field in the `KUBECONFIG` file. 472 473 * [https://github.com/kubernetes/kubernetes/pull/58141](https://github.com/kubernetes/kubernetes/pull/58141) 474 475 * [k8s.io/api] The `ConfigOK` node condition has been renamed to `KubeletConfigOk`. 476 477 * [https://github.com/kubernetes/kubernetes/pull/59905](https://github.com/kubernetes/kubernetes/pull/59905) 478 479 **New Features:** 480 481 * Subresource support is added to the dynamic client. 482 483 * [https://github.com/kubernetes/kubernetes/pull/56717](https://github.com/kubernetes/kubernetes/pull/56717) 484 485 * A watch method is added to the Fake Client. 486 487 * [https://github.com/kubernetes/kubernetes/pull/57504](https://github.com/kubernetes/kubernetes/pull/57504) 488 489 * `ListOptions` can be modified when creating a `ListWatch`. 490 491 * [https://github.com/kubernetes/kubernetes/pull/57508](https://github.com/kubernetes/kubernetes/pull/57508) 492 493 * A `/token` subresource for ServiceAccount is added. 494 495 * [https://github.com/kubernetes/kubernetes/pull/58111](https://github.com/kubernetes/kubernetes/pull/58111) 496 497 * If an informer delivery fails, the particular notification is skipped and continued the next time. 498 499 * [https://github.com/kubernetes/kubernetes/pull/58394](https://github.com/kubernetes/kubernetes/pull/58394) 500 501 * Certificate manager will no longer wait until the initial rotation succeeds or fails before returning from `Start()`. 502 503 * [https://github.com/kubernetes/kubernetes/pull/58930](https://github.com/kubernetes/kubernetes/pull/58930) 504 505 * [k8s.io/api] `VolumeScheduling` and `LocalPersistentVolume` features are beta and enabled by default. The PersistentVolume NodeAffinity alpha annotation is deprecated and will be removed in a future release. 506 507 * [https://github.com/kubernetes/kubernetes/pull/59391](https://github.com/kubernetes/kubernetes/pull/59391) 508 509 * [k8s.io/api] The `PodSecurityPolicy` API has been moved to the `policy/v1beta1` API group. The `PodSecurityPolicy` API in the `extensions/v1beta1` API group is deprecated and will be removed in a future release. 510 511 * [https://github.com/kubernetes/kubernetes/pull/54933](https://github.com/kubernetes/kubernetes/pull/54933) 512 513 * [k8s.io/api] ConfigMap objects now support binary data via a new `binaryData` field. 514 515 * [https://github.com/kubernetes/kubernetes/pull/57938](https://github.com/kubernetes/kubernetes/pull/57938) 516 517 * [k8s.io/api] Service account TokenRequest API is added. 518 519 * [https://github.com/kubernetes/kubernetes/pull/58027](https://github.com/kubernetes/kubernetes/pull/58027) 520 521 * [k8s.io/api] FSType is added in CSI volume source to specify filesystems. 522 523 * [https://github.com/kubernetes/kubernetes/pull/58209](https://github.com/kubernetes/kubernetes/pull/58209) 524 525 * [k8s.io/api] v1beta1 VolumeAttachment API is added. 526 527 * [https://github.com/kubernetes/kubernetes/pull/58462](https://github.com/kubernetes/kubernetes/pull/58462) 528 529 * [k8s.io/api] `v1.Pod` now has a field `ShareProcessNamespace` to configure whether a single process namespace should be shared between all containers in a pod. This feature is in alpha preview. 530 531 * [https://github.com/kubernetes/kubernetes/pull/58716](https://github.com/kubernetes/kubernetes/pull/58716) 532 533 * [k8s.io/api] Add `NominatedNodeName` field to `PodStatus`. This field is set when a pod preempts other pods on the node. 534 535 * [https://github.com/kubernetes/kubernetes/pull/58990](https://github.com/kubernetes/kubernetes/pull/58990) 536 537 * [k8s.io/api] Promote `CSIPersistentVolumeSourc`e to beta. 538 539 * [https://github.com/kubernetes/kubernetes/pull/59157](https://github.com/kubernetes/kubernetes/pull/59157) 540 541 * [k8s.io/api] Promote `DNSPolicy` and `DNSConfig` in `PodSpec` to beta. 542 543 * [https://github.com/kubernetes/kubernetes/pull/59771](https://github.com/kubernetes/kubernetes/pull/59771) 544 545 * [k8s.io/api] External metric types are added to the HPA API. 546 547 * [https://github.com/kubernetes/kubernetes/pull/60096](https://github.com/kubernetes/kubernetes/pull/60096) 548 549 * [k8s.io/apimachinery] The `meta.k8s.io/v1alpha1` objects for retrieving tabular responses from the server (`Table`) or fetching just the `ObjectMeta` for an object (as `PartialObjectMetadata`) are now beta as part of `meta.k8s.io/v1beta1`. Clients may request alternate representations of normal Kubernetes objects by passing an `Accept` header like `application/json;as=Table;g=meta.k8s.io;v=v1beta1` or `application/json;as=PartialObjectMetadata;g=meta.k8s.io;v1=v1beta1`. Older servers will ignore this representation or return an error if it is not available. Clients may request fallback to the normal object by adding a non-qualified mime-type to their `Accept` header like `application/json` - the server will then respond with either the alternate representation if it is supported or the fallback mime-type which is the normal object response. 550 551 * [https://github.com/kubernetes/kubernetes/pull/59059](https://github.com/kubernetes/kubernetes/pull/59059) 552 553 554 **Bug fixes and Improvements:** 555 556 * Port-forwarding of TCP6 ports is fixed. 557 558 * [https://github.com/kubernetes/kubernetes/pull/57457](https://github.com/kubernetes/kubernetes/pull/57457) 559 560 * A race condition in SharedInformer that could violate the sequential delivery guarantee and cause panics on shutdown is fixed. 561 562 * [https://github.com/kubernetes/kubernetes/pull/59828](https://github.com/kubernetes/kubernetes/pull/59828) 563 564 * [k8s.io/api] PersistentVolume flexVolume sources can now reference secrets in a namespace other than the PersistentVolumeClaim's namespace. 565 566 * [https://github.com/kubernetes/kubernetes/pull/56460](https://github.com/kubernetes/kubernetes/pull/56460) 567 568 * [k8s.io/apimachinery] YAMLDecoder Read can now return the number of bytes read. 569 570 * [https://github.com/kubernetes/kubernetes/pull/57000](https://github.com/kubernetes/kubernetes/pull/57000) 571 572 * [k8s.io/apimachinery] YAMLDecoder Read now tracks rest of buffer on `io.ErrShortBuffer`. 573 574 * [https://github.com/kubernetes/kubernetes/pull/58817](https://github.com/kubernetes/kubernetes/pull/58817) 575 576 * [k8s.io/apimachinery] Prompt required merge key in the error message while applying a strategic merge patch. 577 578 * [https://github.com/kubernetes/kubernetes/pull/57854](https://github.com/kubernetes/kubernetes/pull/57854) 579 580 # v6.0.0 581 582 **Breaking Changes:** 583 584 * If you upgrade your client-go libs and use the `AppsV1() or Apps()` interface, please note that the default garbage collection behavior is changed. 585 586 * [https://github.com/kubernetes/kubernetes/pull/55148](https://github.com/kubernetes/kubernetes/pull/55148) 587 588 * Swagger 1.2 retriever `DiscoveryClient.SwaggerSchema` was removed from the discovery client 589 590 * [https://github.com/kubernetes/kubernetes/pull/53441](https://github.com/kubernetes/kubernetes/pull/53441) 591 592 * Informers got a NewFilteredSharedInformerFactory to e.g. filter by namespace 593 594 * [https://github.com/kubernetes/kubernetes/pull/54660](https://github.com/kubernetes/kubernetes/pull/54660) 595 596 * [k8s.io/api] The dynamic admission webhook is split into two kinds, mutating and validating. 597 The kinds have changed completely and old code must be ported to `admissionregistration.k8s.io/v1beta1` - 598 `MutatingWebhookConfiguration` and `ValidatingWebhookConfiguration` 599 600 * [https://github.com/kubernetes/kubernetes/pull/55282](https://github.com/kubernetes/kubernetes/pull/55282) 601 602 * [k8s.io/api] Renamed `core/v1.ScaleIOVolumeSource` to `ScaleIOPersistentVolumeSource` 603 604 * [https://github.com/kubernetes/kubernetes/pull/54013](https://github.com/kubernetes/kubernetes/pull/54013) 605 606 * [k8s.io/api] Renamed `core/v1.RBDVolumeSource` to `RBDPersistentVolumeSource` 607 608 * [https://github.com/kubernetes/kubernetes/pull/54302](https://github.com/kubernetes/kubernetes/pull/54302) 609 610 * [k8s.io/api] Removed `core/v1.CreatedByAnnotation` 611 612 * [https://github.com/kubernetes/kubernetes/pull/54445](https://github.com/kubernetes/kubernetes/pull/54445) 613 614 * [k8s.io/api] Renamed `core/v1.StorageMediumHugepages` to `StorageMediumHugePages` 615 616 * [https://github.com/kubernetes/kubernetes/pull/54748](https://github.com/kubernetes/kubernetes/pull/54748) 617 618 * [k8s.io/api] `core/v1.Taint.TimeAdded` became a pointer 619 620 * [https://github.com/kubernetes/kubernetes/pull/43016](https://github.com/kubernetes/kubernetes/pull/43016) 621 622 * [k8s.io/api] `core/v1.DefaultHardPodAffinitySymmetricWeight` type changed from int to int32 623 624 * [https://github.com/kubernetes/kubernetes/pull/53850](https://github.com/kubernetes/kubernetes/pull/53850) 625 626 * [k8s.io/apimachinery] `ObjectCopier` interface was removed (requires switch to new generators with DeepCopy methods) 627 628 * [https://github.com/kubernetes/kubernetes/pull/53525](https://github.com/kubernetes/kubernetes/pull/53525) 629 630 **New Features:** 631 632 * Certificate manager was moved from kubelet to `k8s.io/client-go/util/certificates` 633 634 * [https://github.com/kubernetes/kubernetes/pull/49654](https://github.com/kubernetes/kubernetes/pull/49654) 635 636 * [k8s.io/api] Workloads api types are promoted to `apps/v1` version 637 638 * [https://github.com/kubernetes/kubernetes/pull/53679](https://github.com/kubernetes/kubernetes/pull/53679) 639 640 * [k8s.io/api] Added `storage.k8s.io/v1alpha1` API group 641 642 * [https://github.com/kubernetes/kubernetes/pull/54463](https://github.com/kubernetes/kubernetes/pull/54463) 643 644 * [k8s.io/api] Added support for conditions in StatefulSet status 645 646 * [https://github.com/kubernetes/kubernetes/pull/55268](https://github.com/kubernetes/kubernetes/pull/55268) 647 648 * [k8s.io/api] Added support for conditions in DaemonSet status 649 650 * [https://github.com/kubernetes/kubernetes/pull/55272](https://github.com/kubernetes/kubernetes/pull/55272) 651 652 * [k8s.io/apimachinery] Added polymorphic scale client in `k8s.io/client-go/scale`, which supports scaling of resources in arbitrary API groups 653 654 * [https://github.com/kubernetes/kubernetes/pull/53743](https://github.com/kubernetes/kubernetes/pull/53743) 655 656 * [k8s.io/apimachinery] `meta.MetadataAccessor` got API chunking support 657 658 * [https://github.com/kubernetes/kubernetes/pull/53768](https://github.com/kubernetes/kubernetes/pull/53768) 659 660 * [k8s.io/apimachinery] `unstructured.Unstructured` got getters and setters 661 662 * [https://github.com/kubernetes/kubernetes/pull/51940](https://github.com/kubernetes/kubernetes/pull/51940) 663 664 **Bug fixes and Improvements:** 665 666 * The body in glog output is not truncated with log level 10 667 668 * [https://github.com/kubernetes/kubernetes/pull/54801](https://github.com/kubernetes/kubernetes/pull/54801) 669 670 * [k8s.io/api] Unset `creationTimestamp` field is output as null if encoded from an unstructured object 671 672 * [https://github.com/kubernetes/kubernetes/pull/53464](https://github.com/kubernetes/kubernetes/pull/53464) 673 674 * [k8s.io/apimachinery] Redirect behavior is restored for proxy subresources 675 676 * [https://github.com/kubernetes/kubernetes/pull/52933](https://github.com/kubernetes/kubernetes/pull/52933) 677 678 * [k8s.io/apimachinery] Random string generation functions are optimized 679 680 * [https://github.com/kubernetes/kubernetes/pull/53720](https://github.com/kubernetes/kubernetes/pull/53720) 681 682 # v5.0.1 683 684 Bug fix: picked up a security fix [kubernetes/kubernetes#53443](https://github.com/kubernetes/kubernetes/pull/53443) for `PodSecurityPolicy`. 685 686 # v5.0.0 687 688 **New features:** 689 690 * Added paging support 691 692 * [https://github.com/kubernetes/kubernetes/pull/51876](https://github.com/kubernetes/kubernetes/pull/51876) 693 694 * Added support for client-side spam filtering of events 695 696 * [https://github.com/kubernetes/kubernetes/pull/47367](https://github.com/kubernetes/kubernetes/pull/47367) 697 698 * Added support for http etag and caching 699 700 * [https://github.com/kubernetes/kubernetes/pull/50404](https://github.com/kubernetes/kubernetes/pull/50404) 701 702 * Added priority queue support to informer cache 703 704 * [https://github.com/kubernetes/kubernetes/pull/49752](https://github.com/kubernetes/kubernetes/pull/49752) 705 706 * Added openstack auth provider 707 708 * [https://github.com/kubernetes/kubernetes/pull/39587](https://github.com/kubernetes/kubernetes/pull/39587) 709 710 * Added metrics for checking reflector health 711 712 * [https://github.com/kubernetes/kubernetes/pull/48224](https://github.com/kubernetes/kubernetes/pull/48224) 713 714 * Client-go now includes the leaderelection package 715 716 * [https://github.com/kubernetes/kubernetes/pull/39173](https://github.com/kubernetes/kubernetes/pull/39173) 717 718 **API changes:** 719 720 * Promoted Autoscaling v2alpha1 to v2beta1 721 722 * [https://github.com/kubernetes/kubernetes/pull/50708](https://github.com/kubernetes/kubernetes/pull/50708) 723 724 * Promoted CronJobs to batch/v1beta1 725 726 * [https://github.com/kubernetes/kubernetes/pull/41901](https://github.com/kubernetes/kubernetes/pull/41901) 727 728 * Promoted rbac.authorization.k8s.io/v1beta1 to rbac.authorization.k8s.io/v1 729 730 * [https://github.com/kubernetes/kubernetes/pull/49642](https://github.com/kubernetes/kubernetes/pull/49642) 731 732 * Added a new API version apps/v1beta2 733 734 * [https://github.com/kubernetes/kubernetes/pull/48746](https://github.com/kubernetes/kubernetes/pull/48746) 735 736 * Added a new API version scheduling/v1alpha1 737 738 * [https://github.com/kubernetes/kubernetes/pull/48377](https://github.com/kubernetes/kubernetes/pull/48377) 739 740 **Breaking changes:** 741 742 * Moved pkg/api and pkg/apis to [k8s.io/api](https://github.com/kubernetes/api). Other kubernetes repositories also import types from there, so they are composable with client-go. 743 744 * Removed helper functions in pkg/api and pkg/apis. They are planned to be exported in other repos. The issue is tracked [here](https://github.com/kubernetes/kubernetes/issues/48209#issuecomment-314537745). During the transition, you'll have to copy the helper functions to your projects. 745 746 * The discovery client now fetches the protobuf encoded OpenAPI schema and returns `openapi_v2.Document` 747 748 * [https://github.com/kubernetes/kubernetes/pull/46803](https://github.com/kubernetes/kubernetes/pull/46803) 749 750 * Enforced explicit references to API group client interfaces in clientsets to avoid ambiguity. 751 752 * [https://github.com/kubernetes/kubernetes/pull/49370](https://github.com/kubernetes/kubernetes/pull/49370) 753 754 * The generic RESTClient type (`k8s.io/client-go/rest`) no longer exposes `LabelSelectorParam` or `FieldSelectorParam` methods - use `VersionedParams` with `metav1.ListOptions` instead. The `UintParam` method has been removed. The `timeout` parameter will no longer cause an error when using `Param()`. 755 756 * [https://github.com/kubernetes/kubernetes/pull/48991](https://github.com/kubernetes/kubernetes/pull/48991) 757 758 # v4.0.0 759 760 No significant changes since v4.0.0-beta.0. 761 762 # v4.0.0-beta.0 763 764 **New features:** 765 766 * Added OpenAPISchema support in the discovery client 767 768 * [https://github.com/kubernetes/kubernetes/pull/44531](https://github.com/kubernetes/kubernetes/pull/44531) 769 770 * Added mutation cache filter: MutationCache is able to take the result of update operations and stores them in an LRU that can be used to provide a more current view of a requested object. 771 772 * [https://github.com/kubernetes/kubernetes/pull/45838](https://github.com/kubernetes/kubernetes/pull/45838/commits/f88c7725b4f9446c652d160bdcfab7c6201bddea) 773 774 * Moved the remotecommand package (used by `kubectl exec/attach`) to client-go 775 776 * [https://github.com/kubernetes/kubernetes/pull/41331](https://github.com/kubernetes/kubernetes/pull/41331) 777 778 * Added support for following redirects to the SpdyRoundTripper 779 780 * [https://github.com/kubernetes/kubernetes/pull/44451](https://github.com/kubernetes/kubernetes/pull/44451) 781 782 * Added Azure Active Directory plugin 783 784 * [https://github.com/kubernetes/kubernetes/pull/43987](https://github.com/kubernetes/kubernetes/pull/43987) 785 786 **Usability improvements:** 787 788 * Added several new examples and reorganized client-go/examples 789 790 * [Related PRs](https://github.com/kubernetes/kubernetes/commits/release-1.7/staging/src/k8s.io/client-go/examples) 791 792 **API changes:** 793 794 * Added networking.k8s.io/v1 API 795 796 * [https://github.com/kubernetes/kubernetes/pull/39164](https://github.com/kubernetes/kubernetes/pull/39164) 797 798 * ControllerRevision type added for StatefulSet and DaemonSet history. 799 800 * [https://github.com/kubernetes/kubernetes/pull/45867](https://github.com/kubernetes/kubernetes/pull/45867) 801 802 * Added support for initializers 803 804 * [https://github.com/kubernetes/kubernetes/pull/38058](https://github.com/kubernetes/kubernetes/pull/38058) 805 806 * Added admissionregistration.k8s.io/v1alpha1 API 807 808 * [https://github.com/kubernetes/kubernetes/pull/46294](https://github.com/kubernetes/kubernetes/pull/46294) 809 810 **Breaking changes:** 811 812 * Moved client-go/util/clock to apimachinery/pkg/util/clock 813 814 * [https://github.com/kubernetes/kubernetes/pull/45933](https://github.com/kubernetes/kubernetes/pull/45933/commits/8013212db54e95050c622675c6706cce5de42b45) 815 816 * Some [API helpers](https://github.com/kubernetes/client-go/blob/release-3.0/pkg/api/helpers.go) were removed. 817 818 * Dynamic client takes GetOptions as an input parameter 819 820 * [https://github.com/kubernetes/kubernetes/pull/47251](https://github.com/kubernetes/kubernetes/pull/47251) 821 822 **Bug fixes:** 823 824 * PortForwarder: don't log an error if net.Listen fails. [https://github.com/kubernetes/kubernetes/pull/44636](https://github.com/kubernetes/kubernetes/pull/44636) 825 826 * oidc auth plugin not to override the Auth header if it's already exits. [https://github.com/kubernetes/kubernetes/pull/45529](https://github.com/kubernetes/kubernetes/pull/45529) 827 828 * The --namespace flag is now honored for in-cluster clients that have an empty configuration. [https://github.com/kubernetes/kubernetes/pull/46299](https://github.com/kubernetes/kubernetes/pull/46299) 829 830 * GCP auth plugin no longer overwrites existing Authorization headers. [https://github.com/kubernetes/kubernetes/pull/45575](https://github.com/kubernetes/kubernetes/pull/45575) 831 832 # v3.0.0 833 834 Bug fixes: 835 * Use OS-specific libs when computing client User-Agent in kubectl, etc. (https://github.com/kubernetes/kubernetes/pull/44423) 836 * kubectl commands run inside a pod using a kubeconfig file now use the namespace specified in the kubeconfig file, instead of using the pod namespace. If no kubeconfig file is used, or the kubeconfig does not specify a namespace, the pod namespace is still used as a fallback. (https://github.com/kubernetes/kubernetes/pull/44570) 837 * Restored the ability of kubectl running inside a pod to consume resource files specifying a different namespace than the one the pod is running in. (https://github.com/kubernetes/kubernetes/pull/44862) 838 839 # v3.0.0-beta.0 840 841 * Added dependency on k8s.io/apimachinery. The impacts include changing import path of API objects like `ListOptions` from `k8s.io/client-go/pkg/api/v1` to `k8s.io/apimachinery/pkg/apis/meta/v1`. 842 * Added generated listers (listers/) and informers (informers/) 843 * Kubernetes API changes: 844 * Added client support for: 845 * authentication/v1 846 * authorization/v1 847 * autoscaling/v2alpha1 848 * rbac/v1beta1 849 * settings/v1alpha1 850 * storage/v1 851 * Changed client support for: 852 * certificates from v1alpha1 to v1beta1 853 * policy from v1alpha1 to v1beta1 854 * Deleted client support for: 855 * extensions/v1beta1#Job 856 * CHANGED: pass typed options to dynamic client (https://github.com/kubernetes/kubernetes/pull/41887) 857 858 # v2.0.0 859 860 * Included bug fixes in k8s.io/kuberentes release-1.5 branch, up to commit 861 bde8578d9675129b7a2aa08f1b825ec6cc0f3420 862 863 # v2.0.0-alpha.1 864 865 * Removed top-level version folder (e.g., 1.4 and 1.5), switching to maintaining separate versions 866 in separate branches. 867 * Clientset supported multiple versions per API group 868 * Added ThirdPartyResources example 869 * Kubernetes API changes 870 * Apps API group graduated to v1beta1 871 * Policy API group graduated to v1beta1 872 * Added support for batch/v2alpha1/cronjob 873 * Renamed PetSet to StatefulSet 874 875 876 # v1.5.0 877 878 * Included the auth plugin (https://github.com/kubernetes/kubernetes/pull/33334) 879 * Added timeout field to RESTClient config (https://github.com/kubernetes/kubernetes/pull/33958)