Commit Graph

730 Commits (baf2f85e738d83e8be6d1d75fed3a203b529a887)

Author SHA1 Message Date
Irfan Ur Rehman e825ca53bd [Federation][Kubefed] Address review comment 2017-06-25 22:23:21 +05:30
FengyunPan 26c6cb3877 [Federation]Remove duplicate constants 2017-06-24 11:14:50 +08:00
Jonathan MacMillan 16943f6f30 [Federation] Convert the ReplicaSet controller to a sync controller. 2017-06-22 17:47:43 -07:00
Chao Xu 60604f8818 run hack/update-all 2017-06-22 11:31:03 -07:00
Chao Xu 945593d4de manually fix unit tests 2017-06-22 11:30:59 -07:00
Chao Xu f2d3220a11 run root-rewrite-import-client-go-api-types 2017-06-22 11:30:59 -07:00
Chao Xu cde4772928 run ./root-rewrite-all-other-apis.sh, then run make all, pkg/... compiles 2017-06-22 11:30:52 -07:00
Chao Xu f4989a45a5 run root-rewrite-v1-..., compile 2017-06-22 10:25:57 -07:00
Kubernetes Submit Queue d86c267112 Merge pull request #46099 from shashidharatd/revert-45798-federated-service
Automatic merge from submit-queue (batch tested with PRs 47851, 47824, 47858, 46099)

Revert "[Federation] Fix federated service reconcilation issue due to addition of External…"

Reverts kubernetes/kubernetes#45798

Reverting the temporary fix as the problem is fixed in #45869.
with that fix federation also can default ExternalTrafficLocalOnly if not set.

Issue: #45812

cc @MrHohn @madhusudancs @kubernetes/sig-federation-bugs
2017-06-21 15:21:19 -07:00
Kubernetes Submit Queue 0a1e20d605 Merge pull request #47473 from janetkuo/revert-47103
Automatic merge from submit-queue (batch tested with PRs 47451, 47410, 47598, 47616, 47473)

Revert "Ignore `daemonset-controller-hash` label key in federation before comparing the federated object with its cluster equivalent."

This reverts commit 3530c9ce87.

~This needs to wait for #47258, otherwise federation test won't pass~ (merged)

**Release note**:

```release-note
NONE
```
2017-06-15 19:52:15 -07:00
Kubernetes Submit Queue ce76bab3b3 Merge pull request #46960 from lukaszo/fedint
Automatic merge from submit-queue

Add NodeInternalIP as a fallback to federation api-server nodeport service

Previously NodeLegacyHostIP was used as a fallback (see #41243) but in 1.7 it was removed (#44830)
Now clusters where nodes have not set ExternalIP can not be used by kubefed to setup federation.

cc @shashidharatd 

```release-note
kubefed will now configure NodeInternalIP as the federation API server endpoint when NodeExternalIP is unavailable for federation API servers exposed as NodePort services
```
2017-06-14 07:52:12 -07:00
Janet Kuo 1dc3b77580 Revert "Ignore `daemonset-controller-hash` label key in federation before comparing the federated object with its cluster equivalent."
This reverts commit 3530c9ce87.
2017-06-13 17:00:27 -07:00
Konstantinos Tsakalozos 8c1e0593bb Use a pointer to mark the nodeport port, if any. 2017-06-13 12:58:53 +03:00
Derek Carr 77f5721152 Incorrect output in kubefed init 2017-06-10 14:48:26 -04:00
Madhusudan.C.S 3530c9ce87 Ignore `daemonset-controller-hash` label key in federation before comparing the federated object with its cluster equivalent.
Kubernetes daemonset controller writes a daemonset's hash to the object
label as an optimization to avoid recomputing it every time. Adding a
new label to the object that the federation is unaware of causes
problems because federated controllers compare the objects in
federation and their equivalents in clusters and try to reconcile them.
This leads to a constant fight between the federated daemonset
controller and the cluster controllers, and they never reach a stable
state.

Ideally, cluster components should not update an object's spec or
metadata in a way federation cannot replicate. They can update an
object's status though. Therefore, this daemonset hash should be a
field in daemonset's status, not a label in object meta. @janetkuo says
that this label is only a short term solution. In the near future, they
are going to replace it with revision numbers in daemonset status. We
can then rip this bandaid out.
2017-06-07 09:28:48 -07:00
Konstantinos Tsakalozos 538e57713e Fixing style errors 2017-06-06 12:20:03 +03:00
Clayton Coleman 034f06d7e4
Remove Initializers from federation 2017-06-05 19:12:36 -04:00
Kubernetes Submit Queue 6236522738 Merge pull request #46498 from zjj2wry/adherence
Automatic merge from submit-queue (batch tested with PRs 45871, 46498, 46729, 46144, 46804)

Fix some comments in dnsprovider

**What this PR does / why we need it**:

**Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes #

**Special notes for your reviewer**:

**Release note**:

```release-note
NONE
```
2017-06-05 03:06:22 -07:00
Łukasz Oleś 6e6c903a04 Add NodeInternalIP as a fallback to federation api-server nodeport service 2017-06-05 11:28:05 +02:00
Kubernetes Submit Queue 445795186d Merge pull request #46483 from shashidharatd/fed-sc-ut-delete
Automatic merge from submit-queue (batch tested with PRs 36721, 46483, 45500, 46724, 46036)

Federation: Minor corrections in service controller and add a unit testcase

**What this PR does / why we need it**:
This PR fixes few outdated comments in federation service controller and few other minor fixes.
This also adds a unit test case to test federated service deletion.


/assign @quinton-hoole 
/cc @marun @kubernetes/sig-federation-pr-reviews 

```release-note
NONE
```
2017-06-03 08:08:38 -07:00
Kubernetes Submit Queue 07f85565a2 Merge pull request #36721 from smarterclayton/initializers
Automatic merge from submit-queue

Add initializer support to admission and uninitialized filtering to rest storage

Initializers are the opposite of finalizers - they allow API clients to react to object creation and populate fields prior to other clients seeing them.

High level description:

1. Add `metadata.initializers` field to all objects
2. By default, filter objects with > 0 initializers from LIST and WATCH to preserve legacy client behavior (known as partially-initialized objects)
3. Add an admission controller that populates .initializer values per type, and denies mutation of initializers except by certain privilege levels (you must have the `initialize` verb on a resource)
4. Allow partially-initialized objects to be viewed via LIST and WATCH for initializer types
5. When creating objects, the object is "held" by the server until the initializers list is empty
6. Allow some creators to bypass initialization (set initializers to `[]`), or to have the result returned immediately when the object is created.

The code here should be backwards compatible for all clients because they do not see partially initialized objects unless they GET the resource directly. The watch cache makes checking for partially initialized objects cheap. Some reflectors may need to change to ask for partially-initialized objects.

```release-note
Kubernetes resources, when the `Initializers` admission controller is enabled, can be initialized (defaulting or other additive functions) by other agents in the system prior to those resources being visible to other clients.  An initialized resource is not visible to clients unless they request (for get, list, or watch) to see uninitialized resources with the `?includeUninitialized=true` query parameter.  Once the initializers have completed the resource is then visible.  Clients must have the the ability to perform the `initialize` action on a resource in order to modify it prior to initialization being completed.
```
2017-06-03 07:16:52 -07:00
Irfan Ur Rehman bc9852fca4 [Federation][Kubefed] Support documentation for kubefed and its sub commands 2017-06-03 17:11:36 +05:30
Kubernetes Submit Queue 348bf1e032 Merge pull request #46627 from deads2k/api-12-labels
Automatic merge from submit-queue (batch tested with PRs 46239, 46627, 46346, 46388, 46524)

move labels to components which own the APIs

During the apimachinery split in 1.6, we accidentally moved several label APIs into apimachinery.  They don't belong there, since the individual APIs are not general machinery concerns, but instead are the concern of particular components: most commonly the kubelet.  This pull moves the labels into their owning components and out of API machinery.

@kubernetes/sig-api-machinery-misc @kubernetes/api-reviewers @kubernetes/api-approvers 
@derekwaynecarr  since most of these are related to the kubelet
2017-06-02 23:37:38 -07:00
Clayton Coleman 4ce3907639
Add Initializers to all admission control paths by default 2017-06-02 22:09:04 -04:00
Kubernetes Submit Queue 77710c41bb Merge pull request #45563 from perotinus/rssyncconversion
Automatic merge from submit-queue (batch tested with PRs 46801, 45184, 45930, 46192, 45563)

[Federation] Add a SchedulingAdapter that can extend the FederatedTypeAdapter and that provides hooks for scheduling objects into clusters.

**Release note**:
```release-note
NONE
```
2017-06-02 18:06:00 -07:00
zhengjiajin 6bc2d4257b fix some err message 2017-06-02 18:33:05 +08:00
Konstantinos Tsakalozos e78699558b Do not retunr svc in case of error. Rename apiServerNodePortPort. 2017-06-01 16:31:01 +03:00
Kubernetes Submit Queue 3e1d68624e Merge pull request #46323 from marun/fed-kubefed-beta-storage-class-annotation
Automatic merge from submit-queue (batch tested with PRs 46686, 45049, 46323, 45708, 46487)

[Federation][kubefed]: Use StorageClassName for etcd pvc

This PR updates kubefed to use the StorageClassName field [added in 1.6](http://blog.kubernetes.io/2017/03/dynamic-provisioning-and-storage-classes-kubernetes.html
) for etcd's pvc to allow the user to specify which storage class they want to use.  If no value is provided to ``kubefed init``, the field will not be set, and initialization of the pvc may fail on a cluster without a default storage class configured.

The alpha annotation that was previously used (``volume.alpha.kubernetes.io/storage-class``) was deprecated as of 1.4 according to the following blog post:

http://blog.kubernetes.io/2016/10/dynamic-provisioning-and-storage-in-kubernetes.html

**Release note**:

```
'kubefed init' has been updated to support specification of the storage class (via --etcd-pv-storage-class) for the Persistent Volume Claim (PVC) used for etcd storage.  If --etcd-pv-storage-class is not specified, the default storage class configured for the cluster will be used.
```

cc: @kubernetes/sig-federation-pr-reviews
2017-06-01 03:42:07 -07:00
shashidharatd b4ddf4720d Auto generated files 2017-06-01 06:14:56 +05:30
shashidharatd 296fe66bf7 Add federated service delete unit testcase 2017-06-01 06:14:55 +05:30
shashidharatd be0d7f0aeb Add RegisterFakeOnDelete to test federation object deletion 2017-06-01 06:14:55 +05:30
shashidharatd 80ceb5b3d6 Some minor corrections in service controller 2017-06-01 06:14:55 +05:30
deads2k 954eb3ceb9 move labels to components which own the APIs 2017-05-31 10:32:06 -04:00
Kubernetes Submit Queue 9c7b59778c Merge pull request #46394 from alexandercampbell/write-help-messages-to-stdout
Automatic merge from submit-queue (batch tested with PRs 46394, 46650, 46436, 46673, 46212)

Write "kubectl options" help message to stdout, not stderr

Fix a very minor issue causing `kubectl` to write its help messages to `stderr` instead of `stdout`.

Try this:

`kubectl options | grep log`

It should print only the options related to logging, but right now it prints the entire help menu (since it's printing to stderr).

This patch brings us closer to unix convention and reduces user friction.

~~Another use case (if a user can't remember whether it's `-r` or `-R` for recursion):~~

~~`kubectl patch -h | grep recursive`~~

Update: this patch only affects `kubectl options`. The other commands are working as intended.

**Release note**:

```release-note
NONE
```
2017-05-31 00:14:00 -07:00
Jonathan MacMillan 1130b368eb [Federation] Add a SchedulingAdapter that can extend the FederatedTypeAdapter and that provides hooks for scheduling objects into clusters. 2017-05-30 12:08:53 -07:00
Kubernetes Submit Queue cd2e304360 Merge pull request #45534 from YuPengZTE/devPodStatus
Automatic merge from submit-queue (batch tested with PRs 45534, 37212, 46613, 46350)

check err

Signed-off-by: yupengzte <yu.peng36@zte.com.cn>



**What this PR does / why we need it**:

**Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes #

**Special notes for your reviewer**:

**Release note**:

```release-note
```
2017-05-30 04:45:59 -07:00
Alexander Campbell 0d65d9594c cmd/options: `kubectl options` writes to `out` stream
Previous behavior was to write to stderr (thanks to the fallback system
in the Cobra library), which made it difficult to grep for flags.

For example:

	kubectl options | grep recursive
2017-05-28 11:23:44 -07:00
Kubernetes Submit Queue f8c90e04cd Merge pull request #46252 from perotinus/cs
Automatic merge from submit-queue (batch tested with PRs 46252, 45524, 46236, 46277, 46522)

[Federation] Refactor the cluster selection logic in the sync controller

This is intended to make it easier to define the interaction between cluster selection and scheduling preferences in the sync controller when used for workload types.

**Release note**:

```release-note
NONE
```
2017-05-26 19:47:56 -07:00
Kubernetes Submit Queue b30ed6d7b8 Merge pull request #46019 from YuPengZTE/devAnalysePods
Automatic merge from submit-queue (batch tested with PRs 46450, 46272, 46453, 46019, 46367)

check err

Signed-off-by: yupengzte <yu.peng36@zte.com.cn>



**What this PR does / why we need it**:
When the err in not nil, the podStatus is nil, it is dangerous "podStatus[cluster.Name].RunningAndReady".
**Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes #

**Special notes for your reviewer**:

**Release note**:

```release-note
```
2017-05-26 18:49:02 -07:00
Kubernetes Submit Queue 63857a35ba Merge pull request #46453 from emaildanwilson/fedClusterSelectorIngress
Automatic merge from submit-queue (batch tested with PRs 46450, 46272, 46453, 46019, 46367)

Add ClusterSelector to Ingress Controller

This pull request adds ClusterSelector to the Federated Ingress Controller ref: design #29887 
This back ports the same functionality from the sync controller (merged pull #40234) in order to make this feature available across all Controllers for the 1.7 release.

cc: @kubernetes/sig-federation-pr-reviews @shashidharatd

**Release note**:
```
The annotation `federation.alpha.kubernetes.io/cluster-selector` can be used with Ingress objects to target federated clusters by label.
```
2017-05-26 18:49:00 -07:00
Kubernetes Submit Queue d10c9975dc Merge pull request #46118 from shashidharatd/federation-dns-controller
Automatic merge from submit-queue

[Federation] Move service dns controller to its own package

This PR does nothing but just moves service dns controller code to its own package.

**Release note**:
```release-note
NONE
```
cc @kubernetes/sig-federation-pr-reviews 
/assign @marun
2017-05-26 09:11:00 -07:00
Kubernetes Submit Queue 9ecf57e39c Merge pull request #46288 from henriquetruta/fix_typo_test
Automatic merge from submit-queue

Fix typo in test_helper

`CompareObjectMeta` is comparting Name attribute, but
logging Namespace. Looks like a copy/paste error.
2017-05-26 08:12:05 -07:00
zhengjiajin f5af345de2 Fix some comments in dnsprovider 2017-05-26 18:53:11 +08:00
shashidharatd 8ef48a93d7 Auto generated files 2017-05-26 12:40:09 +05:30
shashidharatd 62b203fc3c Move service dns controller to its own package 2017-05-26 12:39:14 +05:30
Kubernetes Submit Queue f006dcc9e1 Merge pull request #45492 from matt-potter/multizone-dns-fed
Automatic merge from submit-queue (batch tested with PRs 46429, 46308, 46395, 45867, 45492)

deduplicate endpoints before DNS registration

**What this PR does / why we need it**: Multizone clusters will return duplicated endpoints to the federation controller manager. The FCM will then attempt to create an A record with duplicate entries, which will fail. As a result, federated services on multi-AZ clusters don't work right now. This PR deduplicates the endpoint IPs before attempting the DNS record registration. 

**Which issue this PR fixes**: fixes #35997

**Special notes for your reviewer**:
I believe there is a lot of refactoring required with multizone federated clusters, most notably with regard to AWS and optimising for ALIAS records rather than A, but this PR will at least allow basic functionality to work.

```release-note NONE
```
2017-05-25 22:42:11 -07:00
emaildanwilson 0a2b4742f5 Add ClusterSelector to Ingress Controller
fix log messages
2017-05-25 13:10:18 -07:00
Maru Newby 2c886e93e9 kubefed: Use StoraceClassName class field for etcd pvc 2017-05-25 10:21:08 -07:00
Kubernetes Submit Queue 9a33db8a4f Merge pull request #46248 from emaildanwilson/fedClusterSelectorServices
Automatic merge from submit-queue (batch tested with PRs 44774, 46266, 46248, 46403, 46430)

[Federation] ClusterSelector for Service Controller

This pull request adds ClusterSelector to the Federated Service Controller ref: design #29887 This back ports the same functionality from the sync controller (merged pull #40234).

cc: @nikhiljindal @marun
2017-05-25 06:17:58 -07:00
Henrique Truta 06b634d616 Fix typo in test_helper
`CompareObjectMeta` is comparting Name attribute, but
logging Namespace. Looks like a copy/paste error.
2017-05-25 10:07:10 -03:00
Jonathan MacMillan 748ea1109d [Federation] Uniquify the ClusterRole and ClusterRoleBinding names created by . 2017-05-24 12:04:16 -07:00
Jonathan MacMillan b5c6af7b42 [Federation] Refactor the cluster selection logic in the sync controller.
This is intended to make it easier to define the interaction between cluster selection and scheduling preferences in the sync controller when used for workload types.
2017-05-24 11:06:53 -07:00
emaildanwilson c68bf0b260 add ClusterSelector to services 2017-05-24 09:57:04 -07:00
Matt Potter 76a95e8ce8 refactor to remove loop / use sets.String{} 2017-05-24 13:57:08 +01:00
Kubernetes Submit Queue f30443cacc Merge pull request #42042 from perotinus/svcaccounts
Automatic merge from submit-queue (batch tested with PRs 42042, 46139, 46126, 46258, 46312)

[Federation] Use service accounts instead of the user's credentials when accessing joined clusters' API servers.

Fixes #41267.

Release notes:
```release-note
Modifies kubefed to create and the federation controller manager to use credentials associated with a service account rather than the user's credentials.
```
2017-05-23 19:42:57 -07:00
Konstantinos Tsakalozos 462b8d87cc Check uper limit of port and ensure 0 corresponds to random port 2017-05-23 16:15:49 +03:00
Konstantinos Tsakalozos 1ffcba7d83 Adding option to set the federation api server port if nodeport is set 2017-05-23 14:00:47 +03:00
Matt Potter 743cc5d685 autogen BUILD file 2017-05-23 11:37:48 +01:00
Matt Potter ae102d64c4 refactor to use sets.String 2017-05-23 11:37:48 +01:00
Matt Potter b8c0314861 deduplicate endpoints before DNS registration 2017-05-23 11:37:48 +01:00
Maru Newby 080d1081d0 fed: Add support for etcd image override to kubefed init 2017-05-22 15:16:41 -07:00
Kubernetes Submit Queue 06c12e717a Merge pull request #46071 from emaildanwilson/fedClusterSelectorIntegration
Automatic merge from submit-queue

[Federation] ClusterSelector Integration Testing

This pull request adds integration testing for the federated ClusterSelector ref: design #29887 merged pull #40234

cc: @nikhiljindal @marun
2017-05-21 23:18:44 -07:00
Kubernetes Submit Queue 95ce463e95 Merge pull request #46020 from marun/fed-override-server-image-default
Automatic merge from submit-queue

[Federation][kubefed]: Move server image definition to cmd

This enables consumers like openshift to provide a different default without editing the kubefed init logic.

cc: @kubernetes/sig-federation-pr-reviews
2017-05-20 14:30:55 -07:00
Jonathan MacMillan af2a8f7e8a [Federation] Use service accounts instead of the user's credentials when accessing joined clusters' API servers. 2017-05-19 18:05:09 -07:00
emaildanwilson 2cef454fd3 fed cluster selector integration test
updates from review
2017-05-19 13:47:52 -07:00
Shashidhara T D 40c32b02d7 Revert "[Federation] Fix federated service reconcilation issue due to addition of External…" 2017-05-19 18:29:07 +05:30
Maru Newby b4381d0c44 fed: Move kubefed server image definition to cmd
This enables consumers like openshift to provide a different default
without editing the kubefed init logic.
2017-05-18 14:25:44 -07:00
Maru Newby 37cb9c4dc2 fed: Fix bad logic of deletion error handling for federated updater 2017-05-18 14:21:55 -07:00
yupengzte 443228d8c4 check err
Signed-off-by: yupengzte <yu.peng36@zte.com.cn>
2017-05-18 15:46:39 +08:00
Kubernetes Submit Queue ca75521199 Merge pull request #40234 from emaildanwilson/fedTargetClusterByLabel
Automatic merge from submit-queue (batch tested with PRs 40234, 45885, 42975)

Fed target cluster by label for sync controller

[use clusterselector w/ federated configmap deploys](667dc77444)

**What this PR does / why we need it**: adds the ability to indicate objects are sent to subsets of federated clusters ref #29887 

**Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes

**Special notes for your reviewer**: 

**Release note**:

```release-note
```
2017-05-17 20:27:49 -07:00
Wilson, Dan 32787c5258 use clusterselector w/ federated configmap deploys
fix test error formatting

updates from comments

update gofmt

simplify tests

add to new sync controller

add tests

remove configmap changes due to rebase

updates from review

refactor tests to be based on operations

improvements from review

updates from rebase

rebase to #45374

updates from review

refactor SendToCluster for tests

fix import order

rebase to upstream
2017-05-17 13:48:57 -07:00
Maru Newby ee5dbf103e fed: Remove redundant unit tests
The equivalent coverage is provided by integration tests.
2017-05-17 07:17:47 -07:00
Maru Newby 578f17c668 fed: Add integration testing for cluster addition 2017-05-17 05:04:35 -07:00
Kubernetes Submit Queue a45a1ef28f Merge pull request #42895 from shashidharatd/coredns-2
Automatic merge from submit-queue (batch tested with PRs 42895, 45940)

[Federation] Automate configuring nameserver in cluster-dns for CoreDNS provider

Addresses issue #42894 #42822

**Release note**:
```
[Federation] CoreDNS server will be automatically added to nameserver resolv.conf chain When using CoreDNS as dns provider for federation during federation join.
```
cc @madhusudancs @kubernetes/sig-federation-bugs
2017-05-17 03:22:49 -07:00
Kubernetes Submit Queue b8f084a6c5 Merge pull request #45034 from shashidharatd/federation-service-controller-3
Automatic merge from submit-queue (batch tested with PRs 45247, 45810, 45034, 45898, 45899)

[Federation] Segregate DNS related code to separate controller

**What this PR does / why we need it**:
This is the continuation of service controller re-factor work as outlined in #41253
This PR segregates DNS related code from service controller to another controller `service-dns controller` which manages the DNS records on the configured DNS provider.
`service-dns controller` monitors the federated services for the ingress annotations and create/update/delete DNS records accordingly.
`service-dns controller` can be optionally disabled and DNS record management could be done by third party components by monitoring the ingress annotations on federated services. (This would enable something like federation middleware for CoreDNS where federation api server could be used as a backend to CoreDNS eliminating the need for etcd storage.)

**Special notes for your reviewer**:

**Release note**:
```
Federation: A new controller for managing DNS records is introduced which can be optionally disabled to enable third party components to manage DNS records for federated services.
```
cc @kubernetes/sig-federation-pr-reviews
2017-05-16 19:01:59 -07:00
Kubernetes Submit Queue 0e73596141 Merge pull request #45374 from marun/fed-refactor-sync-controller
Automatic merge from submit-queue (batch tested with PRs 45374, 44537, 45739, 44474, 45888)

[Federation] Refactor sync controller's reconcile method for maintainability

This PR refactors the sync controllers reconcile method for maintainability with the goal of eliminating the need for type-specific controller unit tests.  The unit test coverage for reconcile is not complete, but I think it's a good start.

cc: @kubernetes/sig-federation-pr-reviews
2017-05-16 18:10:53 -07:00
Kubernetes Submit Queue 8ef6857881 Merge pull request #44403 from pmichali/issue44351
Automatic merge from submit-queue (batch tested with PRs 45860, 45119, 44525, 45625, 44403)

coredns: support IPv6 record set

Added support for AAAA record for coredns and included unit test.
Refactored common test code to reduce duplication from added test and
existing tests.
Fixed function names in comments for Google and AWS tests to match
actual test name in this area.



**What this PR does / why we need it**:

Adding IPv6 support to kubernetes, once piece at a time. :)

**Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes #44351

**Special notes for your reviewer**:
In addition to the change and unit test method, I did some minor refactoring (since the UT was a near clone of an existing test). Fixed typos in related test methods' comment lines. Please let me know if this is OK (I was thinking it was a small change, but don't know the protocol here), or if I need to break it into multiple commits.

**Release note**:

```NONE
```
2017-05-16 16:14:57 -07:00
Kubernetes Submit Queue 31cb269d4c Merge pull request #44525 from irfanurrehman/fed-common-preferences
Automatic merge from submit-queue (batch tested with PRs 45860, 45119, 44525, 45625, 44403)

[Federation] Move annotations and related parsing code as common code

This PR moves some code, which was duplicate, around as common code.
Changes the names of structures used for annotations to common names.
s/FederatedReplicaSetPreferences/ReplicaAllocationPreferences/
s/ClusterReplicaSetPreferences/PerClusterPreferences/
This can be reused in job controller and hpa controller code.

**Special notes for your reviewer**:
@kubernetes/sig-federation-misc 

**Release note**:

```NONE
```
2017-05-16 16:14:54 -07:00
Paul Michali 8d9e90cccf coredns: support IPv6 record set
Added support for AAAA record for coredns and included unit test.

Fixed function names in comments for Google and AWS tests to match
actual test name in this area.
2017-05-16 15:51:18 +00:00
shashidharatd 005e11bfb3 Auto-generated bazel build file 2017-05-16 19:55:49 +05:30
shashidharatd 2ba7c8e1e6 Add stubDomains to kube-dns configmap for private nameserver 2017-05-16 19:55:49 +05:30
shashidharatd c1070166a8 Add coredns-endpoints to CoreDNS provider config 2017-05-16 18:56:23 +05:30
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
Maru Newby b7bc39f5b6 fed: Update sync controller to use runtime.HandleError 2017-05-15 13:07:47 -07:00
shashidharatd d22527522f Fix federated service reconcilation issue due to addition of ExternalTrafficPolicy field to v1.Service 2017-05-15 10:30:51 +05:30
Maru Newby 23b2cee8de fed: Further refactor of sync controller reconcile
This change breaks out non-delete cluster updates into a method for
testability.
2017-05-12 08:26:43 -07:00
Maru Newby 547ece5b83 fed: Refactor sync controller's reconcile method 2017-05-12 08:25:54 -07:00
Maru Newby cf71a8ef11 fed: Factor annotation mutation out of the crudtester for reuse 2017-05-12 08:25:54 -07:00
Irfan Ur Rehman de2544d5c3 [Federation] Move annotations and related parsing code as common code 2017-05-12 18:22:37 +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
Kubernetes Submit Queue b8186966b4 Merge pull request #45382 from marun/fed-updater-timeout-per-instance
Automatic merge from submit-queue (batch tested with PRs 45382, 45384, 44781, 45333, 45543)

[Federation] Provide updater timeout to instance rather than to Update()

This PR changes the federated updater to receive its timeout at construction rather than on every call to Update().  This provides a slight decrease in coupling by removing the need for the deletion handler to be provided the timeout along with the updater.

cc: @kubernetes/sig-federation-pr-reviews @perotinus
2017-05-10 17:47:39 -07:00
Kubernetes Submit Queue 57c72a46ea Merge pull request #42296 from perotinus/kubefedlogs-update
Automatic merge from submit-queue

[Federation] Improve the logging and user feedback in 'kubefed init'

This is a follow-up to #41849, which added some status information. This PR is based off of that one, and includes its changes as well.

See #41725.

```release-note
None
```
2017-05-10 13:41:00 -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 20e558060c Address review comments. 2017-05-10 00:03:42 -07:00
Madhusudan.C.S e0ca8abba8 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.
2017-05-10 00:03:42 -07:00