Commit Graph

410 Commits

Author SHA1 Message Date
shashidharatd
c9454f81cf Auto generated bazel build file 2017-05-16 09:20:44 +05:30
shashidharatd
d0ef025455 Segregate DNS related code to separate controller 2017-05-16 09:20:44 +05:30
shashidharatd
d22527522f Fix federated service reconcilation issue due to addition of ExternalTrafficPolicy field to v1.Service 2017-05-15 10:30:51 +05:30
Jonathan MacMillan
ab101c9c74 [Federation] Unify the delivery methods in the ReplicaSet controller. 2017-05-11 15:31:39 -07:00
Kubernetes Submit Queue
15df7fedca Merge pull request #44626 from madhusudancs/fed-dns-paged-list
Automatic merge from submit-queue (batch tested with PRs 44626, 45641)

Update Google Cloud DNS provider Rrset.Get(name) method to return a list and change the `Rrset.List()` implementation to perform a paged walk

Some federated service e2e tests and a few ingress tests would become flaky after a few hundred runs. @csbell spent quite a lot of time debugging this and found out that this flakiness was due to a bug in the federated service controller deletion logic. Deletion of a federated service object triggers a logic in the controller to update the DNS records corresponding to that object. This DNS record update logic would return an error in failed runs which would in-turn cause the controller to reschedule the operation. This led to an infinite retry-failure cycle that never gave the API server a chance to garbage collect the deleted service object.

A couple of days ago we started seeing a correlation between the number of resource records in a DNS managed zone and these test failures. If you look at the test runs before and after run 2900 in the test grid - https://k8s-testgrid.appspot.com/cluster-federation#gce, you will notice that the grid became super green at 2900. That's when I deleted all the dangling DNS records from the past runs.

After some investigation yesterday, we found that `ResourceRecordSet.Get()` interface and its implementation, and `ResourceRecordSet.List()` implementation at least for Google Cloud DNS were incorrect.

This PR makes minimal set of changes (read: least invasive) in Google Cloud DNS provider implementation to fix these problems:

1. Modifies DNS provider Rrset.Get(name) interface to return multiple records and updates federated service controller.

    There can be multiple DNS resource records for a given name. They can vary by type, ttl, rrdata and a number of various other parameters. It is incorrect to return a single resource record for a given name.

    This change updates the Get interface to return multiple records for a given name and uses this list in the federated service controller to perform DNS operations.

2. Update Google Cloud DNS List implementation to perform a paged walk of lists to aggregate all the DNS records.

    The current `List()` implementation just lists the DNS resorce records in a given managed zone once and retruns the list. It neither performs a paged walk nor does it consider the `page_token` in the returned response.

    This change walks all the pages and aggregates the records in the pages and returns the aggregated list. This is potentially dangerous as it can blow up memory if there are a huge number of records in the given managed zone. But this is the best we can do without changing the provider interface too much. 

    Next step is to define a new paged list interface and implement it.

**Release note**:
```release-note
NONE
```

/assign @csbell 

cc @justinsb @shashidharatd @quinton-hoole @kubernetes/sig-federation-pr-reviews
2017-05-11 03:59:35 -07:00
Madhusudan.C.S
4bde13ac62 Remove all the existing records before creating new ones to avoid DNS misconfiguration.
When we fetch the dns records by name, we get a list of records that match
the given name. As an optimization we look up to see if the new record we
want to create is already in the returned list to avoid performing any updates.

However, when the new record we want to create isn't in the returned list, it
is hard to say if the returned list contains the list of records that we want
to retain. For example, we might get a list of A records and we want to create
a CNAME record. Creating a new CNAME record without removing the A records is
a DNS misconfiguration. So to play safe we just remove all the existing records
in the list and create the new desired record.

**Note**: This is the opposite of what I said here - https://reviewable.kubernetes.io/reviews/kubernetes/kubernetes/44626#-Ki9xQOzybryHvsxNrra.
2017-05-11 00:47:11 -07:00
Kubernetes Submit Queue
c2f6ccf0ef Merge pull request #45256 from perotinus/rs_noindexer
Automatic merge from submit-queue (batch tested with PRs 45556, 45561, 45256)

[Federation] Replace the indexing lister with a regular store in the replicaset controller

This is part of the refactoring work to allow the replicaset controller to use the generic sync controller.

None of the other controllers use a lister, including the deployment controller

**Release note**:
```release-note
NONE
```
2017-05-10 22:24:43 -07:00
Jonathan MacMillan
6f6955819f [Federation] Replace the indexing store with a regular store in the replicaset controller. 2017-05-10 11:37:05 -07:00
Maru Newby
3f2dab896c fed: Provide updater timeout to instance rather than to Update() 2017-05-10 09:18:37 -07:00
Madhusudan.C.S
704d13bfc8 Modify the DNS provider Rrset.Get(name) interface to return multiple records and update federated service controller.
There can be multiple DNS resource records for a given name. They can
vary by type, ttl, rrdata and a number of various other parameters. It
is incorrect to return a single resource record for a given name.

This change updates the Get interface to return multiple records for a given
name and uses this list in the federated service controller to perform
DNS operations.
2017-05-10 00:03:41 -07:00
Jonathan MacMillan
6856dad472 [Federation] Add a worker queue to the generic sync controller. 2017-05-09 15:40:42 -07:00
Kubernetes Submit Queue
8f9216a76f Merge pull request #45218 from NickrenREN/fed-useragent
Automatic merge from submit-queue

Keep UserAgentName style consistent

Keep using UserAgentName for controllers  and add some logs for debugging

**Release note**:

```release-note
NONE
```
2017-05-05 00:49:32 -07:00
NickrenREN
7922f568bf Add ConcurrentDeploymentSyncs to avoid reuse ConcurrentDeploymentSyncs and keep UserAgentName var style consistent
Add some logs for debugging and add concurrent-deployment-syncs flag
2017-05-05 10:19:38 +08:00
Maru Newby
00ea2eb1cb fed: Make federated updater responsible for recording events 2017-05-04 12:14:10 -07:00
Maru Newby
fd4ff0caa5 fed: Fix deletion helper to use namespace-qualified object names 2017-05-04 07:53:17 -07:00
Kubernetes Submit Queue
7f2011c160 Merge pull request #45225 from FengyunPan/update-event-type
Automatic merge from submit-queue (batch tested with PRs 40544, 44338, 45225)

[Federation]Update event type

Use EventTypeWarning instead of EventTypeNormal when get failure
Left behind after pr #40296
2017-05-02 13:03:59 -07:00
FengyunPan
eb8f5d3508 [Federation]Update event type 2017-05-02 18:43:53 +08:00
Kubernetes Submit Queue
8f6df26755 Merge pull request #44545 from FengyunPan/remove-GetClientsetForCluster
Automatic merge from submit-queue

Remove GetClientsetForCluster()

The newClusterClientset() has insteaded of GetClientsetForCluster(),
and GetClientsetForCluster() run wrong. Let's remove it.
2017-05-01 20:39:47 -07:00
Kubernetes Submit Queue
9bce5f01c8 Merge pull request #44483 from FengyunPan/ignore-notFound2
Automatic merge from submit-queue

Ignore IsNotFound error

IsNotFound error is fine since that means the object is
deleted already, so we should check err and ignore err
before returning.
2017-04-30 01:49:10 -07:00
Kubernetes Submit Queue
a984a7ed09 Merge pull request #44980 from csbell/sync-daemonset
Automatic merge from submit-queue (batch tested with PRs 42740, 44980, 45039, 41627, 45044)

[Federation] Convert Daemonset to use the generic sync controller

To be rebased on master when @perotinus's configmaps PR merges.

Tested integration and e2e.
2017-04-27 13:27:02 -07:00
Christian Bell
15e81959e9 [Federation] Convert Daemonset to use the generic sync controller 2017-04-27 08:07:33 -07:00
FengyunPan
7d4c66c5b5 Cleanup storeToClusterConditionLister
ClusterConditionPredicate() has been deleted,
storeToClusterConditionLister will be unused.
2017-04-27 11:51:26 +08:00
FengyunPan
2077a5ce2e Remove incorrect and unused function
The newClusterClientset() has insteaded of GetClientsetForCluster(),
and GetClientsetForCluster() run wrong. Let's remove it.
2017-04-27 09:49:59 +08:00
shashidharatd
b0f8de7303 Auto generated bazel build file 2017-04-26 22:07:21 +05:30
shashidharatd
d2462c79bd Remove unused code in federation service controller 2017-04-26 22:06:09 +05:30
Kubernetes Submit Queue
2d79d53fb2 Merge pull request #41258 from shashidharatd/federation-service-controller-1
Automatic merge from submit-queue (batch tested with PRs 44942, 41258)

[Federation] Use federated informer for service controller and annotations to store lb ingress

**What this PR does / why we need it**:
This is breaking up of the PR #40296 into smaller one. please refer to #41253

**Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes #
Handles 2 tasks in #41253
Fixes issues in #27623, #35827

**Special notes for your reviewer**:

**Release note**:
```
NONE
```

cc @quinton-hoole @nikhiljindal @kubernetes/sig-federation-pr-reviews
2017-04-26 08:57:38 -07:00
Jonathan MacMillan
5336f2de05 [Federation] Convert ConfigMaps to use the generic sync controller. 2017-04-25 14:13:28 -07:00
shashidharatd
950db8e0a1 Handle review comments 2017-04-24 10:45:14 +05:30
nikhiljindal
ee8379c5b3 Autogenerated bazel changes 2017-04-22 18:23:52 -07:00
nikhiljindal
c82c1b05fd Updating tests 2017-04-22 18:23:51 -07:00
nikhiljindal
df1288c3fa Using apimachinerymeta to manipulate finalizers to remove duplicate code 2017-04-22 18:23:51 -07:00
Kubernetes Submit Queue
3cc0e4b5b8 Merge pull request #44704 from caiyixiang/del_unuse_const
Automatic merge from submit-queue (batch tested with PRs 44722, 44704, 44681, 44494, 39732)

delete unuse const

delete unuseful const
2017-04-20 16:00:58 -07:00
caiyixiang
31829850b9 delete unuse const 2017-04-20 15:17:36 +08:00
shashidharatd
36e7ed4cae Auto generated code 2017-04-20 10:37:50 +05:30
shashidharatd
3cb4d69c0b Add new unit tests for federated service dns 2017-04-20 10:37:50 +05:30
shashidharatd
721224d72a Add new unit tests for federated service controller 2017-04-20 10:37:50 +05:30
shashidharatd
d00eca48da Use federated informer framework and use annotations to store lb ingress 2017-04-20 10:37:50 +05:30
shashidharatd
bacd7b7454 Add few new fake hooks to test 2017-04-20 08:55:36 +05:30
shashidharatd
b28f41eb02 Add new ResourceEventHandlerFuncs to federated informer 2017-04-20 08:55:36 +05:30
shashidharatd
58b2cce95e Add types for federated service ingress annotation 2017-04-20 08:55:36 +05:30
FengyunPan
1bad02cb22 Use const value for pod's conditions 2017-04-20 10:43:24 +08:00
FengyunPan
d1e018b06f Ignore IsNotFound error
IsNotFound error is fine since that means the object is
deleted already, so we should ignore it.
2017-04-20 08:59:42 +08:00
Kubernetes Submit Queue
53258ba679 Merge pull request #44366 from therc/patch-3
Automatic merge from submit-queue

Fix ensureDnsRecords comments for federated services

I went to look at the source comments, because the documentation is not exhaustive about what kind of DNS records are created for federated services (and http://blog.kubernetes.io/2016/07/cross-cluster-services.html is wrong...).
It turns out that even the comment is not in sync with the code: two out of three records listed use `.federation`, while the author probably meant `.mydomain.com` (which has less chance of getting mixed up with `myfed`). I fixed those, as well as a few spelling and parenthesis errors. Hopefully this will help others save time and not scratch their heads.

cc @quinton-hoole
2017-04-18 23:55:49 -07:00
Kubernetes Submit Queue
aa43023fd7 Merge pull request #44526 from FengyunPan/fix-UpdateClusterStatus-panic
Automatic merge from submit-queue (batch tested with PRs 44469, 44566, 44467, 44526)

[Federation]Fix panic: index out of range

When the number of clusterStatusNew's Conditions is different from
the number of clusterStatusOld's Conditions, clustercontroller
will panic. We should check it before comparing.
2017-04-17 20:07:01 -07:00
Maru Newby
cca465e347 fed: Rename 'secret' controller package to 'sync' 2017-04-17 09:09:41 -07:00
Maru Newby
2c75aeed02 fed: mv pkg/typeadapters pkg/federatedtypes 2017-04-16 21:30:52 -07:00
Maru Newby
1ebffa7112 fed: adapter registry -> type registry to enable ctlr mgr use 2017-04-16 21:30:52 -07:00
Maru Newby
6f061f7962 fed: Update crud integration test to use the the adapter registry 2017-04-16 21:30:09 -07:00
FengyunPan
8886574a67 [Federation]Fix panic: index out of range
When the number of clusterStatusNew's Conditions is different from
the number of clusterStatusOld's Conditions, clustercontroller
will panic. We should check it before comparing.
2017-04-16 19:40:16 +08:00
Mike Danese
a05c3c0efd autogenerated 2017-04-14 10:40:57 -07:00