Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Downstream sync: July '21 #62

Merged
merged 79 commits into from Jul 23, 2021
Merged

Conversation

dougbtv
Copy link
Member

@dougbtv dougbtv commented Jul 22, 2021

Notable features:

  • Uses leader election to prevent race condition at scale
  • Has IP reconciliation cron job to clean up stranded ip addresses
  • Overlapping IP ranges lifted to upstream (should improve release cycle downstream)

Big ups to @maiqueb for a ton of work this release. And thanks to Tomo for the leader election feature.

ohamada and others added 30 commits July 16, 2020 18:10
Server address in whereabouts.kubeconfig file has wrong format when the service
has IPv6 address. The IPv6 server address must be wrapped in '[]'.
This changes change error message in case of kubeconfig non-existence
at loading IPAM config to cause appropreate error message when kubeconfig
is not exist in case of kubernetes CRD mode.
This fix supplies domain for container image repo because
in some runtime configuration, 'docker.io' is not specified as
default container repository url.
Specifiy image repo URL explicitly
Fixing wrong DNS-1123 name for some IPv6 addresses
Add a more meaningful error for invalid CIDR
whereabouts.kubeconfig wrong in IPv6 only env
Adds the missing error/log/warn methods to the install-cni.sh
…tors README for auto config, also preps readme for deprecating etcd
Excluded subnets was handled for ipv4. This fix handles ipv6 as well.

Fixes dougbtv/whereabouts#71

Adds test to check for excluding IPv6 addresses
Includes fix for excluding IPv6 ranges as well as unit test
Removes error when deallocating IP errors out, instead just warns.
Reduces required parameters by introducing flatfile configuration by default
This removes the logic that was IPv4 based for removing the broadcast address.

[IPv6 does not implement broadcast](https://en.wikipedia.org/wiki/IPv6_address#Addressing_methods).

It also adds a unit test to validate that, as well as updates some checks which wrongly assumed the broadcast address omission.
Logic for IPv6 assignment should not omit the broadcast addresses
This removes the (now default) kubernetes data store from the first CNI config example.
The first example can drop the optional parameters
updated readme with instructions on how to install using helm3
It only requires two. Also updated the paragraph there for better context, added IPv6 subnet calculator link.
README incorrectly stated Whereabouts requires three parameters
[travis] Adds a login so we can pull images from the registry
This change replaces travis CI with github actions.
maiqueb and others added 13 commits July 22, 2021 16:05
This behavior will be encapsulated in a new struct named
`ReconcileLooper`, which features methods for:
  - CancelContext; cancels the current execution context
  - FindOrphanedIPsPerPool; returns a list of the orphaned
    IP addresses, indexed by pool
  - ReconcileIPPool; receives a list of orphaned IP
    addresses, and cleans them up from the respective pools
    where they are currently allocated.

Signed-off-by: Miguel Duarte Barroso <mdbarroso@redhat.com>
Signed-off-by: Miguel Duarte Barroso <mdbarroso@redhat.com>
The service account for whereabouts requires the ability of
listing the pods on all namespaces, so it can check which ones
feature orphaned IPs.

Signed-off-by: Miguel Duarte Barroso <mdbarroso@redhat.com>
Signed-off-by: Miguel Duarte Barroso <mdbarroso@redhat.com>
Signed-off-by: Miguel Duarte Barroso <mdbarroso@redhat.com>
Only mark a pod as "alive" when the pod's annotations feature the
IP being de-allocated.

This makes the reconciler binary *dependent* on multus, which adds
these `network-status` annotations into the pod.

Signed-off-by: Miguel Duarte Barroso <mdbarroso@redhat.com>
Signed-off-by: Miguel Duarte Barroso <mdbarroso@redhat.com>
By not returning an `IPReservation` entry - we now return an IP
address instead - we simplify the code.

Signed-off-by: Miguel Duarte Barroso <mdbarroso@redhat.com>
Signed-off-by: Miguel Duarte Barroso <mdbarroso@redhat.com>
Signed-off-by: Miguel Duarte Barroso <mdbarroso@redhat.com>
This commit changes the reconciler logic to only parse the
network-status annotations of whereabouts pods - e.g. pods whose
pod referecences (<namespace>/<pod name>) feature in any of the
whereabouts IPPools.

Signed-off-by: Miguel Duarte Barroso <mdbarroso@redhat.com>
Fixes conflicts after cherry-picking and lifting the overlapping ip addresses feature.
@openshift-ci openshift-ci bot requested review from fepan and s1061123 July 22, 2021 17:18
@openshift-ci openshift-ci bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jul 22, 2021
@dougbtv
Copy link
Member Author

dougbtv commented Jul 22, 2021

/hold

Needs:

  • README reset
  • Dockerfile.openshift fixed up

@openshift-ci openshift-ci bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jul 22, 2021
@dougbtv
Copy link
Member Author

dougbtv commented Jul 22, 2021

/hold cancel

@openshift-ci openshift-ci bot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jul 22, 2021
@dougbtv dougbtv requested a review from maiqueb July 22, 2021 19:55
…penshift and adds copy for the ip-reconciler
@maiqueb
Copy link
Contributor

maiqueb commented Jul 23, 2021

/lgtm

@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label Jul 23, 2021
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Jul 23, 2021

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: dougbtv, maiqueb

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jul 23, 2021
@openshift-merge-robot openshift-merge-robot merged commit 64fde10 into master Jul 23, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. lgtm Indicates that a PR is ready to be merged.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet