Refactor fetching of wathola receiver's delivery report using special batch Job#4460
Conversation
This change targets the problem of how to get report from cluster. Clusters may have different networking setup, and it might not be possible to directly make HTTP request from outside of cluster. Previous approach used to guess an external address of cluster. That for sure fails on OpenShift deployed on AWS. This approach deploys a special Job that, being inside cluster, can download a report and print it in it's logs. Then test client can fetch logs of completed job, and parse it, replay the logs, and process report further.
|
Skipping CI for Draft Pull Request. |
Codecov Report
@@ Coverage Diff @@
## master #4460 +/- ##
==========================================
+ Coverage 81.19% 81.27% +0.07%
==========================================
Files 281 282 +1
Lines 7981 8004 +23
==========================================
+ Hits 6480 6505 +25
Misses 1112 1112
+ Partials 389 387 -2
Continue to review full report at Codecov.
|
12dbfe2 to
5e31ffb
Compare
5e31ffb to
a4124eb
Compare
|
/assign Thanks for doing this. This is close to my question in the previous PR about using a "curl" pod to make the report request, like what we have in knative getting started doc. Not sure that can do the same as the |
|
Re @zhongduo: I don't think so it's possible. First of all, there no guarantee that finished event will get to receiver. I saw that happened when using interval of 2ms. Secondly, how receiver would send the message. It's unlikely that test runner , outside of k8s cluster, be network reachable. It might create a configmap with response, but the he would need to have lube config injected. At that point we can notify him from outside by creating k8s event. That's what was proposed as solution in the issue this addresses. The approach in this PR is simple and don't require additional kubeconfig injection. |
Thanks for the response, make sense. I was more thinking about merging the fetcher and receiver so that the receiver prints out to the logger directly the same way that the fetcher is doing now. And if we couldn't find the log entry, that means sth is wrong and can be considered as an error. |
Co-authored-by: Ahmed Abdalla Abdelrehim <aabdelre@redhat.com>
|
/lgtm |
|
Thank you for the thorough explanation and documentation of the changes! /lgtm |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: cardil, devguyio, pierDipi The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
… batch Job (knative#4460) * Reimplementing fetching of wathola report with K8s job This change targets the problem of how to get report from cluster. Clusters may have different networking setup, and it might not be possible to directly make HTTP request from outside of cluster. Previous approach used to guess an external address of cluster. That for sure fails on OpenShift deployed on AWS. This approach deploys a special Job that, being inside cluster, can download a report and print it in it's logs. Then test client can fetch logs of completed job, and parse it, replay the logs, and process report further. * Removal of unneeded external node address package * Fixing lints & boilerplate * spec.template.spec.restartPolicy=never * Apply @devguyio suggestions for test/upgrade/README.md Co-authored-by: Ahmed Abdalla Abdelrehim <aabdelre@redhat.com> * Changes after review Co-authored-by: Ahmed Abdalla Abdelrehim <aabdelre@redhat.com>
* Eventing upgrade tests prober fully configurable (knative#4421) * Eventing upgrade tests prober fully configurable * Embedding configuration structs * Reduce a test name length to prevent DNS label too long error (knative#4442) Having too long namespace or kservice name can lead to an error like: ``` $ host wathola-receiver-test-continuous-events-propagation-with-prober-zxmkp.apps.example.org host: 'wathola-receiver-test-continuous-events-propagation-with-prober-zxmkp.apps.example.org' is not a legal IDN name (domain label longer than 63 characters), use +noidnin ``` In this case my namespace is test-continuous-events-propagation-with-prober-zxmkp and knative service name is wathola-receiver. The namespace is taken from Go test method name. The limit is 63 characters. In this example the subdomain is 69 characters. This does affect OpenShift Serverless as kservices there have a URL format of `${ksvc.name}-${ksvc.namespace}` to enable usage of TLS wildcard certificates. Reducing this test method name length will help fit within this strict limit of 63 chars. * Use deployment to avoid disparity in effective user (knative#4445) On OpenShift we've observed a disparity when using pods vs deployments. Using both of those can lead to having different effective user for a bare pods and pods managed by deployment. That leads to differences in reading a config file by wathola components, as `~` points to different places sender and receiver+forwarder. This changes the code to avoid using bare pods for wathola components. * Refactor fetching of wathola receiver's delivery report using special batch Job (knative#4460) * Reimplementing fetching of wathola report with K8s job This change targets the problem of how to get report from cluster. Clusters may have different networking setup, and it might not be possible to directly make HTTP request from outside of cluster. Previous approach used to guess an external address of cluster. That for sure fails on OpenShift deployed on AWS. This approach deploys a special Job that, being inside cluster, can download a report and print it in it's logs. Then test client can fetch logs of completed job, and parse it, replay the logs, and process report further. * Removal of unneeded external node address package * Fixing lints & boilerplate * spec.template.spec.restartPolicy=never * Apply @devguyio suggestions for test/upgrade/README.md Co-authored-by: Ahmed Abdalla Abdelrehim <aabdelre@redhat.com> * Changes after review Co-authored-by: Ahmed Abdalla Abdelrehim <aabdelre@redhat.com> Co-authored-by: Ahmed Abdalla Abdelrehim <aabdelre@redhat.com>
This change targets the problem of how to get report from cluster. Clusters may have different networking setup, and it might not be possible to directly make HTTP request from outside of cluster.
Previous approach used to guess an external address of cluster. That for sure fails on OpenShift deployed on AWS.
This approach deploys a special Job that, being inside cluster, can download a report and print it in its logs. Then test client can fetch logs of completed job, and parse it, replay the logs, and process report further.
Fixes #3175
Closes #4430
Proposed Changes