Commit Graph

175 Commits

Author SHA1 Message Date
Kubernetes Prow Robot
c727585676 Merge pull request #134216 from Goend/master
fixed the CRD statusResetFields init issue
2025-11-05 00:44:52 -08:00
Goend
3b0913c866 fix test case 2025-11-05 11:17:00 +08:00
Patrick Ohly
fee14ffca2 DRA API: device taints 1.35
This raises the number of allowed taints per device to 16 by lowering
the number of allowed devices to 64 per ResourceSlice if (and only if!)
taints are used.

"effect: None" and DeviceTaintRule status with conditions get added
to support giving feedback to admins.

Instead of merely adding the new effect value, this also changes validation of
the enum so that unknown values are valid if they were already stored. This
will simplify adding new effects in the future because validation won't fail
for them after a downgrade. Consumers must treat them like this new None
effect, i.e. ignore them.
2025-10-31 18:11:18 +01:00
Goend
c48a16ebd8 fix issue 2025-10-14 18:59:23 +08:00
Goend
dfb02e7581 add TestUpdateStatusWithOldVersion integration case 2025-10-14 14:45:22 +08:00
Mayuka Channankaiah
6c56d2fd1b Replace usage of deprecated ErrWaitTimeout with recommended method across all Pkgs 2025-08-01 14:18:06 +05:30
Patrick Ohly
cff91579e8 DRA API: v1 registration + tests 2025-07-24 08:30:25 +02:00
Kubernetes Prow Robot
28e4f3f6a3 Merge pull request #131350 from pohly/etcd-output
etcd output interception
2025-06-26 04:46:29 -07:00
Patrick Ohly
10de6780cf DRA API: remove obsolete types from v1alpha3
The v1alpha3 version is still needed for DeviceTaintRule, but the rest of the
types and most structs became obsolete in v1.32 when we introduced v1beta1 and
bumped the storage version to v1beta1.

Removing them now simplifies adding new features because new fields don't need
to be added to these obsolete types. This could have been done already in 1.33,
but wasn't to minimize disrupting on-going work.
2025-06-06 12:06:28 +02:00
Patrick Ohly
f74424bd7c etcd: better logging
Previously, etcd wrote to stderr in JSON format:

   {"level":"warn","ts":"2025-04-11T03:32:06.676527Z","caller":"embed/config.go:689","msg":"Running http and grpc server on single port. This is not recommended for production."}
   {"level":"warn","ts":"2025-04-11T03:32:06.676707Z","caller":"embed/config.go:689","msg":"Running http and grpc server on single port. This is not recommended for production."}
   {"level":"warn","ts":"2025-04-11T03:32:06.677056Z","caller":"etcdmain/etcd.go:146","msg":"failed to start etcd","error":"listen tcp 127.0.0.1:37803: bind: address already in use"}
   {"level":"fatal","ts":"2025-04-11T03:32:06.677104Z","caller":"etcdmain/etcd.go:204","msg":"discovery failed","error":"listen tcp 127.0.0.1:37803: bind: address already in use","stacktrace":"go.etcd.io/etcd/server/v3/etcdmain.startEtcdOrProxyV2\n\tgo.etcd.io/etcd/server/v3/etcdmain/etcd.go:204\ngo.etcd.io/etcd/server/v3/etcdmain.Main\n\tgo.etcd.io/etcd/server/v3/etcdmain/main.go:40\nmain.main\n\tgo.etcd.io/etcd/server/v3/main.go:31\nruntime.main\n\truntime/proc.go:272"}

This has several drawbacks:
- Not very readable.
- When used in tests which start etcd themselves (for example, scheduler_perf),
  the output is not associated with the current test.
- Contains warnings that are confusing for developers who don't know that they
  are harmless.

Intercepting output, parsing it and reformating makes the output nicer. Instead
of a mixture of JSON messages (see above) and normal test output, we now get
the etcd output embedded inside the test output. We can also filter out some
known harmless messages. Cleaning up more output or avoiding it in the first
place might be a good next step.

With `go test -v ./test/integration/scheduler_perf/dra`:

    === RUN   TestSchedulerPerf
    === RUN   TestSchedulerPerf/SchedulingWithResourceClaimTemplate
    === RUN   TestSchedulerPerf/SchedulingWithResourceClaimTemplate/fast
    I0411 13:21:03.353458   65212 feature_gate.go:385] feature gates: {map[SchedulerQueueingHints:false]}
    ...
    I0411 13:21:10.552975   65212 cidrallocator.go:210] stopping ServiceCIDR Allocator Controller
    I0411 13:21:10.567327   65212 etcd.go:210] "etcd output" logger="TestSchedulerPerf/SchedulingWithResourceClaimTemplate/fast" error="accept tcp 127.0.0.1:42245: use of closed network connection" level="warn" ts="2025-04-11T13:21:10.567045+0200" caller="embed/serve.go:160" msg="stopping insecure grpc server due to error"
    I0411 13:21:10.567398   65212 etcd.go:210] "etcd output" logger="TestSchedulerPerf/SchedulingWithResourceClaimTemplate/fast" ts="2025-04-11T13:21:10.567198+0200" caller="embed/serve.go:162" msg="stopped insecure grpc server due to error" error="accept tcp 127.0.0.1:42245: use of closed network connection" level="warn"
    I0411 13:21:15.567917   65212 etcd.go:227] "etcd didn't exit in 5 seconds, killing it" logger="TestSchedulerPerf/SchedulingWithResourceClaimTemplate/fast"
    I0411 13:21:15.567964   65212 etcd.go:234] "etcd exited" logger="TestSchedulerPerf/SchedulingWithResourceClaimTemplate/fast" err="signal: terminated"

With per-test output `go test -v ./test/integration/scheduler_perf/dra -args -use-testing-log`:

    === RUN   TestSchedulerPerf
    === RUN   TestSchedulerPerf/SchedulingWithResourceClaimTemplate
    === RUN   TestSchedulerPerf/SchedulingWithResourceClaimTemplate/fast
    I0411 13:19:03.540497   28645 feature_gate.go:385] feature gates: {map[DynamicResourceAllocation:true]}
    ...
    I0411 13:19:10.519994   28645 cidrallocator.go:210] stopping ServiceCIDR Allocator Controller
        etcd.go:210: I0411 13:19:10.533131] etcd output msg="stopping insecure grpc server due to error" error="accept tcp 127.0.0.1:46637: use of closed network connection" level="warn" ts="2025-04-11T13:19:10.532900+0200" caller="embed/serve.go:160"
        etcd.go:210: I0411 13:19:10.533274] etcd output msg="stopped insecure grpc server due to error" error="accept tcp 127.0.0.1:46637: use of closed network connection" level="warn" ts="2025-04-11T13:19:10.533022+0200" caller="embed/serve.go:162"
        etcd.go:227: I0411 13:19:15.533715] etcd didn't exit in 5 seconds, killing it
        etcd.go:234: I0411 13:19:15.533803] etcd exited err="signal: terminated"
2025-04-24 08:54:13 +02:00
Morten Torkildsen
39507d911f Add resource v1beta2 API 2025-03-26 14:41:09 +00:00
Patrick Ohly
797475e113 DRA: add device taints API
This adds the "DeviceTaint" top-level type to v1alpha3 and related fields to
ResourceSlice and ResourceClaim. It's complete enough bring up an API server
and generate files.
2025-03-18 20:52:54 +01:00
Antonio Ojea
779b9cf90c update integration test 2025-01-20 13:01:53 +00: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
Patrick Ohly
2e64c72249 DRA API: register v1beta1
This is the minimal set of changes that are needed to make the new version
usable. The storage version is still v1alpha3. More changes will follow.
2024-11-06 13:03:18 +01: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
Ben Luddy
37ed906a33 Support application/apply-patch+cbor in patch requests. 2024-10-30 12:21:15 -04:00
Patrick Ohly
f84eb5ecf8 DRA: remove "classic DRA"
This removes the DRAControlPlaneController feature gate, the fields controlled
by it (claim.spec.controller, claim.status.deallocationRequested,
claim.status.allocation.controller, class.spec.suitableNodes), the
PodSchedulingContext type, and all code related to the feature.

The feature gets removed because there is no path towards beta and GA and DRA
with "structured parameters" should be able to replace it.
2024-10-16 23:09:50 +02:00
Harry Li
9bd3826bf1 fix(typo): correct 'reources' to 'resources' 2024-09-05 00:01:28 +08:00
Monis Khan
857127f7c4 SSA: improve create authz error message
Signed-off-by: Monis Khan <mok@microsoft.com>
2024-08-02 17:20:53 -04:00
Monis Khan
d76eae46fc SSA: add integration test to exercise authz
Signed-off-by: Monis Khan <mok@microsoft.com>
2024-08-02 17:04:51 -04:00
Patrick Ohly
91d7882e86 DRA: new API for 1.31
This is a complete revamp of the original API. Some of the key
differences:
- refocused on structured parameters and allocating devices
- support for constraints across devices
- support for allocating "all" or a fixed amount
  of similar devices in a single request
- no class for ResourceClaims, instead individual
  device requests are associated with a mandatory
  DeviceClass

For the sake of simplicity, optional basic types (ints, strings) where the null
value is the default are represented as values in the API types. This makes Go
code simpler because it doesn't have to check for nil (consumers) and values
can be set directly (producers). The effect is that in protobuf, these fields
always get encoded because `opt` only has an effect for pointers.

The roundtrip test data for v1.29.0 and v1.30.0 changes because of the new
"request" field. This is considered acceptable because the entire `claims`
field in the pod spec is still alpha.

The implementation is complete enough to bring up the apiserver.
Adapting other components follows.
2024-07-22 18:09:34 +02:00
Patrick Ohly
b51d68bb87 DRA: bump API v1alpha2 -> v1alpha3
This is in preparation for revamping the resource.k8s.io completely. Because
there will be no support for transitioning from v1alpha2 to v1alpha3, the
roundtrip test data for that API in 1.29 and 1.30 gets removed.

Repeating the version in the import name of the API packages is not really
required. It was done for a while to support simpler grepping for usage of
alpha APIs, but there are better ways for that now. So during this transition,
"resourceapi" gets used instead of "resourcev1alpha3" and the version gets
dropped from informer and lister imports. The advantage is that the next bump
to v1beta1 will affect fewer source code lines.

Only source code where the version really matters (like API registration)
retains the versioned import.
2024-07-21 17:28:13 +02:00
Antonio Ojea
ed597316d6 modify tests to use the networking v1beta1 API 2024-06-30 09:48:46 +00:00
Kubernetes Prow Robot
34dd2007cb Merge pull request #125263 from jpbetz/fix-nop-apply
Fix check to ignore non-semantic changes to objects to handle unstructured
2024-06-25 14:17:51 -07:00
Kubernetes Prow Robot
d236a9127f Merge pull request #125560 from jpbetz/apply-gen-fake
Add field management support to fake client-go typed client
2024-06-24 16:48:46 -07:00
Kubernetes Prow Robot
d5dd5b13a5 Merge pull request #125317 from jpbetz/fix-nop-empty-map
Fix non-semantic apply requests to ignore empty maps
2024-06-24 16:48:39 -07:00
Joe Betz
572b0d9fbf Add integration test 2024-06-24 15:58:51 -04:00
Joe Betz
f31afbbf8e Add marker struct test case 2024-06-07 11:11:24 -04:00
Antonio Ojea
6552f2710f use default flags for apiserver on integration tests 2024-06-04 22:09:35 +00:00
Joe Betz
5db9eff04f Apply feedback 2024-06-04 15:25:02 -04:00
Joe Betz
89a68be3a9 Add integration test for a nop apply with an empty map 2024-06-04 12:08:55 -04:00
Joe Betz
13f809478f Apply feedback 2024-06-04 11:50:01 -04:00
Joe Betz
d57acd327f Add nop test case for applying a CRD with defaulted atomic field 2024-05-31 21:24:52 -04:00
cici37
de506ce7ac Promote ValidatingAdmissionPolicy to GA. 2024-03-05 16:00:21 -08:00
Ricardo Katz
d816ab7657 Promote LoadBalancerIPMode to Beta 2024-02-22 08:35:12 -03:00
Kubernetes Prow Robot
6abff7457e Merge pull request #116516 from aojea/servicecidr
KEP-1880 Multiple ServiceCIDR ( and IPAddress allocation)
2023-11-01 03:52:24 +01:00
Kubernetes Prow Robot
593a17d3b6 Merge pull request #121575 from apelisse/update-smd
Update sigs.k8s.io/structured-merge-diff to v4.4.0
2023-11-01 01:51:17 +01:00
Antonio Ojea
46b13d48e2 etcd data
Change-Id: I31c3a1c8fee7f3a681186b934bd7c6b36baee6df
2023-10-31 21:05:05 +00:00
Jordan Liggitt
df80775693 Include managed field comparison in test 2023-10-31 14:03:39 -07:00
Antoine Pelisse
5b268e6daf apply: Add test for duplicates in associative lists 2023-10-30 15:55:50 -07:00
Abu Kashem
25aebca8d5 apiserver: add etcd data and storage version hash for apf v1 2023-10-30 07:48:23 -04:00
Kubernetes Prow Robot
cf8f9a8d07 Merge pull request #119334 from kmala/serverapply
update the dependency sigs.k8s.io/structured-merge-diff/v4 to latest tag
2023-09-06 12:34:55 -07:00
Tim Hockin
a930892769 Gate: disallow .status.loadBalancer on non-LB svc
The fact that the .status.loadBalancer field can be set while .spec.type
is not "LoadBalancer" is a flub.  Any spec update will already clear
.status.ingress, so it's hard to really rely on this.  After this
change, updates which try to set this combination will fail validation.

Existing cases of this will not be broken.  Any spec/metadata update
will clear it (no error) and this is the only stanza of status.

New gate "AllowServiceLBStatusOnNonLB" is off by default, but can be
enabled if this change actually breaks someone, which seems exceeedingly
unlikely.
2023-08-20 16:40:41 -07:00
Alexander Zielenski
b3b775baa5 test: adjust tests for v1beta1 validatingadmissionpolicy 2023-07-20 13:24:09 -07:00
Keerthan Reddy Mala
106a931c29 fix intergration test 2023-07-18 10:24:04 -07:00
Ricardo Katz
bff8a6cd9f Remove withdrawn feature NetworkPolicyStatus 2023-05-01 15:19:25 -03:00
Alexander Zielenski
2b01f63b11 move check for noop managed field timestamp updates
this check needs to go after any mutations. After the mutating admission chain, rest.BeforeUpdate (which is responsible for reverting updates to immutable timestamp fields, among other things.) is called in the store.Update function. Without moving this check, it will be possible for an object to be written to etcd with only a change to its managed fields timestamp.
2023-03-22 11:29:33 -07:00
Patrick Ohly
fec5233668 api: resource.k8s.io PodScheduling -> PodSchedulingContext
The name "PodScheduling" was unusual because in contrast to most other names,
it was impossible to put an article in front of it. Now PodSchedulingContext is
used instead.
2023-03-14 10:18:08 +01:00
Patrick Ohly
29941b8d3e api: resource.k8s.io v1alpha1 -> v1alpha2
For Kubernetes 1.27, we intend to make some breaking API changes:
- rename PodScheduling -> PodSchedulingHints (https://github.com/kubernetes/kubernetes/issues/114283)
- extend ResourceClaimStatus (https://github.com/kubernetes/enhancements/pull/3802)

We need to switch from v1alpha1 to v1alpha2 for that.
2023-03-14 07:52:03 +01:00