-
Notifications
You must be signed in to change notification settings - Fork 2.5k
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
dependencies: Upgrade all k8s client-go dependent sources to v1.18.X #1627
dependencies: Upgrade all k8s client-go dependent sources to v1.18.X #1627
Conversation
Thanks for your pull request. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). 📝 Please follow instructions at https://git.k8s.io/community/CLA.md#the-contributor-license-agreement to sign the CLA. It may take a couple minutes for the CLA signature to be fully registered; after that, please reply here with a new comment and we'll verify. Thanks.
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here. |
Welcome @josephglanville! |
Signed the CLA. |
3f25400
to
d649932
Compare
d649932
to
8be87fc
Compare
@@ -70,5 +75,6 @@ replace ( | |||
github.com/Azure/go-autorest/autorest/adal => github.com/Azure/go-autorest/autorest/adal v0.6.0 | |||
github.com/Azure/go-autorest/autorest/azure/auth => github.com/Azure/go-autorest/autorest/azure/auth v0.3.0 | |||
github.com/golang/glog => github.com/kubermatic/glog-logrus v0.0.0-20180829085450-3fa5b9870d1d | |||
google.golang.org/grpc => google.golang.org/grpc v1.26.0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We are trying to avoid these. Do you know where the conflict arises?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Problem stems from backwards incompatible changes to gRPC that most dependencies have not upgraded past yet, resulting in errors such as these:
# github.com/coreos/etcd/clientv3/balancer/resolver/endpoint
../../go/pkg/mod/github.com/coreos/etcd@v3.3.22+incompatible/clientv3/balancer/resolver/endpoint/endpoint.go:114:78: undefined: resolver.BuildOption
../../go/pkg/mod/github.com/coreos/etcd@v3.3.22+incompatible/clientv3/balancer/resolver/endpoint/endpoint.go:182:31: undefined: resolver.ResolveNowOption
github.com/coreos/etcd/pkg/types
github.com/coreos/etcd/clientv3/balancer/connectivity
github.com/coreos/etcd/clientv3/balancer/picker
github.com/coreos/etcd/version
# github.com/coreos/etcd/clientv3/balancer/picker
../../go/pkg/mod/github.com/coreos/etcd@v3.3.22+incompatible/clientv3/balancer/picker/err.go:37:44: undefined: balancer.PickOptions
../../go/pkg/mod/github.com/coreos/etcd@v3.3.22+incompatible/clientv3/balancer/picker/roundrobin_balanced.go:55:54: undefined: balancer.PickOptions
Unfortunately the very same commit of the Istio client that upgrades to v1.18.x also bumps gRPC to v1.28 causing misery unless pinned back so the rest of the code continues to function.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Upstream issue in etcd regarding the API change: etcd-io/etcd#11563
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It might be possible to pin the etcd client instead but I haven't tried that as it has a larger surface area and imported via more than one package path due to change from coreos org. Regardless at least one pin will be required to get Contour, Istio and Linode dependencies to play nice it's just a matter of which one.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Got it. Can we add a TODO comment, just so that we can get back to it at a later time?
@josephglanville Just a note regarding |
8be87fc
to
6b5ce44
Compare
Switched |
6b5ce44
to
628ed59
Compare
@tariq1890 any chance you could take another look at this? If the gRPC version pin isn't desirable could you suggest other options that would be amenable? |
source/gateway.go
Outdated
@@ -117,7 +117,7 @@ func NewIstioGatewaySource( | |||
// Endpoints returns endpoint objects for each host-target combination that should be processed. | |||
// Retrieves all gateway resources in the source's namespace(s). | |||
func (sc *gatewaySource) Endpoints() ([]*endpoint.Endpoint, error) { | |||
gwList, err := sc.istioClient.NetworkingV1alpha3().Gateways(sc.namespace).List(metav1.ListOptions{}) | |||
gwList, err := sc.istioClient.NetworkingV1alpha3().Gateways(sc.namespace).List(context.Background(), metav1.ListOptions{}) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what about adding the context in the gatewaySource?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can look at that sure.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thinking about this more I think there is a larger task to plumb down the context from main -> store -> sources. I think that makes more sense as a follow up to this but I could do it in this PR if that is desired.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@njuettner this was done.
628ed59
to
e0c2c35
Compare
I added I will rebase #1628 on this so it can also make use of it. |
/assign @Raffo |
e0c2c35
to
6d84913
Compare
6d84913
to
f154118
Compare
@tariq1890 @Raffo @njuettner could you please review these changes? |
I've had an in-depth look into this. LGTM expect for that one minor comment @josephglanville Sorry for the delay. Also, note that I am just a contributor to the project. It's ultimately upto @njuettner and @Raffo to approve the changes. |
f154118
to
1cd1bd3
Compare
@njuettner marking this to review next week. |
We're not going to have this merged as this, as it is today, includes a very recent version of client-go (0.18) which is not even listed in the compatibility matrix from https://github.com/kubernetes/client-go . We will always keep compatibility with officially supported kubernetes version (AFAIK 1.15 is the latest supported as of now) and also with what the major cloud providers will do. EKS, for example, supports 1.14 (hopefully not for long 😄 ). This means that we will have to postpone this change. |
As I understand it client-go 1.18.X support 1.15.X, in-fact I am using this code with a 1.15.X cluster right now as that is what we are on for the foreseeable future. I have yet to experience any problems with compatibility. Is this just a prudence measure or do you actually think there is a compatibility problem with 1.18.X and 1.15.X/1.14.X that needs looking into? Without this upgrade work on the Contour HTTPProxy source can't reasonably continue without falling back to specifying the load balancer IPs directly as is done in the IngressRoute source (which won't work for our use-case which has multiple Contour deployments with multiple LBs). |
Created an issue on client-go to update the compatibility matrix: kubernetes/client-go#828 |
Thanks @josephglanville , I'll wait for client-go to have clear info published and re-assess this later. |
I agree with @josephglanville here. I wouldn't be too worried about compatibility issues with importing This is a definitely case of the maintainers not updating their documentation |
1cd1bd3
to
03e3840
Compare
This requires pinning grpc for now as istio client-go otherwise pulls in breaking changes.
03e3840
to
6efca13
Compare
PR to update compat matrix in client-go: kubernetes/client-go#821 |
@Raffo client-go matrix is now updated. |
Fwiw confirming from kubernetes/client-go#821 that it was an indeed an oversight to miss adding the support for 1.18.x in the compatibility matrix in client-go. Apologies! The README now reflects 1.18 as well. 👍 |
Thanks for the update, I'll check this again next week and give an update. |
/lgtm |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: josephglanville, Raffo 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 |
This requires pinning grpc for now as istio client-go otherwise pulls in
breaking changes.
Required to make progress on #1366