-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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
kubetest2: Infer the provider and zones from the kops cluster #10847
kubetest2: Infer the provider and zones from the kops cluster #10847
Conversation
It looks like we weren't running cloudprovider specific tests, AFAICT. /assign @rifelpet |
cff13c8
to
2d641ea
Compare
You're right, we are missing cloud provider tests as well as a few others that I'm working to enable (see this comment, though my fix didn't seem to help) I'm not sure how I feel about importing these dependencies into kubetest2, it feels like kubetest2 should be more standalone and operate agnostic of any kops version. That said, we do need a way of knowing which cloud provider the cluster is using. I brought this up in the kubetest2 repo: kubernetes-sigs/kubetest2#87 (comment) and one suggestion was to use a well-known file that the deployer creates and the tester reads. Perhaps we could do that? just a json or yaml file that contains the cloud provider and zones and nothing else. Alternatively we could do a more naive unmarshal of Thoughts? |
Good point on the imports @rifelpet ! I'm deliberately only using the models (e.g. I'm not using the vfs functions to read direct from the state store). We could reimplement the models (just the fields we need); we could also make the apis into the own go module, which would help with the volume of dependencies. We need so few fields I can easily reimplement, but over time we'll need more (e.g. I have a test for etcd status) and it'll become more tedious. That said, these are part of our contract, so it isn't like changing them is common/easy. |
tests/e2e/go.mod
Outdated
|
||
// These should match the go.mod from k8s.io/kops | ||
|
||
replace k8s.io/api => k8s.io/api v0.20.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.
I'm wondering if we should replace these the relative path to the local vendor directory, that way we dont need to keep two go.mod files in sync anytime we bump these.
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.
Just tried this locally and it doesn't work. replace k8s.io/api => ../../vendor/k8s.io/api
will fail because go expects the go.mod and go.sum files to exist at the location, but vendoring modules explicitly does not include them.
Looks like we'll just need to keep these in sync going forward
2d641ea
to
677b4bf
Compare
677b4bf
to
4664534
Compare
103650c
to
f420fe3
Compare
retrying now that we're testing with k8s 1.21 /retest |
/test pull-kops-e2e-k8s-gce |
/retest |
The AWS test failures all seem to be permissions related:
That error is from KCM which uses the master IAM role which has AttachVolume permissions on volumes tagged with kops/pkg/model/iam/iam_builder.go Lines 896 to 914 in af353d1
Viewing the testgrid history of the job, scrolling far enough to the right reveals that these same tests were passing before the kubetest2 migration around April 2nd. Here is the final kubetest1 job with passing tests. Comparing the ginkgo test args, these were being provided before and are no longer being provided now: I'm wondering if the e2e tests use the --cluster-tag to tag the EBS volumes it creates, and without the flag the master IAM role doesn't have permission to attach it. I'll try adding those flags next. |
Yep I'm guessing thats the case :)
|
7e0e2b8
to
9afffab
Compare
/test pull-kops-e2e-k8s-gce |
50356d2
to
79b904f
Compare
Ok the additional tags have reduced us down to one failure in the AWS jobs, and I believe I have a fix for the current issue in the GCE job /test pull-kops-e2e-k8s-gce |
The failing AWS test is blocked by kubernetes/kubernetes#101443 Regarding the GCE test failures, since I recently added the presubmit job with kubetest2 I'll have to use the periodic job as a reference point to determine how to proceed. The GCE presubmit is optional though, so I suppose this PR doesn't necessarily need to be blocked by getting it to pass. |
/test pull-kops-e2e-k8s-gce |
/retest I skipped the failing AWS KMS test until it is fixed upstream, so the aws jobs should pass now. Since the gce job is new and optional we can work on addressing its failures independently of this PR |
@justinsb: The following test failed, say
Full PR test history. Your PR dashboard. Please help us cut down on flakes by linking to an open issue when you hit one in your PR. 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. |
/skip all |
This means we don't need to pass these flags explicitly.
Previously we were setting KOPS_STATE_STORE before knowing its value, resulting in an empty string
8d5e46c
to
038baef
Compare
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: hakman 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 means we don't need to pass these flags explicitly.