Commit Graph

860 Commits

Author SHA1 Message Date
Yuvaraj Kakaraparthi
801c39b478 kubectl: API changes to support --subresource in kubectl
Signed-off-by: Madhav Jivrajani <madhav.jiv@gmail.com>
Co-authored-by: Nikhita Raghunath <nikitaraghunath@gmail.com>
Co-authored-by: Yuvaraj Kakaraparthi <kakaraparthy@vmware.com>
2022-03-23 11:19:58 +05:30
Xudong Liu
c8a6c7f338 promote load balancer class to GA
Signed-off-by: Xudong Liu <xudongliuharold@gmail.com>
2022-03-21 16:16:13 -07:00
Kubernetes Prow Robot
c2d2e66535
Merge pull request #106830 from pacoxu/StreamingProxyRedirects-remove
remove ValidateProxyRedirects and StreamingProxyRedirects
2022-03-04 14:19:53 -08:00
Kubernetes Prow Robot
77eb1a03df
Merge pull request #94637 from liggitt/namespace-before-admission
set/validate object namespace before admission
2022-02-23 14:35:58 -08:00
David Eads
0ec20f97d2 migrate more rest handlers to select by resource enablement 2022-02-22 12:07:43 -05:00
Abdullah Gharaibeh
8a1c70b48c Graduate PodAffinityNamespaceSelector to GA 2022-02-18 12:07:29 -05:00
Madhav Jivrajani
f0ef426238 Update tests to have namespace set in req context
* This updates tests that make requests that call
  into admission.
* For apiextensions-apiserver, the namespace is set
  to metav1.NamespaceNone since the CRD created and
  worked with is a cluster scoped CRD.
* For most tests in register/storage, the namespace
  is set to NamespaceDefault or NamespaceNone based
  on if the resource is cluster scoped (namespaces)
  or namespace scoped (pvs).
* Endpoints tests now have a namespace specified in
  the expected object - NamespaceDefault or other
  based on the test.

Signed-off-by: Madhav Jivrajani <madhav.jiv@gmail.com>
2022-02-17 00:13:34 -05:00
Wojciech Tyczyński
7314286efd Fix validation of event updates 2022-02-10 20:01:45 +01:00
Jordan Liggitt
19d71bb5d5 Validate and populate metadata fields in token request 2022-02-09 14:05:53 -05:00
Jyoti Mahapatra
a1b52fb17a
extend sa token if audience is apiserver (#105954)
Signed-off-by: Jyoti Mahapatra <jyotima@amazon.com>
2022-01-31 16:01:52 -08:00
Tim Hockin
e927ce85b6 service REST: Call Decorator(old) on update path
This is causing a bug when upgrading from older releases to 1.23 because
of Service's maybe-too-clever default-on-read logic.

Service depends on `Decorator()` to be called upon read, to
back-populate old saved objects which do not have `.clusterIPs[]` set.
This works on read, but the cache saves the pre-decorated type (as it is
documented)

In 1.23, this code was refactored and it seems some edge-case handling
was inadvertently removed (I have not confirmed exactly what happened).

Test by aojea
2022-01-30 11:25:17 -08:00
Paco Xu
df81521d88 remove unused parameter: intercceptRedirects & RequireSameHostRedirects 2022-01-28 10:31:51 +08:00
Jordan Liggitt
c0af728f43 Handle invalid selectors properly 2022-01-14 12:11:02 -05:00
Andrew Sy Kim
f68f478e66 core/v1: update unit tests to not expect internalTrafficPolicy when Service Type=ExternalName
Signed-off-by: Andrew Sy Kim <kim.andrewsy@gmail.com>
2022-01-04 14:48:04 -05:00
Andrew Sy Kim
438b90fbc4 core/v1: drop Service spec.internalTrafficPolicy on read when type is ExternalName
Signed-off-by: Andrew Sy Kim <kim.andrewsy@gmail.com>
2022-01-04 14:36:19 -05:00
Lars Ekman
1ef96752da Mark ServiceLBNodePortControl as GA 2021-12-16 16:48:58 +01:00
Davanum Srinivas
497e9c1971
Cleanup OWNERS files (No Activity in the last year)
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2021-12-15 10:34:02 -05:00
Davanum Srinivas
9405e9b55e
Check in OWNERS modified by update-yamlfmt.sh
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2021-12-09 21:31:26 -05:00
Mengjiao Liu
f3c37c2c82 Remove feature gate NamespaceDefaultLabelName 2021-12-07 16:51:17 +08:00
Paco Xu
15558d6972 remove ValidateProxyRedirects and StreamingProxyRedirects in 1.24 2021-12-06 14:47:06 +08:00
Hanna Lee
07a883d8e6 Remove //lint:ignore pragmas that aren't being used anymore 2021-11-17 08:56:54 +01:00
Hanna Lee
0f3836dcc5 Ignore deprecation warnings with //nolint:staticcheck 2021-11-17 08:55:57 +01:00
Hemant Kumar
63fffd37b1 Implement API changes necessary for recovery from resize failure 2021-11-15 18:39:30 -05:00
Dan Williams
a04997e1a1 pod/storage: remove always-empty 'oldMachine' in setPodHostAndAnnotations()
There's only one caller of setPodHostAndAnnotations() and it always
passes an empty 'oldMachine'.

Signed-off-by: Dan Williams <dcbw@redhat.com>
2021-11-11 16:29:20 -06:00
Kubernetes Prow Robot
3128afa69a
Merge pull request #106296 from thockin/svc-logging-cleanup
Clean up some service logging
2021-11-10 11:51:38 -08:00
Tim Hockin
049e158a8f Don't write fake logs to the real test log
This caused consternation as errors were logged but tests did not fail.
It was expected to log!
2021-11-09 22:56:34 -08:00
Tim Hockin
26db11f3dc Clean up some service logging
This is a holdover from previous work.  It is not complete, but it
should be incrementally better.
2021-11-09 22:46:22 -08:00
Kubernetes Prow Robot
23df2b97f7
Merge pull request #105302 from ml-/fix-typos
fix multiple typos in go files
2021-11-03 03:20:58 -07:00
Ruochen Xu
6cc9bedfab add condition pre-check for pod uid and pod resource version in bind api 2021-11-02 09:51:15 +08:00
ml
a2441a256b fix multiple typos 2021-10-29 21:43:52 +02:00
Patrick Ohly
a8c930ef46 generic ephemeral volume: graduation to GA
The feature gate gets locked to "true", with the goal to remove it in two
releases.

All code now can assume that the feature is enabled. Tests for "feature
disabled" are no longer needed and get removed.

Some code wasn't using the new helper functions yet. That gets changed while
touching those lines.
2021-10-11 20:54:20 +02:00
Tom Payne
21755f9ec0 Speed up counting of bits in allocator
Benchmark:

goos: linux
goarch: amd64
pkg: k8s.io/kubernetes/pkg/registry/core/service/allocator
cpu: Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz

Before:

BenchmarkCountBits-8     9459236               140.4 ns/op

After:

BenchmarkCountBits-8    140667842                9.541 ns/op
2021-10-01 17:09:56 +02:00
Tom Payne
125312a8cf Add extra test and benchmark for count bits 2021-10-01 17:08:36 +02:00
Khaled Henidak (Kal)
a53e2eaeab
move IPv6DualStack feature to stable. (#104691)
* kube-proxy

* endpoints controller

* app: kube-controller-manager

* app: cloud-controller-manager

* kubelet

* app: api-server

* node utils + registry/strategy

* api: validation (comment removal)

* api:pod strategy (util pkg)

* api: docs

* core: integration testing

* kubeadm: change feature gate to GA

* service registry and rest stack

* move feature to GA

* generated
2021-09-24 16:30:22 -07:00
Tim Hockin
52f54ce90d Svc REST: clean up defaultOnRead to be consistent
Headless+selectorless -> RequireDualStack

Headless+selector -> SingleStack

Add test cases to cover this and ExternalName and dual-stack init (which
I think can never trigger, but best to be safe).
2021-09-16 11:17:45 -07:00
Kubernetes Prow Robot
c10be982d1
Merge pull request #96345 from ingvagabund/disable-insecure-port-in-scheduler
refactor: disable insecure serving in kube-scheduler
2021-09-14 08:01:09 -07:00
Jan Chaloupka
07af6697e9 refactor: disable insecure serving in kube-scheduler 2021-09-14 07:52:16 +02:00
Tim Hockin
009aa36c89 Svc REST: Make transaction-accumulating funcs safe
Identified in review, these funcs are now more reslient to future
changes.
2021-09-11 11:30:02 -07:00
Tim Hockin
e594dd4281 Svc REST: Convert FIXME to TODO 2021-09-11 11:30:02 -07:00
Tim Hockin
03d11c53a8 Svc REST: Rename RESTAllocStuff
This was a dumb placeholder name.
2021-09-11 11:30:02 -07:00
Tim Hockin
5847426e5e Svc REST: Use types for safer arg ordering
In all the places we pass (old, new) or (new, old), use wrapper-types to
make sure that we don't flip the order by accident.
2021-09-11 11:30:02 -07:00
Tim Hockin
d5143bca84 Svc REST: Rename GenericREST -> REST
This is consistent with every other registry.  Service is no longer the
oddball.
2021-09-11 11:30:02 -07:00
Tim Hockin
fe6f278ea1 Svc REST: Move isValidAddress to storage.go 2021-09-11 11:30:02 -07:00
Tim Hockin
d7c8557281 Svc REST: Make update/releaseNodePorts methods
More consistent overall.
2021-09-11 11:30:02 -07:00
Tim Hockin
4c9bc5a53c Svc REST: Move alloc code around
This is detrimental to future `blame` but makes it so much morereadable
I convinced myself it was worthwhile.
2021-09-11 11:30:02 -07:00
Tim Hockin
7ce34e311a Svc REST: rename rest.go -> alloc.go 2021-09-11 11:30:02 -07:00
Tim Hockin
1ce9807de0 Svc REST: Make allocHCNP a method: more consistent 2021-09-11 11:30:02 -07:00
Tim Hockin
c94deffa48 Svc REST: rename allocateHealthCheckNodePort 2021-09-11 11:30:02 -07:00
Tim Hockin
6b06b9bfd3 Svc REST: rename healthCheckNodePortUpdate 2021-09-11 11:30:02 -07:00
Tim Hockin
5dfcb905d1 Svc REST: rename handleClusterIPsForUpdatedService 2021-09-11 11:30:02 -07:00
Tim Hockin
9c622230fc Svc REST: rename releaseServiceClusterIPs 2021-09-11 11:30:02 -07:00
Tim Hockin
4fb338b279 Svc REST: rename releaseServiceClusterIP 2021-09-11 11:30:02 -07:00
Tim Hockin
2a98ec667e Svc REST: rename allocServiceClusterIPs 2021-09-11 11:30:02 -07:00
Tim Hockin
b9f1f4712a Svc REST: rename allocServiceClusterIP 2021-09-11 11:30:02 -07:00
Tim Hockin
1b79bbc9f4 Svc REST: rename releaseClusterIPs -> releaseIPs 2021-09-11 11:30:01 -07:00
Tim Hockin
8e330eb611 Svc REST: rename allocClusterIPs -> allocIPs 2021-09-11 11:30:01 -07:00
Tim Hockin
7d9357b181 Svc REST: rename allocUpdateServiceNodePortsNew 2021-09-11 11:30:01 -07:00
Tim Hockin
bb815e6687 Svc REST: rename allocUpdateServiceClusterIPsNew 2021-09-11 11:30:01 -07:00
Tim Hockin
3b971b137c Svc REST: rename allocServiceNodePortsNew 2021-09-11 11:30:01 -07:00
Tim Hockin
f94782b4f5 Svc REST: rename allocServiceClusterIPsNew 2021-09-11 11:30:01 -07:00
Tim Hockin
8f5189a49f Svc REST: Move tests and scaffolding around
No code edits.  Just a little whitespace, adding comments, and
re-ordering functions.
2021-09-11 11:30:01 -07:00
Tim Hockin
017a430dcd Svc REST: Move patchAllocatedValues to storage pkg
All the meaningful callers of it are in that pkg anyway.  Removes 1
FIXME.
2021-09-11 11:30:01 -07:00
Tim Hockin
4ff4160e34 Svc REST: Move normalizeClusterIPs to storage pkg
All the meaningful callers of it are in that pkg anyway.  Removes some
FIXMEs.
2021-09-11 11:30:01 -07:00
Tim Hockin
4718a0f214 DeepCopy() input objects in Service REST test
Since the PR to do this deeper in the stack was declined, we'll do it
ourselves.  This ensures that we don't accidentally mutate the input and
then compare that mutated form to the result (which caused previous test
failures).
2021-09-11 11:30:01 -07:00
Tim Hockin
4ac7c73b2e Svc REST: Remove old rest_test
All the tests have been ported to storage_test.go
2021-09-11 11:30:01 -07:00
Tim Hockin
b6da6c9c0f Svc REST: Add InternalTrafficPolicy tests
Remove older form.
2021-09-11 11:30:01 -07:00
Tim Hockin
c71467def0 Svc REST: Remove overlapping rest_tests
Most are moved to storage_test
2021-09-11 11:30:01 -07:00
Tim Hockin
12ac38f661 Svc REST: Beef up ports test, remove old form 2021-09-11 11:30:01 -07:00
Tim Hockin
652dc8787c Svc REST: Use "prove" helpers in other tests 2021-09-11 11:30:01 -07:00
Tim Hockin
245a654dec Svc REST: Rename service NewGenericREST to NewREST
Just like all the other registries.
2021-09-11 11:30:01 -07:00
Tim Hockin
03e7690cdb Svc REST: Remove old, now unused stubs 2021-09-11 11:30:01 -07:00
Tim Hockin
8e68b587e8 Svc REST: De-layering done! Convert to 1 layer
This is the culmination of all the previous commits which made this last
move less dramatic.  More tests and cleanup commits will follow.

Background, for future archaeologists:

Service has (had) an "outer" and "inner" REST handler.  This is because of how we do IP and port allocations synchronously, but since we don't have API transactions, we need to roll those back in case of a failure.  Both layers use the same `Strategy`, but the outer calls into the inner, which causes a lot of complexity in the code (including an open-coded partial reimplementation of a date-unknown snapshot of the generic REST code) and results in `Prepare` and `Validate` hooks being called twice.

The "normal" REST flow seems to be:

```
mutating webhooks
generic REST store Create {
    cleanup = BeginCreate
    BeforeCreate {
        strategy.PrepareForCreate {
            dropDisabledFields
        }
        strategy.Validate
        strategy.Canonicalize
    }
    createValidation (validating webhooks)
    storage Create
    cleanup
    AfterCreate
    Decorator
}
```

Service (before this series of commits) does:

```
mutating webhooks
svc custom Create {
    BeforeCreate {
        strategy.PrepareForCreate {
            dropDisabledFields
        }
        strategy.Validate
        strategy.Canonicalize
    }
    Allocations
    inner (generic) Create {
        cleanup = BeginCreate
        BeforeCreate {
            strategy.PrepareForCreate {
                dropDisabledFields
            }
            strategy.Validate
            strategy.Canonicalize
        }
        createValidation (validating webhooks)
        storage Create
        cleanup
        AfterCreate
        Decorator
    }
}
```

After this:

```
mutating webhooks
generic REST store Create {
    cleanup = BeginCreate
        Allocations
    BeforeCreate {
        strategy.PrepareForCreate {
            dropDisabledFields
        }
        strategy.Validate
        strategy.Canonicalize
    }
    createValidation (validating webhooks)
    storage Create
    cleanup
    AfterCreate
        Rollback allocations on error
    Decorator
}
```
2021-09-11 11:30:01 -07:00
Tim Hockin
cf4804643a Svc REST: Remove obviously unused args
This is part of the de-layering conclusion and cleanup.

Bridge the old tests into the new REST.  This will all be removed soon.
2021-09-11 11:30:01 -07:00
Tim Hockin
d30ae6a5ab Svc REST: Make ipFamilyPolicy authoritative
Previously we would try to infer the `ipFamilyPolicy` from `clusterIPs`
and/or `ipFamilies`.  That is too tricky.  Now you MUST specify
`ipFamilyPolicy` as one of the dual-stack options in order to get a
dual-stack service.
2021-09-11 11:30:01 -07:00
Tim Hockin
ca8cfdcae9 Svc REST: Fix single<->dual-stack updates
This removes the old rest_tests and adds significantly more coverage.
Maybe too much.  The v4,v6 and v6,v4 tables are identical but for the
order of families.

This exposed that `trimFieldsForDualStackDowngrade` is called too late
to do anything (since we don't run strategy twice any more).  I moved
similar logic to `PatchAllocatedValues` but I hit on some unclarity.

Specifically, consider a PATCH operation.

Assume I have a valid dual-stack service (with 2 IPs, 2 families, and
policy either require or prefer). What fields can I patch, on their own,
to trigger a downgrade to single-stack?

I think patching policy to "single" is pretty clear intent.

But what if I leave policy and only patch `ipFamilies` down to a single
value (without violating the "can't change first family" rule)?

Or what if I patch `clusterIPs` down to a single IP value?

After much discussion, we decided to make a small API change (OK since
we are beta).  When you want a dual-stack Service you MUST specify the
`ipFamilyPolicy`.  Now we can infer less and avoid ambiguity.
2021-09-11 11:30:01 -07:00
Tim Hockin
650f8cfd35 Svc REST: Validate input before IP allocation
This commit started as removing FIXME comments, but in doing so I
realized that the IP allocation process was using unvalidated user
input.  Before de-layering, validation was called twice - once before
init and once after, which the init code depended on.

Fortunately (or not?) we had duplicative checks that caught errors but
with less friendly messages.

This commit calls validation before initializing the rest of the
IP-related fields.

This also re-organizes that code a bit, cleans up error messages and
comments, and adds a test SPECIFICALLY for the errors in those cases.
2021-09-11 11:30:01 -07:00
Tim Hockin
7602260d0a Svc REST: Fix comments to make next commits easier 2021-09-11 11:30:01 -07:00
Tim Hockin
d1b83bad67 Svc REST: Move ResourceLocation() to 'inner' layer
Part of the de-layering effort.

Also move the test.
2021-09-11 11:30:01 -07:00
Tim Hockin
7887c4c8fc Svc REST: allow tests to set cluster IP families 2021-09-11 11:30:01 -07:00
Tim Hockin
aea90a2324 Svc REST: add a beforeUpdate hook in feature tests 2021-09-11 11:30:01 -07:00
Tim Hockin
ced629e657 Svc REST: Add proof funcs in feature test logic
Allows for more control of tests to assert specific things.
2021-09-11 11:30:01 -07:00
Tim Hockin
7cf75dbdd8 Svc REST: Beef up NodePort tests
Remove old test from rest_test.go.
2021-09-11 11:30:01 -07:00
Tim Hockin
7b1e43665d Svc REST: Change ETP create test to a feature test
All the same test cases and more.
2021-09-11 11:30:01 -07:00
Tim Hockin
f4521aa75a Fix validation on ETP: "" is not valid
This was causing tests to pass which ought not be passing.  This is not
an API change because we default the value of it when needed.  So we
would never see this in the wild, but it makes the tests sloppy.
2021-09-11 11:30:01 -07:00
Tim Hockin
5363f1646f Svc REST: Add new model of feature tests
This scaffolding allows us to assert more on each test case, and more
consistently.

Set input fields from output fields IFF they are expected AND not set on
input.  This allows us to verify the "after" state (expected) whether
the test case specified the value or not, and still pass the generic
cmp.Equal.

Use this in a few tests to prove its worth, more to do.

Some of the existing tests that are focused on create and delete can
probably be replaced by these.

This could be used in other test cases that are open-coding a lot of the
same stuff.  Later commits.
2021-09-11 11:30:00 -07:00
Tim Hockin
446a2c730d Svc REST: Add a test for PatchAllocatedValues 2021-09-11 11:30:00 -07:00
Tim Hockin
30bd8198e3 Svc REST: Set Cluster IPs during dry-run Update()
Dry-run should return valid results.

Also add a test.
2021-09-11 11:30:00 -07:00
Tim Hockin
ccf3376570 Svc REST: De-layer Update
This is the last layered method.  All allocator logic is moved to the
beginUpdate() path.  Removing the now-useless layer will happen in a
subsequent commit.
2021-09-11 11:30:00 -07:00
Tim Hockin
89a9ca52bc Svc REST: Add a delete-with-finalizer test
This is a long-standing bug that gets fixed "for free" in the
de-layering.
2021-09-11 11:30:00 -07:00
Tim Hockin
cb4d8700d3 Svc REST: Clean up redundant delete tests 2021-09-11 11:30:00 -07:00
Tim Hockin
61a5e7498d Svc REST: De-layer Delete
Gut the "outer" Delete() and move it to the inner AfterDelete().
2021-09-11 11:30:00 -07:00
Tim Hockin
42b53d850d Svc REST: Move test to reduce diff in next commits
No changes - just move.
2021-09-11 11:01:44 -07:00
Tim Hockin
6d640aa244 Svc REST: Remove redundant Get test 2021-09-11 11:01:32 -07:00
Tim Hockin
15c513cc36 Svc REST: IP and port reallocation
Make sure the logic that was covered in rest_test is covered in
storage_test.
2021-09-11 11:01:23 -07:00
Tim Hockin
a957f63ec5 Svc REST: HealthCheckNodePort tests
This commit ports the ExternalTrafficPolicy and HealthCheckNodePort
tests from rest_test to storage_test.  It's not a direct port, though.
I have added more cases (much more exhaustive) and more assertions.
2021-09-11 11:01:07 -07:00
Tim Hockin
2212924a96 Svc REST: Better NodePort tests
This commit ports the NodePort test from rest_test to storage_test.
It's not a direct port, though.  I have added many more cases (much more
exhaustive) and more assertions.

This includes cases for gate MixedProtocolLBService.
2021-09-11 11:00:44 -07:00
Tim Hockin
46d7289655 Svc REST: Remove redundant Create tests
These cases are all covered in storage_test.
2021-09-11 11:00:29 -07:00
Tim Hockin
0dc509a0c8 Svc REST: Test that Headless doesn't set IPs 2021-09-11 11:00:11 -07:00
Tim Hockin
9ca582f3b7 Svc REST: Test that ExternalName doesn't set IPs 2021-09-11 10:59:30 -07:00
Tim Hockin
ca4a95ee49 Svc REST: Dedup tests for defaulting 2021-09-11 10:59:02 -07:00