Commit Graph

125 Commits

Author SHA1 Message Date
Ben Luddy
a77f4c7ba2 Fix content type fallback when a client defaults to CBOR.
With the ClientsAllowCBOR client-go feature gate enabled, a 415 response to a CBOR-encoded REST
causes all subsequent requests from the client to fall back to a JSON request encoding. This
mechanism had only worked as intended when CBOR was explicitly configured in the
ClientContentConfig. When both ClientsAllowCBOR and ClientsPreferCBOR are enabled, an
unconfigured (empty) content type defaults to CBOR instead of JSON. Both ways of configuring a
client to use the CBOR request encoding are now subject to the same fallback mechanism.
2024-11-07 09:14:59 -05:00
Ben Luddy
439d2f7b40 Wire serving codecs to CBOR feature gate.
Integration testing has to this point relied on patching serving codecs for built-in APIs. The
test-only patching is removed and replaced by feature gated checks at runtime.
2024-11-06 15:41:39 -05:00
Ben Luddy
504f14998e Use application/cbor-seq media type in streaming CBOR responses.
The media type application/cbor describes exactly one encoded item. As a new (to Kubernetes) format
with no existing clients, streaming/watch responses will use the application/cbor-seq media
type. CBOR watch responses conform to the specification of CBOR Sequences and are encoded as the
concatenation of zero or more items with no additional framing.
2024-11-06 08:23:18 -05:00
Ben Luddy
072dfcb416 Add CBOR feature gates.
For alpha, there is one apiserver feature gate and two client-go feature gates controlling
CBOR. They were initially wired to separate test-only feature gate instances in order to prevent
them from being configurable at runtime via command-line flags or environment variables (for
client-go feature gates outside of Kubernetes components). All of the integration tests required by
the KEP as alpha criteria have been implemented. This adds the feature gates to the usual feature
gate instances and removes the temporary code to support separate test-only feature gate instances.
2024-11-05 14:17:52 -05:00
Kubernetes Prow Robot
3f5d0ee2cf Merge pull request #128497 from benluddy/cbor-request-contenttype-circuit-breaker
KEP-4222: Fall back to JSON request encoding after CBOR 415.
2024-11-01 20:05:34 +00:00
Ben Luddy
1745dfdd15 Fall back to JSON request encoding after CBOR 415.
If a client is configured to encode request bodies to CBOR, but the server does not support CBOR,
the server will respond with HTTP 415 (Unsupported Media Type). By feeding this response back to the
RESTClient, subsequent requests can fall back to JSON, which is assumed to be acceptable.
2024-11-01 12:54:04 -04:00
Ben Luddy
faf07915e1 Add integration test for CBOR-enabled dynamic client watches. 2024-11-01 12:03:30 -04:00
Ben Luddy
37ed906a33 Support application/apply-patch+cbor in patch requests. 2024-10-30 12:21:15 -04:00
Ben Luddy
f831368428 Test response content negotiation with CBOR enablement. 2024-10-28 19:21:21 -04:00
Ben Luddy
67b9dc1f3e Wire client feature gates affecting RESTClient content config. 2024-10-28 13:15:28 -04:00
Kubernetes Prow Robot
119f114f01 Merge pull request #128196 from richabanker/move-version
Move k8s.io/apiserver/pkg/util/version to component-base
2024-10-25 18:33:01 +01:00
Richa Banker
9274a584b8 Split k8s.io/component-base/registry and add into k8s.io/component-base/version and k8s.io/component-base/featuregate 2024-10-24 19:09:30 -07:00
Ben Luddy
ea13190d8b Add test-only client feature gates for CBOR.
As with the apiserver feature gate for CBOR as a serving and storage encoding, the client feature
gates for CBOR are being initially added through a test-only feature gate instance that is not wired
to environment variables or to command-line flags and is intended only to be enabled
programmatically from integration tests. The test-only instance will be removed as part of alpha
graduation and replaced by conventional client feature gating.
2024-10-24 13:27:39 -04:00
Richa Banker
81cd728c66 Move k8s.io/apiserver/pkg/util/version to component-base 2024-10-22 13:03:42 -07:00
Dr. Stefan Schimanski
b27142852f test/integration: adapt numbers in TestAPIServerTransportMetrics with less rest client creations
Signed-off-by: Dr. Stefan Schimanski <stefan.schimanski@gmail.com>
2024-07-21 17:41:50 +02:00
Matthieu MOREL
0cde5f1e28 fix: enable bool-compare rule from testifylint linter (#125135)
* fix: enable bool-compare rule from testifylint linter

Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>

* Update hack/golangci.yaml.in

Co-authored-by: Patrick Ohly <patrick.ohly@intel.com>

* Update golangci.yaml.in

* Update golangci-strict.yaml

* Update golangci.yaml.in

* Update golangci.yaml.in

* Update golangci.yaml.in

* Update golangci.yaml.in

* Update golangci.yaml

* Update golangci-hints.yaml

* Update golangci-strict.yaml

* Update golangci.yaml.in

* Update golangci.yaml

* Update mux_test.go

---------

Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
Co-authored-by: Patrick Ohly <patrick.ohly@intel.com>
2024-06-28 10:58:05 -07:00
Siyuan Zhang
4352c4ad27 Add version mapping in ComponentGlobalsRegistry.
Signed-off-by: Siyuan Zhang <sizhang@google.com>
2024-06-25 22:12:11 +00:00
Antonio Ojea
6552f2710f use default flags for apiserver on integration tests 2024-06-04 22:09:35 +00:00
Marek Siarkowicz
3ee8178768 Cleanup defer from SetFeatureGateDuringTest function call 2024-04-24 20:25:29 +02:00
Kubernetes Prow Robot
64af2d93e5 Merge pull request #117295 from aojea/transport_cache_metrics
add new metric for the internal client-go cache size
2023-05-11 08:59:02 -07:00
Antonio Ojea
3f3e1d507d add new metrics for the internal client-go transport generator
Add two new metrics to monitor the client-go logic that
generate http.Transports for the clients.

- rest_client_transport_cache_entries is a gauge metrics
with the number of existin entries in the internal cache

- rest_client_transport_create_calls_total is a counter
that increments each time a new transport is created, storing
the result of the operation needed to generate it: hit, miss
or uncacheable

Change-Id: I2d8bde25281153d8f8e8faa249385edde3c1cb39
2023-05-11 09:07:11 +00:00
Min Ni
e865b30abd update serial number to a valid non-zero number in ca certificate (#117791)
* update serial number to a valid non-zero number in ca certificate

* fix the existing problem (0 SerialNumber in all certificate) as part of this PR in a separate commit
2023-05-09 06:34:08 -07:00
Kubernetes Prow Robot
d0fc9d16ce Merge pull request #114800 from haoruan/feature-8976-spew-sprintf-refactor
Capture spew.Sprintf() with all our favorite config into a util func
2023-04-11 15:34:57 -07:00
Hao Ruan
f638e2849f replaced spew.Sprintf with a util pretty print function 2023-03-27 09:24:22 +08:00
Yuan Chen
a24aef6510 Replace a function closure
Replace more closures with pointer conversion

Replace deprecated Int32Ptr to Int32
2023-02-27 09:13:36 -08:00
Daniel Smith
8100efc7b3 Enable propagration of HasSynced
* Add tracker types and tests
* Modify ResourceEventHandler interface's OnAdd member
* Add additional ResourceEventHandlerDetailedFuncs struct
* Fix SharedInformer to let users track HasSynced for their handlers
* Fix in-tree controllers which weren't computing HasSynced correctly
* Deprecate the cache.Pop function
2022-12-14 18:43:33 +00:00
Wojciech Tyczyński
f673c262bd Clean shutdown of client integration tests 2022-07-19 10:03:51 +02:00
Abu Kashem
6acbe7e645 client-go: chain the error returned by rate limiter 2022-03-23 08:29:28 -04:00
Kubernetes Prow Robot
19935de5a9 Merge pull request #107410 from margocrawf/master
Ensure static certs in kubeconfig override exec plugin
2022-03-08 11:34:21 -08:00
Margo Crawford
f015fd66ce Check whether static cert is already configured in UpdateTransportConfig
- Also update test-cmd.sh to pass a signing ca to the kube controller
  manager, so CSRs work properly in integration tests.

Signed-off-by: Margo Crawford <margaretc@vmware.com>
2022-03-07 13:54:32 -08:00
Wojciech Tyczyński
41ee6a3e44 Remove selflink integration tests 2022-02-14 11:11:56 +01:00
ahrtr
fe95aa614c io/ioutil has already been deprecated in golang 1.16, so replace all ioutil with io and os 2022-02-03 05:32:12 +08:00
Jiahui Feng
c56bbda368 fix containers order after applying
to be appending instead of prepending.
2022-01-14 11:15:54 -08:00
Jordan Liggitt
88ab0d03b7 Revert "update expected ordering"
This reverts commit fbc8ac9c96.
2021-11-24 11:19:27 -05:00
Jiahui Feng
fbc8ac9c96 update expected ordering
in apply test.
2021-11-02 10:00:00 -07:00
h4ghhh
0734820279 'New' Event namespace validate failed (#100125) 2021-09-16 04:29:45 -07:00
Kevin Delgado
7bfc420351 simplify test to only test the new logic of extractUnstructured 2021-07-27 01:28:44 +00:00
Kevin Delgado
c9e97de46b Address PR feedback around gvk parser generation ergonomics 2021-07-27 01:28:43 +00:00
Kevin Delgado
604db6eb2a rename cache, add to integration test 2021-07-27 01:28:43 +00:00
Kevin Delgado
7b9757faa4 basic caching working 2021-07-27 01:28:42 +00:00
Kevin Delgado
9f4a4d812d Write TestUnstructuredExtract 2021-07-27 01:28:04 +00:00
Monis Khan
a6ac42082b client-go exec: fix metrics related to plugin not found
These were missed because our tests did not pass in the correct test
data input (the command to execute).

Signed-off-by: Monis Khan <mok@vmware.com>
2021-07-14 14:02:23 -04:00
Andrew Keesler
20e1c4d754 exec credential provider: update tests+metadata for v1
Signed-off-by: Andrew Keesler <akeesler@vmware.com>
2021-07-06 09:48:35 -04:00
Andrew Keesler
cd83d89ac9 exec credential provider: InteractiveMode support
The value here is that the exec plugin author can use the kubeconfig to assert
how standard input is treated with respect to the exec plugin, e.g.,
- an exec plugin author can ensure that kubectl fails if it cannot provide
  standard input to an exec plugin that needs it (Always)
- an exec plugin author can ensure that an client-go process will still call an
  exec plugin that prefers standard input even if standard input is not
  available (IfAvailable)

Signed-off-by: Andrew Keesler <akeesler@vmware.com>
2021-06-15 09:01:17 -04:00
pacoxu
64946cd50d fix flake integration rotation via informer
Signed-off-by: pacoxu <paco.xu@daocloud.io>
2021-06-07 15:44:53 +08:00
Kubernetes Prow Robot
661b76f864 Merge pull request #102216 from enj/enj/t/exec_global_cache
Add integration test for exec plugin global cache
2021-05-21 16:41:37 -07:00
Monis Khan
a45ffd0771 Add integration test for exec plugin global cache
Signed-off-by: Monis Khan <mok@vmware.com>
2021-05-21 16:17:32 -04:00
Andrew Keesler
9dee2b95c2 exec credential provider: don't run exec plugin with basic auth
If a user specifies basic auth, then apply the same short circuit logic
that we do for bearer tokens (see comment).

Signed-off-by: Andrew Keesler <akeesler@vmware.com>
2021-05-21 13:51:03 -04:00
Andrew Keesler
584acb2cfe test/integration/client: test exec calls metric
Signed-off-by: Andrew Keesler <akeesler@vmware.com>
2021-05-21 09:20:47 -04:00
Andrew Keesler
a14cd8e3de test/integration/client: add TestExecPluginRotationViaInformer
Signed-off-by: Andrew Keesler <akeesler@vmware.com>
2021-05-17 17:22:09 -04:00