Skip to content

Conversation

@claudiubelu
Copy link
Contributor

@claudiubelu claudiubelu commented Aug 8, 2019

What type of PR is this?

/kind feature

/sig testing
/sig windows
/area conformance

What this PR does / why we need it:

Centralizes the following images into agnhost:

  • dnsutils
  • mounttest
  • resource-consumer-controller
  • test-webserver

Adds Windows support for mounttest.

Adds CoreDNS to agnhost image, which can be used in some DNS related tests (dnsmasq is Linux-only).

Bumps agnhost version to 2.9.
Bumps kitten version to 1.1.
Bumps nautilus version to 1.1.

Which issue(s) this PR fixes:

Related: #76342
Fixes #80194

Special notes for your reviewer:

Does this PR introduce a user-facing change?:

NONE

Additional documentation e.g., KEPs (Kubernetes Enhancement Proposals), usage docs, etc.:


@k8s-ci-robot k8s-ci-robot added do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. release-note-none Denotes a PR that doesn't merit a release note. kind/feature Categorizes issue or PR as related to a new feature. sig/testing Categorizes an issue or PR as relevant to SIG Testing. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. sig/windows Categorizes an issue or PR as relevant to SIG Windows. area/conformance Issues or PRs related to kubernetes conformance tests cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. needs-priority Indicates a PR lacks a `priority/foo` label and requires one. labels Aug 8, 2019
@claudiubelu claudiubelu force-pushed the test-images/centralize-image-to-agnhost-part-4 branch from 9e57a8d to dfd5357 Compare August 8, 2019 16:54
@k8s-ci-robot k8s-ci-robot requested review from ixdy and listx August 8, 2019 16:55
@claudiubelu claudiubelu force-pushed the test-images/centralize-image-to-agnhost-part-4 branch 5 times, most recently from 8346f20 to 9ff36bc Compare August 12, 2019 14:34
@claudiubelu claudiubelu changed the title WIP: Centralizes images into agnhost (part 4) Centralizes images into agnhost (part 4) Aug 12, 2019
@k8s-ci-robot k8s-ci-robot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Aug 12, 2019
@claudiubelu claudiubelu force-pushed the test-images/centralize-image-to-agnhost-part-4 branch from 9ff36bc to d79e1a4 Compare August 12, 2019 17:18
@claudiubelu
Copy link
Contributor Author

/test pull-kubernetes-integration

@claudiubelu claudiubelu force-pushed the test-images/centralize-image-to-agnhost-part-4 branch from d79e1a4 to 7c3e004 Compare August 19, 2019 11:38
@spiffxp
Copy link
Contributor

spiffxp commented Aug 21, 2019

/uncc ixdy
/cc @johnSchnake

@k8s-ci-robot k8s-ci-robot requested review from johnSchnake and removed request for ixdy August 21, 2019 01:06
@spiffxp
Copy link
Contributor

spiffxp commented Aug 21, 2019

/cc

@k8s-ci-robot k8s-ci-robot requested a review from spiffxp August 21, 2019 01:06
@spiffxp
Copy link
Contributor

spiffxp commented Aug 21, 2019

/priority important-soon
/milestone v1.16

Centralizes the following images into agnhost:

- dnsutils
- mounttest
- resource-consumer-controller
- test-webserver

Adds CoreDNS to agnhost image, which can be used in some DNS related tests (dnsmasq is Linux-only).

Adds Windows support to mounttest.

Bumps agnhost version to 2.9.
Bumps kitten version to 1.1.
Bumps nautilus version to 1.1.
@claudiubelu
Copy link
Contributor Author

I've raised these questions at the K8S infra WG meeting, you can see the minutes here: https://docs.google.com/document/d/16VBfsFMynA7tObzuZGPpw-sKDKfFc_T5W_E4IeEIaOQ/edit#

But in summary:

So, from what I understand, apparently, there are a few bits of work that will have to be done beforehand in order for the automatic image promotion to be put in place for the testing images.

First of all, we would probably need a staging repo like gcr.io/kubernetes-staging-e2e-test-images. Do we have something like that first? And if not, can anyone create it?

I've sent a PR for this here: kubernetes/k8s.io#400 . The PR will have to merge, then the google group will have to be created, and then the registry.

Secondly, it seems that we'll have to to do a few new PRs in order to get that ready: on k/k, we'll have to add cloudbuild.yaml which will contain the steps necessary to build the images( Ihave some questions / concerns regarding this, though***), and one k/test-infra which will define image-pushing job.

I've added PRs for this: #84058 and kubernetes/test-infra#14833

*** There are a few things I am wondering about:

* when it comes to test images, we still have ~31 images in `kubernetes/test/images`, even after all the centralization effort. Will this mean that the job will have to rebuild / publish / push / promote all the images, even if we're modifying a single image?

It seems like test-infra has a lazy-build based on directory modifications, which would solve this.

* there is still no validation / verification that the changes made to the images do not break anything in testgrid. Unlike most other images, any breaks here will then cause the whole merging process to stop. Ofc, this can still be mitigated by having the image updates and the image versions used by E2E tests in separate PRs, like this is. Either way, making sure there's 0% chances to break something is a bit unlikely (as we're aproaching 5K E2E tests), so there could be some follow-up PRs with some fixes. But a job using the staging repo and runnining only the `[Conformance]` tests would be helpful, IMO.

Seems that this will remain as is. So, the PRs would look something like this:

  • PR1: make the necessary changes to an image.
  • Merge the PR.
  • The Image Promoter will build and publish the image to the staging registry, from which it will be promoted to the regular registry.
  • PR2: bump the image version used im kubernetes/test/utils/image/manifest.go and merge. If something breaks, revert.
* hm, I think we might need a script, or some updates in `kubernetes/test/images` which will build / push **all** the images. Right now, you can `make` only one image at a time: `make WHAT=agnhost`. We'll have to take into account that some images depend on other images: (`mounttest-user` depends on `mounttest` (`mounttest-user` is planned to be removed), `nautilus` and `kitten` depends on `test-webserver`).

Added here: #84058

@BCLAU Bug triage for 1.17 here with a gentle reminder that code freeze for this release is on November 18. Taking into account the extra work mentioned in your comment, is this PR still intended for 1.17?

I've completed the items listed above. They have to be reviewed and merged. Then, we should probably be done with that and we can then merge this.

@smourapina
Copy link

Thank you for the comprehensive update @BCLAU. Would you then say that it is feasible to have everything merged until the code freeze date? And would it make sense to add the open PRs mentioned in your comment to the 1.17 milestone?

@claudiubelu
Copy link
Contributor Author

Thank you for the comprehensive update @BCLAU. Would you then say that it is feasible to have everything merged until the code freeze date? And would it make sense to add the open PRs mentioned in your comment to the 1.17 milestone?

I would say yes. I've got a few reviews on them as well, so they're getting closer to getting merged, hopefully.

And I would say yes, it'll definitely be helpful to have them added to the milestone. It'll help the test image changes get in smoother and without having to rely on a human to build and publish the affected images.

@claudiubelu
Copy link
Contributor Author

/test pull-kubernetes-e2e-gce-100-performance

@smourapina
Copy link

smourapina commented Nov 8, 2019

@BCLAU Friendly reminder: code freeze is rapidly approaching and will take place in November 14th. Is this PR still intended for 1.17? Otherwise we will need to move it to 1.18 milestone.

@claudiubelu
Copy link
Contributor Author

/hold cancel

Iti is the next PR in the queue for agnhost, it is approved, and it had the lgtm label at one point.

@k8s-ci-robot k8s-ci-robot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Nov 11, 2019
@claudiubelu
Copy link
Contributor Author

Hm. I'd rather let the reviewers focus on the oher, more important PRs, like the Image Promoter for v1.17. We can punt this to the next release.

@josiahbjorgaard
Copy link
Contributor

/milestone v1.18

@k8s-ci-robot k8s-ci-robot modified the milestones: v1.17, v1.18 Nov 13, 2019
@claudiubelu
Copy link
Contributor Author

The Image Promoter bits are in place, so, merging this PR should cause the next agnhost image to be automatically built and published. We should be able to see the job here: https://testgrid.k8s.io/sig-testing-images#post-kubernetes-push-images

So, I think we can proceed with this PR.

@dims
Copy link
Member

dims commented Jan 13, 2020

/lgtm

let's give this a shot!

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Jan 13, 2020
@k8s-ci-robot k8s-ci-robot merged commit e265afa into kubernetes:master Jan 13, 2020
claudiubelu added a commit to claudiubelu/kubernetes that referenced this pull request Jan 21, 2020
Prior to the Image Centralization part 4 (kubernetes#81170),
a PR merged that enables the Image Promoter to run on the k/k test images.

The Image Promoter currently only builds the Conformance-related images, but the
Image Centralization part 4 centralized some of those images into agnhost, so they
need to be removed from the conformance_images list.

Additionally, kubernetes#81226 proposes mounttest-user
image to be removed, and RunAsUser to be used in tests instead.

The image used by the Image Promoter (gcr.io/k8s-testimages/gcb-docker-gcloud:v20190906-745fed4)
is based on busybox, and thus, the sed binary is actually busybox. image-util.sh calls
kube::util::ensure-gnu-sed several times, which ensures that a GNU sed binary exists
(it checks by greping GNU in its --help output). Obviously, it won't match the busybox sed
binary. But the sed usage in image-util.sh is fairly simple, and the busybox sed is sufficient.

Bumps image versions for: jessie-dnsutils, nonewprivs, resource-consumer, sample-apiserver. These
images are included in the conformance_images that are being built by the Image Promoter, so
we're bumping them just to make sure we're not breaking anything and cause all the CIs to fall.
We're going to bump the image versions used in tests in a subsequent PR. The image version was not
bumped for: agnhost, kitten, nautilus, as they were already bumped by the Image Centralization part 4
PR.
Ye-Tian-Zero pushed a commit to Ye-Tian-Zero/kubernetes that referenced this pull request Jan 27, 2020
Prior to the Image Centralization part 4 (kubernetes#81170),
a PR merged that enables the Image Promoter to run on the k/k test images.

The Image Promoter currently only builds the Conformance-related images, but the
Image Centralization part 4 centralized some of those images into agnhost, so they
need to be removed from the conformance_images list.

Additionally, kubernetes#81226 proposes mounttest-user
image to be removed, and RunAsUser to be used in tests instead.

The image used by the Image Promoter (gcr.io/k8s-testimages/gcb-docker-gcloud:v20190906-745fed4)
is based on busybox, and thus, the sed binary is actually busybox. image-util.sh calls
kube::util::ensure-gnu-sed several times, which ensures that a GNU sed binary exists
(it checks by greping GNU in its --help output). Obviously, it won't match the busybox sed
binary. But the sed usage in image-util.sh is fairly simple, and the busybox sed is sufficient.

Bumps image versions for: jessie-dnsutils, nonewprivs, resource-consumer, sample-apiserver. These
images are included in the conformance_images that are being built by the Image Promoter, so
we're bumping them just to make sure we're not breaking anything and cause all the CIs to fall.
We're going to bump the image versions used in tests in a subsequent PR. The image version was not
bumped for: agnhost, kitten, nautilus, as they were already bumped by the Image Centralization part 4
PR.
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. area/conformance Issues or PRs related to kubernetes conformance tests area/test cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. kind/feature Categorizes issue or PR as related to a new feature. lgtm "Looks good to me", indicates that a PR is ready to be merged. priority/important-soon Must be staffed and worked on either currently, or very soon, ideally in time for the next release. release-note-none Denotes a PR that doesn't merit a release note. sig/testing Categorizes an issue or PR as relevant to SIG Testing. sig/windows Categorizes an issue or PR as relevant to SIG Windows. size/XL Denotes a PR that changes 500-999 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Upgrade agnhost image to add build-tools