-
Notifications
You must be signed in to change notification settings - Fork 870
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
[Umbrella Issue] Create a Image Promotion process #157
Comments
Notes from Nov 28th meeting
|
Related to #158 |
I'm planning to OSS a proof of concept tool that understands how to reconcile a registry manifest (basically a list of images with digest/tag mappings) from a source registry to a destination registry. This should be available in January 2019. Once that tool is open sourced, I can wire up a basic promotion process for a number of images into a test registry to demonstrate how it will work. For now the tool prototype deals with 2 registries (source vs dest, aka "staging" vs "prod"), but it is trivial to extend it to deal with more than 1 destination (so that we can have mirrors for example). After it is open sourced we can have more discussions about it in its own repository (or continue in this issue, I guess?). I'll be offline the rest of this month so I'll see you guys in January! |
Happy New Year all! The tool I've worked on was submitted for internal review yesterday (as part of Google's open sourcing process). After it gets approved, I will create a public demo of it in action and update this issue accordingly. |
very cool @listx thanks for the update and a very happy new year to you as well. |
Update: The project has been approved and the Container Image Promoter now lives in https://github.com/GoogleCloudPlatform/k8s-container-image-promoter. Work now begins in creating a public demo of it in action (I plan to devote cycles on this to get the demo working by the end of Q1 this year). Once the demo is complete, I think it's just a matter of using it as a template for migrating some of the official images from gcr.io/google-containers to another (probably CNCF-owned) GCR. I just imagine a future where the K8s container image release process happens more transparently for the community. Hopefully the image promotion process is a solid step in that direction. |
The design doc for the demo around this can be found here: https://docs.google.com/document/d/1WGFt5ck_XGf71PO4c87UMPVU_4Q7AV-7tRV4Z6wmZL4/edit?usp=sharing |
Another update: I have a demo Prow cluster (http://35.186.240.68/) that's listening to all changes to the manifest in https://github.com/cip-bot/cip-manifest. That repo houses a manifest that is obviously only for demo purposes, but if you have a look at this PR: cip-bot/cip-manifest#2 you can see how a proposed changed to the manifest will trigger Prow jobs that perform a dry run of the promoter; merging that PR resulted in the promoter running for real (no dry run) and modifying the destination registry. I would like to have kubernetes-sigs/promo-tools#7 fixed before we think about really using this for existing (large-ish?) GCRs. It's not a big show-stopper though. So basically like 90% of the pieces are there --- we just need to migrate the Prow job configs to either kubernetes/test-infra or somewhere else (the Prow jobs need to run on someone's cluster) and set up the right service-account permissions. Not sure where I should upload these Prow jobs --- maybe kubernetes/test-infra? @BenTheElder wdyt? |
@listx Nice! +1 to add jobs to kubernetes/test-infra Also, can we run the garbage collector in dry run mode to check what if any will get wiped out in production registry before turning it on? |
/assign @thockin @BenTheElder |
@dims After we make garbage collection aware of manifest lists, sure (otherwise it will print a bunch of false positives about needing to delete tagless images that are referenced by manifest lists). The more I think about it, the more I want to just separate GC entirely from promotion. Less complexity per execution of the promoter is a good thing. And also, we could make GC much smarter and safer, by "promoting" to a "graveyard" GCR, in case anyone deletes a tag from the manifest by accident. Just an idea. Anyway, we could also just disable garbage collection for the time being as it's not a critical feature as far as promotion is concerned. |
@listx makes sense "disable garbage collection for the time being as it's not a critical feature as far as promotion" +1 I like the graveyard GCR too :) |
kubernetes/test-infra SGTM, I would poke @fejta about our strategy for "trusted" jobs, as this should be one. +1 to dry-run first, not sure I understand the graveyard GCR 🙃 |
update on dockerhub integration kubernetes-sigs/promo-tools#9 |
I was thinking that the graveyard GCR could host images that were deemed OK to delete (permanently) from a prod GCR. Thinking about this some more, though, maybe it's cleaner if we just implement soft-deletion (make the promoter "delete" images) by moving images to a different path within the same GCR. Anyway the idea for keeping things around in the "graveyard" was to make sure we can undo image deletions --- just in case we accidentally delete an image for whatever reason. |
Action Items from February 20th Meeting:
I'm willing to help / coordinate with any of the above. |
IMO these image promotion jobs should run in their own security domain:
AKA we trust them more than standard jobs (only run on merged code) and less than prow itself (approvals are not restricted to prow oncall). A good way to solve these issues would be for the wg-k8s-infra team to:
Another idea might be to follow the pattern we use to have prow update itself:
That way the system is fully automated, but gated on someone trusted approving the PRs before they are used in production. |
I was thinking in something simple (no infra/tools to maintain, runs on demand), just GCB + triggers: |
I am ambivalent about mechanism. Simple is good, but it needs to be
debuggable and transparent.
…On Wed, Feb 20, 2019 at 1:42 PM Javier B Perez ***@***.***> wrote:
I was thinking in something simple (no infra/tools to maintain, runs on
demand), just GCB + triggers:
https://cloud.google.com/cloud-build/docs/running-builds/automate-builds
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#157 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AFVgVGWy0CPBlpv91WyXw0_6lFki_S4iks5vPcFcgaJpZM4ZCsjM>
.
|
/milestone v1.22 |
/milestone v1.23 |
/milestone clear |
The Kubernetes project currently lacks enough contributors to adequately respond to all issues and PRs. This bot triages issues and PRs according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
/remove-lifecycle stale |
The Kubernetes project currently lacks enough contributors to adequately respond to all issues and PRs. This bot triages issues and PRs according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
/remove-lifecycle stale |
The Kubernetes project currently lacks enough contributors to adequately respond to all issues and PRs. This bot triages issues and PRs according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
The Kubernetes project currently lacks enough active contributors to adequately respond to all issues and PRs. This bot triages issues and PRs according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle rotten |
I think we are done with this. Image promotion is now part of the release process and use by the different SIGs and subprojects. Thank you everyone for the work done! |
@ameukam: Closing this issue. In response to this:
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. |
Split from #153 (see that for some context)
cc @javier-b-perez @mkumatag @listx
The text was updated successfully, but these errors were encountered: