Commit Graph

925 Commits

Author SHA1 Message Date
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
Tim Hockin
b880d3a149 Svc REST: better test checks in new tests
"Has()" was strengthened in the older rest_test, now in the newer.
2021-09-11 10:58:32 -07:00
Tim Hockin
e338c9db4b Svc REST: Set Cluster IPs during dry-run Create
Dry-run should behave like a real API call and return valid results.
2021-09-11 10:57:01 -07:00
Tim Hockin
52856f3fbe Add dry-run support to the IP allocator subsystem 2021-09-11 10:56:39 -07:00
Tim Hockin
237434bd42 Svc REST: Overhaul Create test wrt dual-stack
This includes a few cases.

1) TestCreateIgnoresIPFamilyForExternalName: Prove that ExternalName is
ignored for dual-stack.  A small set of test cases were chosen to
demonstrate.

2) TestCreateIgnoresIPFamilyWithoutDualStack: Prove that when the
dual-stack gate is off, all services are ignored for dual-stack.  A
small set of test cases were chosen to demonstrate

3) TestCreateInitIPFields: Run over a huge array of test cases for
dual-stack.  This was generated by this program:
https://gist.github.com/thockin/cccc9c9a580b4830ee0946ddd43eeafe and
then updated by hand.
2021-09-11 10:56:03 -07:00
Tim Hockin
e4c6d0837e Svc REST: Rename some tests for clarity 2021-09-11 10:55:51 -07:00
Tim Hockin
bdbf2c6ef4 Svc REST: Allow multi-IP-family in tests 2021-09-11 10:54:24 -07:00
Tim Hockin
6cc9ef3874 Svc REST: Rename a long, hard function name 2021-09-11 10:54:03 -07:00
Tim Hockin
634055bded Svc REST: De-layer Create
Gut the "outer" Create() and move it to the inner BeginCreate().  This
uses a "transaction" type to make cleanup functions easy to read.

Background:

Service has 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 commit) 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 commit:

```
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
}
```

This same fix pattern will be applied to Delete and Update in subsequent
commits.
2021-09-11 10:51:45 -07:00
Tim Hockin
5e7e35ca45 Svc REST: Add stub begin* hooks
These will be used in the next set of commits to de-0layer service REST.
2021-09-11 10:51:09 -07:00
Tim Hockin
f3c7e846f1 Svc REST: Move allocations in Create into funcs
All the logic remains unchanged, just reorganized.  The functions are
imperfect but emphasize the change being made and can be cleaned up
subsequently.

This makes the following steps easier to comprehend.
2021-09-11 10:50:27 -07:00
Tim Hockin
960b36b124 Svc REST: Add a transaction API
This will be used in upcoming commits, but for easier history and review
it is pretty stand-alone.
2021-09-11 10:49:37 -07:00
Tim Hockin
14d0571a5f Svc REST: Don't call validation directly
The validation is called soon after anyway.
2021-09-11 10:49:13 -07:00
Tim Hockin
b76a8c3c40 Svc REST: move allocator methods -> alloc object
Move all allocator-related methods onto the alloc object so it can be
used in either REST layer.  There's an INORDINATE amount of test code
here and I am skeptical that it is all useful.  That's for later
commits.
2021-09-11 10:48:32 -07:00
Tim Hockin
89587b3c6a Svc REST: Encapsulate IP and Port allocator logic
Encapsulate the allocator logic so it can be shared across REST
layers while we stage a series of commits to get rid of one layer.
2021-09-11 10:46:48 -07:00
Tim Hockin
d13c920606 Svc: Move ETP clearing to dropTypeDependentFields
I  am not sure why ExternalTrafficPolicy was different, but this is more
consistent with other field clearing logic.
2021-09-11 10:45:30 -07:00
Kubernetes Prow Robot
85b11ad24e
Merge pull request #104699 from vincepri/generate-name-error
Object creation with generateName should return AlreadyExists instead of a Timeout
2021-09-07 17:41:20 -07:00
Vince Prignano
8a9d61278f Object creation with generateName should return a proper error
Signed-off-by: Vince Prignano <vincepri@vmware.com>
2021-09-04 07:34:32 -07:00
Kubernetes Prow Robot
295a8c1371
Merge pull request #104467 from khenidak/fix-104329
fix 104329: check for headless before trying to release the ClusterIPs
2021-09-02 10:55:39 -07:00
Kubernetes Prow Robot
2a88664ecc
Merge pull request #104652 from MikeSpreitzer/add-resourcde-config
Introduce storagebackend.ConfigForResource
2021-09-02 04:00:10 -07:00
Mike Spreitzer
85bcd243aa Introduce storagebackend.ConfigForResource
This is a Config specialized for a GroupResource.
It will support generating new resource-specific metrics.
2021-09-01 16:54:26 -04:00
Tim Hockin
73503a4936 Fix a small regression in Service updates
Prior to 1.22 a user could change NodePort values within a service
during an update, and the apiserver would allocate values for any that
were not specified.

Consider a YAML like:

```
apiVersion: v1
kind: Service
metadata:
  name: foo
spec:
  type: NodePort
  ports:
  - name: p
    port: 80
  - name: q
    port: 81
  selector:
    app: foo
```

When this is created, nodeport values will be allocated for each port.
Something like:

```
apiVersion: v1
kind: Service
metadata:
  name: foo
spec:
  clusterIP: 10.0.149.11
  type: NodePort
  ports:
  - name: p
    nodePort: 30872
    port: 80
    protocol: TCP
    targetPort: 9376
  - name: q
    nodePort: 31310
    port: 81
    protocol: TCP
    targetPort: 81
  selector:
    app: foo
```

If the user PUTs (kubectl replace) the original YAML, we would see that
`.nodePort = 0`, and allocate new ports.  This was ugly at best.

In 1.22 we fixed this to not allocate new values if we still had the old
values, but instead re-assign them.  Net new ports would still be seen
as `.nodePort = 0` and so new allocations would be made.

This broke a corner case as follows:

Prior to 1.22, the user could PUT this YAML:

```
apiVersion: v1
kind: Service
metadata:
  name: foo
spec:
  type: NodePort
  ports:
  - name: p
    nodePort: 31310 # note this is the `q` value
    port: 80
  - name: q
    # note this nodePort is not specified
    port: 81
  selector:
    app: foo
```

The `p` port would take the `q` port's value.  The `q` port would be
seen as `.nodePort = 0` and a new value allocated.  In 1.22 this results
in an error (duplicate value in `p` and `q`).

This is VERY minor but it is an API regression, which we try to avoid,
and the fix is not too horrible.

This commit adds more robust testing of this logic.
2021-08-30 12:42:17 -07:00
Tim Hockin
75dea6b8bc Service REST: Use DeepCopy() on Create() and fix tests 2021-08-22 11:59:33 -07:00
Khaled (Kal) Henidak
2f9cd08831 fix 104329: check for headless before trying to release the ClusterIPs 2021-08-20 22:03:42 +00:00
Antonio Ojea
0cd75e8fec run hack/update-netparse-cve.sh 2021-08-20 10:42:09 +02:00
Tim Hockin
28de406a37 Allocator renames for clarity
Rename `NewCIDRRange()` to `NewInMemory()`
Rename `NewAllocatorCIDRRange()` to `New()`

Rename `NewPortAllocator()` to `NewInMemory()`
Rename `NewPortAllocatorCustom()` to `New()`
2021-08-15 16:44:12 -07:00
Tim Hockin
907fceb206 Remove unused NewContiguousAllocationMap
This was used at some point in the past and never removed.  We are not
in the business of hosting unused code.
2021-08-15 14:12:14 -07:00
Antonio Ojea
ee7562a2f8 add clusterIP allocator metrics
Add 4 new metrics to the ClusterIP allocators:
- current number of available IPs per Service CIDR
- current number of used IPs per Service CIDR
- total number of allocation per Service CIDR
- total number of allocation errors per ServiceCIDR
2021-08-04 13:14:42 +02:00
Davanum Srinivas
26cc8e40a8
fix deadcode issues
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2021-07-14 08:41:21 -04:00
Tim Hockin
80dda49ce2 Service: Fix semantics for Update wrt allocations
It is not uncommon for users to Create a Service and not specify things
like ClusterIP and NodePort, which we then allocate for them.  They same
that YAML somewhere and later use it again in an Update, but then it
fails.

That's because we detected them trying to set a ClusterIP from a value
to "", which is not allowed.  If it was just NodePort, they would
actually succeed and reallocate a new port.

After this change, we try to "patch" updates where the user did not
specify those values from the old object.
2021-07-07 17:09:12 -07:00
Kubernetes Prow Robot
7bfd0b0503
Merge pull request #103467 from thockin/svc-alloc-lb-nodeports-bug
Fix small bug with AllocateLoadBalancerNodePorts
2021-07-07 17:05:40 -07:00
Kubernetes Prow Robot
8e56a34195
Merge pull request #102966 from SergeyKanzhelev/deprecateDynamicKubeletConfig
deprecate and disable by default DynamicKubeletConfig feature flag
2021-07-07 17:05:15 -07:00
Kubernetes Prow Robot
eaba61b4de
Merge pull request #103276 from NetApp/data-source-ref
Add DataSourceRef field to PVC spec
2021-07-07 08:56:44 -07:00
Ben Swartzlander
00dba76918 Add DataSourceRef field to PVC spec
Modify the behavior of the AnyVolumeDataSource alpha feature gate to enable
a new field, DataSourceRef, rather than modifying the behavior of the
existing DataSource field. This allows addition Volume Populators in a way
that doesn't risk breaking backwards compatibility, although it will
result in eventually deprecating the DataSource field.
2021-07-06 21:17:41 -04:00
Tim Hockin
5b787aa184 Clean up testing of AllocateLoadBalancerNodePorts
We only need one "tweak" function, and it should be set automatically in
most cases.
2021-07-06 16:36:51 -07:00
Tim Hockin
eae4a19bd3 Fix small bug with AllocateLoadBalancerNodePorts
If the user specified a port, DO reserve it, even if they asked you not
to allocate new ports.
2021-07-06 16:36:51 -07:00
Andrew Sy Kim
28f3f36505
Promote the ServiceInternalTrafficPolicy field to Beta and on by default (#103462)
* pkg/features: promote the ServiceInternalTrafficPolicy field to Beta and on by default

Signed-off-by: Andrew Sy Kim <kim.andrewsy@gmail.com>

* pkg/api/service/testing: update Service test fixture functions to set internalTrafficPolicy=Cluster by default

Signed-off-by: Andrew Sy Kim <kim.andrewsy@gmail.com>

* pkg/apis/core/validation: add more Service validation tests for internalTrafficPolicy

Signed-off-by: Andrew Sy Kim <kim.andrewsy@gmail.com>

* pkg/registry/core/service/storage: fix failing Service REST storage tests to use internalTrafficPolicy: Cluster

Signed-off-by: Andrew Sy Kim <kim.andrewsy@gmail.com>

* pkg/registry/core/service/storage: add two test cases for Service REST TestServiceRegistryInternalTrafficPolicyClusterThenLocal and TestServiceRegistryInternalTrafficPolicyLocalThenCluster

Signed-off-by: Andrew Sy Kim <kim.andrewsy@gmail.com>

* pkg/registry/core/service: update strategy unit tests to expect default
internalTrafficPolicy=Cluster

Signed-off-by: Andrew Sy Kim <kim.andrewsy@gmail.com>

* pkg/proxy/ipvs: fix unit test Test_EndpointSliceReadyAndTerminatingLocal to use internalTrafficPolicy=Cluster

Signed-off-by: Andrew Sy Kim <kim.andrewsy@gmail.com>

* pkg/apis/core: update fuzzers to set Service internalTrafficPolicy field

Signed-off-by: Andrew Sy Kim <kim.andrewsy@gmail.com>

* pkg/api/service/testing: refactor Service test fixtures to use Tweak funcs

Signed-off-by: Andrew Sy Kim <kim.andrewsy@gmail.com>
2021-07-06 06:16:30 -07:00
Sergey Kanzhelev
dffc2a60a2 deprecate and disable by default DynamicKubeletConfig feature flag 2021-07-02 23:53:11 +00:00
Hanlin Shi
24592ca989 Update the related tests
1. add AllocateLoadBalancerNodePorts fields in specs for validation test cases
2. update fuzzer
3. in resource quota e2e, allocate node port for loadbalancer type service and
   exceed the node port quota

Signed-off-by: Hanlin Shi <shihanlin9@gmail.com>
2021-07-02 21:58:41 +00:00
Tim Hockin
2b84b49ea9 Service REST test: Remove pointless cleanup 2021-07-01 23:24:29 -07:00
Tim Hockin
ca708fa9ac Service REST test: Fix some names 2021-07-01 23:24:24 -07:00
Tim Hockin
54b6a416fb Service REST test: better IP and port alloc checks 2021-07-01 23:01:36 -07:00
Tim Hockin
43b13840db Service REST test: remove obscure const 2021-07-01 18:26:46 -07:00
Tim Hockin
44eb475b10 Service REST test: remove unused return value 2021-07-01 18:26:45 -07:00
Tim Hockin
d6208606f3 Service REST test: remove pointless scaffolding 2021-07-01 18:26:45 -07:00
Tim Hockin
48e591eba2 Service REST test: remove obsolete setup param 2021-07-01 18:26:45 -07:00
Tim Hockin
a3b05033f6 Move endpoints test-helper funcs to a package 2021-07-01 18:26:45 -07:00
Tim Hockin
012bfaf98d Service REST test: remove last use of "inner"
This required making a more hi-fidelity fake.  That, in turn, required
fixing some tests which were just not correct.
2021-07-01 18:26:45 -07:00
Tim Hockin
22ed090e73 Service REST test: mostly remove tests of "inner"
This test was sometimes using the "inner" REST and sometimes using the
"outer" REST.  This commit changes all but one test to use the outer.
The remaining test needs rework.
2021-07-01 18:26:45 -07:00
Tim Hockin
7e8882d189 Service REST test: Remove pointless scaffolding
These fields don't add much value in actually proving it all works, and
they make the upcoming de-layering hard.
2021-07-01 18:26:45 -07:00
Tim Hockin
175f4f3387 Move service test-helper funcs to a package 2021-07-01 18:26:45 -07:00
Tim Hockin
b1fcbab801 Service REST test: helper funcs for ports, too 2021-07-01 18:26:45 -07:00
Tim Hockin
5f65ba7d76 Service REST test: Use helper funcs to streamline
This makes subsequent changes easier to see.
2021-07-01 18:26:44 -07:00
Tim Hockin
d64bb1b29e Service REST test: always check errors
This will be needed in upcoming changes.
2021-07-01 18:26:44 -07:00
Tim Hockin
d3a0332b6c Service REST test: remove unused fields
These fields are never set, so we can remove them with no change in
behavior.
2021-07-01 18:26:44 -07:00
Tim Hockin
292b1444eb Remove bad test for AllocateLoadBalancerNodePorts
If the gate is open, we should never find nil.
2021-07-01 18:26:44 -07:00
Tim Hockin
0bb280044e Fix typo in IP allocator error 2021-07-01 18:26:44 -07:00
Tim Hockin
5970c4671c Add an IPFamily() method to ipallocator 2021-07-01 18:26:44 -07:00
Tim Hockin
89b633d353 Fix doc comment 2021-07-01 18:26:44 -07:00
Chris Henzie
dba8ee229e Add validation options for PersistentVolumeClaims
These options provide an extensible way of configuring how PVCs are
validated
2021-06-28 21:24:55 -07:00
Chris Henzie
9ba0eed7c5 Add validation options for PersistentVolumes
These options provide an extensible way of configuring how PVs are
validated
2021-06-28 21:24:55 -07:00
Shiming Zhang
45ce2dfacc Treat negative as 1s in delete path 2021-06-28 11:49:39 +08:00
Antonio Ojea
fa7b5d86e6 remove duplicate validation on services
The rest api for services was validating that, on updates, both
the old and new service have the same type. That guarantees that
the type is going to be the same after that, thus we don't need
to validate the service type on the old and the new service.
2021-06-25 23:18:56 +02:00
Khaled (Kal) Henidak
2c6bba2936 fix auto upgraded preferDualStack services (in cluster upgrade) 2021-06-22 17:40:21 +00:00
Jordan Liggitt
068e4c55a8 Eliminate parallel and unnecessary embedded etcd instances 2021-06-15 09:53:06 -04:00
Andrew Sy Kim
4d38d21880 apis: remove Service topologyKeys
Signed-off-by: Andrew Sy Kim <kim.andrewsy@gmail.com>
2021-06-03 22:17:45 -04:00
Kubernetes Prow Robot
f5eded9a00
Merge pull request #100142 from Ethyling/enh-get-lastrestart
Add `LAST RESTART` column to `kubectl get pods`
2021-06-02 10:54:43 -07:00
Jordan Jacobelli
9eea445bcc Update test cases for 'RESTARTS' column in 'kubectl get pods'
Signed-off-by: Jordan Jacobelli <jordanjacobelli04@gmail.com>
2021-06-02 17:32:21 +02:00
Kubernetes Prow Robot
63c75f3766
Merge pull request #102461 from goodluckbot/apiserver-event-toSelectableFields
Improve ToSelectableFields' performance for events
2021-06-02 08:02:18 -07:00
goodluckbot
eb114115fd Improve func ToSelectableFields performance for event 2021-05-31 23:48:26 +08:00
Kubernetes Prow Robot
c115435adc
Merge pull request #101688 from liggitt/field-warnings
Add field-level warning plumbing and add pod spec warnings
2021-05-19 17:23:04 -07:00
Jordan Liggitt
f669796dfd Send pod spec warnings when creating or changing workload objects 2021-05-18 10:42:36 -04:00
Jordan Liggitt
642e6168d1 Add metadata.generation support to all pod-spec-containing types 2021-05-18 10:42:36 -04:00
Jordan Liggitt
8c8a4cf3e4 Add WarningsOnCreate,WarningsOnUpdate 2021-05-18 10:42:36 -04:00
Kubernetes Prow Robot
7563d3092e
Merge pull request #96216 from knight42/refactor/disable-insecure-port-in-ctrler-mgr
refactor: disable insecure serving in controller-manager
2021-05-10 13:49:36 -07:00
Jian Zeng
e481d99965
refactor: disable insecure serving in controller-manager
Now the following flags have no effect and would be removed in v1.24:
* `--port`
* `--address`

The insecure port flags `--port` may only be set to 0 now.

Signed-off-by: Jian Zeng <zengjian.zj@bytedance.com>
2021-05-03 00:01:49 +08:00
Kubernetes Prow Robot
972ee2d425
Merge pull request #101034 from verb/1.22-ec-api
Switch alpha Pod ephemeralcontainers API to use Pod kind
2021-04-22 06:21:41 -07:00
Andrea Nodari
09649e58b5 Check request info when updating managed fields during scale
- Test all versions to make sure each resource version is in the
  mappings
- Fail when request info contains an unrecognized version. We have tests
  that guarantee that all known versions are in the mappings. If we
  get a version in request info that is not there we should fail fast to
  prevent inconsistent behaviour (e.g. for some reason the mappings is
  not up to date).

Ensure all known versions are in mappings
2021-04-21 20:27:02 +02:00
Antoine Pelisse
816e80206c Use ScaleHandler for all scalable resources 2021-04-21 18:41:40 +02:00
Kubernetes Prow Robot
27a625cf89
Merge pull request #100724 from liggitt/eviction-v1beta1
Add policy/v1 Eviction support
2021-04-16 10:02:22 -07:00
Lee Verberne
97726a50c1 Address feedback for new /ephemeralcontainers API
* Use deep copies in `PrepareForUpdate()`
* Preserve select metadata from new pod
* Use patch to add ephemeral container `kubectl debug`
* Distinguish between pod vs /ephemeralcontainers NotFound
2021-04-16 14:08:12 +02:00
Jordan Liggitt
10b07085f8 Define constant for eviction failure cause 2021-04-14 09:12:39 -04:00
Jordan Liggitt
33ad842480 allow evictions subresource to accept policy/v1 and policy/v1beta1 2021-04-13 21:22:25 -04:00
Jordan Liggitt
40f8fb2224 Register Eviction v1 2021-04-13 17:27:42 -04:00
Lee Verberne
d22dc5cb72 Switch ephemeralcontainers SR to Pod Kind
This changes the `/ephemeralcontainers` subresource of `/pods` to use
the `Pod` kind rather than `EphemeralContainers`.

When designing this API initially it seemed preferable to create a new
kind containing only the pod's ephemeral containers, similar to how
binding and scaling work.

It later became clear that this made admission control more difficult
because the controller wouldn't be presented with the entire Pod, so we
updated this to operate on the entire Pod, similar to how `/status`
works.
2021-04-13 13:36:48 +02:00
Monis Khan
bca4993004
Update auth OWNERS files to only use aliases
Signed-off-by: Monis Khan <mok@vmware.com>
2021-04-07 10:46:03 -04:00
Kevin Delgado
a1fac8cbd9 Server-Side Apply: Status Wiping/Reset Fields
Adds and implements ResetFieldsProvder interface in order to ensure that
the fieldmanager no longer owns fields that get reset before the object
is persisted.

Co-authored-by: Kevin Wiesmueller <kwiesmul@redhat.com>
Co-authored-by: Kevin Delgado <kevindelgado@google.com>
2021-03-10 01:02:18 +00:00
Kubernetes Prow Robot
00e81db174
Merge pull request #99946 from deads2k/tidy-node-validation-master
refine validation
2021-03-09 16:08:32 -08:00
Morten Torkildsen
621aed4d32 generated 2021-03-09 10:29:11 -05:00
Morten Torkildsen
21fba79d45 Promote PDBs to GA 2021-03-09 10:29:11 -05:00
jay vyas
c94ce8c507
Add default namespace labels to all namespaces for selectors (#96968)
* namespace by name default labelling

Co-authored-by: Jordan Liggitt <jordan@liggitt.net>
Co-authored-by: Abhishek Raut <rauta@vmware.com>

* Make some logic improvement into default namespace label

* Fix unit tests

* minor change to trigger the CI

* Correct some tests and validation behaviors

* Add Canonicalize normalization and improve validation

* Remove label validation that should be dealt by strategy

* Update defaults_test.go
add fuzzer
ns spec

* remove the finalizer thingy

* Fix integration test

* Add namespace canonicalize unit test

* Improve validation code and code comments

* move validation of labels to validateupdate

* spacex will save us all

* add comment to testget

* readablility of canonicalize

* Added namespace finalize and status update validation

* comment about ungenerated names

* correcting a missing line on storage_test

* Update the namespace validation unit test

* Add more missing unit test changes

* Let's just blast the value. Also documenting the workflow here

* Remove unnecessary validations

Co-authored-by: Jordan Liggitt <jordan@liggitt.net>
Co-authored-by: Abhishek Raut <rauta@vmware.com>
Co-authored-by: Ricardo Pchevuzinske Katz <ricardo.katz@gmail.com>
2021-03-08 20:46:59 -08:00
Kubernetes Prow Robot
2783f2f76e
Merge pull request #96600 from maplain/internal-traffic-policy
Service Internal Traffic Policy
2021-03-08 11:04:12 -08:00
Kubernetes Prow Robot
f25f071af1
Merge pull request #99658 from deads2k/proxy-skip
promote AllowInsecureBackendProxy to stable
2021-03-08 07:51:42 -08:00
David Eads
bd5b1e2d05 move secret mutation from validation to prepareforupdate 2021-03-08 10:02:41 -05:00
Fangyuan Li
7ed2f1d94d Implements Service Internal Traffic Policy
1. Add API definitions;
2. Add feature gate and drops the field when feature gate is not on;
3. Set default values for the field;
4. Add API Validation
5. add kube-proxy iptables and ipvs implementations
6. add tests
2021-03-07 16:52:59 -08:00
Kubernetes Prow Robot
4e95e1df04
Merge pull request #98515 from lala123912/huge_page
Add request value verification for hugepage
2021-03-05 22:11:43 -08:00
lala123912
e162fcc1bf Add request value verification for hugepage 2021-03-05 17:36:22 +08:00
Kubernetes Prow Robot
66cbf0196b
Merge pull request #98277 from XudongLiuHarold/add-loadbalancerclass-field
Add LoadBalancerClass field in service
2021-03-04 23:56:21 -08:00
Morten Torkildsen
1e2a7f381f Add conditions to PDB status 2021-03-04 18:52:02 -08:00
Xudong Liu
72da0b1bb0 Add LoadBalancerClass field in service
KEP-1959: https://github.com/kubernetes/enhancements/tree/master/keps/sig-cloud-provider/1959-service-lb-class-field
2021-03-04 17:11:50 -08:00
Kubernetes Prow Robot
a238698ea0
Merge pull request #99446 from pohly/generic-ephemeral-enablement
Generic ephemeral volume enablement
2021-03-04 11:00:30 -08:00
Abdullah Gharaibeh
3c5f018f8e Add CrossNamespacePodAffinity quota scope and PodAffinityTerm.NamespaceSelector APIs, and CrossNamespacePodAffinity quota scope implementation. 2021-03-03 22:52:43 -05:00
Kubernetes Prow Robot
4013bd17c3
Merge pull request #99555 from thockin/dualstack-bugs-from-rest-overhaul
Two small bugs in dual-stack init
2021-03-03 14:41:29 -08:00
Tim Hockin
1e39f6ccf9 Two small bugs in dual-stack init
Imporved testing turned these up:

1) Headless+Selectorless, on a single-stack cluster, policy=PreferDual

Prior to this commit, the result was a single IPFamiliy (because we
checked that the 2nd allocator was present).  This changes that case to
populate both families (we don't care if the allocator exists), which is
the same as RequireDual.

2) ClusterIP, user specifies 2 families but no IPs

Prior to this commit, the policy was inferred to be SingleStack.  This
changes that case to correctly default to RequireDual when 2 families
are present but no IPs.
2021-03-03 09:42:02 -08:00
Supriya Premkumar
e52e5e486c
Adds ineffassign to GO linter script.
Changes:
 - Enables ineffassign check in the verify scripts.
 - Fixes lint errs.
2021-03-03 08:28:10 -08:00
David Eads
cd08de9eb0 stop using AllowInsecureBackendProxy featuregate since it is always true 2021-03-03 10:52:14 -05:00
Patrick Ohly
d64165c803 generic ephemeral volumes: fix and test apiserver feature gate
The implementation should have preserved an existing ephemeral volume
source during an update even when the feature gate is currently
disabled, but due to a cut-and-paste error it was checking for CSI
volumes instead.

The new test detected that. It's based on
https://github.com/kubernetes/kubernetes/pull/97058/files#diff-7826f7adbc1996a05ab52e3f5f02429e94b68ce6bce0dc534d1be636154fded3
2021-03-03 10:13:05 +01:00
Abdullah Gharaibeh
d7e80ab038 Implement pod deletion cost 2021-03-01 13:45:58 -05:00
Benjamin Elder
56e092e382 hack/update-bazel.sh 2021-02-28 15:17:29 -08:00
xiaofei.sun
fd62f32125 Scheduler: remove pkg/apis/core/field_constants.go 2021-02-24 18:06:29 +08:00
Kubernetes Prow Robot
e26acc06a0
Merge pull request #99098 from JornShen/cleanup_makeServiceWithClusterIp
cleanup TestNormalizeClusterIPs
2021-02-17 11:58:42 -08:00
Kubernetes Prow Robot
3d8dd2517f
Merge pull request #98201 from pacoxu/limit-range/fix
fix duplicate validation error for quota editing
2021-02-15 12:53:05 -08:00
jornshen
1e09a758c5 do some cleanup on TestNormalizeClusterIPs 2021-02-16 00:32:00 +08:00
Kubernetes Prow Robot
ee2b7a5049
Merge pull request #98049 from pacoxu/enhancements/redir-links
fix all keps links 404 for kep folder migration
2021-02-01 21:48:28 -08:00
pacoxu
a10bdfed09 fix all keps links 404 for kep folder migration
Signed-off-by: pacoxu <paco.xu@daocloud.io>
2021-02-01 19:41:59 +08:00
pacoxu
8bd7a09224 fix duplicate validation error for quota editing
Signed-off-by: pacoxu <paco.xu@daocloud.io>
2021-01-27 03:21:24 +08:00
David Eads
37cc89ed8d finish removal of exportoptions 2021-01-22 13:47:31 -05:00
Kubernetes Prow Robot
661eae7c7c
Merge pull request #97814 from deads2k/podlogs-metrics
add metrics for insecure backend proxy
2021-01-21 13:27:00 -08:00
Kubernetes Prow Robot
09bcf0723a
Merge pull request #97155 from sanwishe/master
cleanup unused type conversion
2021-01-15 11:15:51 -08:00
David Eads
782a7a5426 add metrics for insecure backend proxy 2021-01-14 15:26:37 -05:00
Kubernetes Prow Robot
94a623a45a
Merge pull request #90299 from josephw/send-static-retry-after-when-hitting-pod-disruption-budget
Set a static Retry-After when evicting a pod is not allowed.
2021-01-11 07:19:07 -08:00
Joseph Walton
fb61854bd2 Set a static Retry-After when evicting a pod is not allowed.
Follow the original TODO from back in c86b84c with the errors added
in d3be1ac. Edit the TODO to make clear that a dynamic response would
still be ideal.

Dramatically reduce the time based on suggestion in PR, and remove name from TODO
as not currently active.
2021-01-11 23:23:35 +11:00
Tim Hockin
625713008d Make REST Decorator funcs not return error 2021-01-08 11:00:39 -08:00
wojtekt
8ce71fbae2 Autogenerated 2020-12-30 16:00:41 +01:00
wojtekt
0f88bbe9b1 Promote Immutable Secrets/ConfigMaps feature to GA 2020-12-30 16:00:41 +01:00
wojtekt
c2d61896f4 Add suggestion to storage interface Delete method 2020-12-16 08:12:57 +01:00
Mingzhi Jiang
dd830ca4ee cleanup unused type conversion 2020-12-07 09:51:01 +00:00
Lars Ekman
a0e613363a service.spec.AllocateLoadBalancerNodePorts followup 2020-11-24 08:10:43 +01:00
Laszlo Janosi
c970a46bc1
Mixed protocol support for Services with type=LoadBalancer (#94028)
* Mixed protocol support for Services with type=LoadBalancer

KEP: https://github.com/kubernetes/enhancements/blob/master/keps/sig-network/20200103-mixed-protocol-lb.md
Add new feature gate to control the support of mixed protocols in Services with type=LoadBalancer
Add new fields to the ServiceStatus
  Add Ports to the LoadBalancerIngress, so cloud provider implementations can report the status of the requested load balanc
er ports
  Add ServiceCondition to the ServiceStatus so Service controllers can indicate the conditions of the Service

* regenerate conflicting stuff
2020-11-13 13:21:04 -08:00
Lars Ekman
8fca0f9955 Update generated files 2020-11-13 07:42:58 +01:00
Lars Ekman
1f4d852f2f Add service.spec.AllocateLoadBalancerNodePorts 2020-11-13 07:37:22 +01:00
Patrik Cyvoct
d29665cc17
Revert "Merge pull request #92312 from Sh4d1/kep_1860"
This reverts commit ef16faf409, reversing
changes made to 2343b8a68b.
2020-11-11 10:26:53 +01:00
Derek Carr
45bd6cb186 Downward API hugepages 2020-11-10 16:09:13 -05:00
Patrik Cyvoct
7bdf2af648
fix review
Signed-off-by: Patrik Cyvoct <patrik@ptrk.io>
2020-11-07 10:00:51 +01:00
Patrik Cyvoct
0153b96ab8
fix review
Signed-off-by: Patrik Cyvoct <patrik@ptrk.io>
2020-11-07 10:00:27 +01:00
Kubernetes Prow Robot
95c56ada4b
Merge pull request #96112 from wojtek-t/remove_variadic_from_storage_interface
Remove variadic argument from storage interface
2020-11-02 11:57:00 -08:00