Skip to content
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

Use quay.io as source of docker images #3254

Merged
merged 14 commits into from
Nov 6, 2023
Merged

Conversation

yuvipanda
Copy link
Collaborator

@yuvipanda yuvipanda commented Oct 18, 2023

While we do have 'sponsored OSS' status on dockerhub, @choldgraf (whose credit card is apparently tied to the dockerhub jupyterhub account) just got a surprise multi hundred dollar bill for that organization! While I'm sure this is a mistake and can be corrected, it's IMO enough incentive for us to move away for real.

See jupyterhub/team-compass#688 for team-compass issue about this.

TODO:

  • Create appropriate CI robot account on quay.io
  • Set QUAY_USERNAME & QUAY_PASSWORD as environment variables
  • Create the repos and make them public
  • Make sure owners have push rights to repos
  • Create READMEs for the repos pointing back to here
  • Get all tests to pass
  • Document this in changelog. It's not necessarily a breaking change though - existing images will still work, this is just for new images
  • Update all documentation that's pointing to dockerhub

While we do have 'sponsored OSS' status on dockerhub,
@choldgraf (whose credit card is apparently tied to the
dockerhub jupyterhub account) just got a surprise multi hundred
dollar bill for that organization! While I'm sure this is a
mistake and can be corrected, it's IMO enough incentive for us
to move away for real.
yuvipanda added a commit to yuvipanda/configurable-http-proxy that referenced this pull request Oct 18, 2023
Companion PR to
jupyterhub/zero-to-jupyterhub-k8s#3254.
See that PR for more information.
@yuvipanda
Copy link
Collaborator Author

I've manually pushed the chp 4.6.0 image to quay.io (https://quay.io/repository/jupyterhub/configurable-http-proxy?tab=info) to help with the tests.

@yuvipanda
Copy link
Collaborator Author

I've copied the the docker image for chp properly, with skopeo (which I love).

➜ skopeo copy --multi-arch all docker://jupyterhub/configurable-http-proxy:4.6.0 docker://quay.io/jupyterhub/configurable-http-proxy:4.6.0
Getting image list signatures
Copying 4 of 4 images in list
Copying image sha256:aa015e075efc474756b9b12aef1441c9a7f8cbb4775c873a4edaf37ec1320814 (1/4)
Getting image source signatures
Copying blob c8ce5be43019 skipped: already exists  
Copying blob 7264a8db6415 skipped: already exists  
Copying blob eaabaa65f53f skipped: already exists  
Copying blob eff5dce73b38 skipped: already exists  
Copying blob 751194035c36 skipped: already exists  
Copying blob 1b8c92fdbd4a skipped: already exists  
Copying blob 4f4fb700ef54 skipped: already exists  
Copying blob 6e523fbc78fa skipped: already exists  
Copying blob b343a4bd3020 skipped: already exists  
Copying config a5bea39f3c done  
Writing manifest to image destination
Copying image sha256:0853571d072bfff039f0cc29c9d840fe5267373d32e22cde993f39c05091f0b9 (2/4)
Getting image source signatures
Copying blob 5aa7957fc48d skipped: already exists  
Copying blob 9eaea104398d skipped: already exists  
Copying blob 0af8382f830e skipped: already exists  
Copying blob 8e5e74a525a3 skipped: already exists  
Copying blob 79450953436e skipped: already exists  
Copying blob 9fda8d8052c6 skipped: already exists  
Copying blob 4f4fb700ef54 skipped: already exists  
Copying blob b7eacf9f78fb skipped: already exists  
Copying blob 465b02513e9b skipped: already exists  
Copying config 51f9d96958 done  
Writing manifest to image destination
Copying image sha256:4cdf6e97479eb7222df6b5684c444fa6f1210810b47c0ebb3daf1e40e594c2e1 (3/4)
Getting image source signatures
Copying blob f2eee628b454 done  
Copying config 1558bf795c done  
Writing manifest to image destination
Copying image sha256:d91e234dd5e1a6f15c511661ef1a549d5517362d18e3311d88d6b766a5aa3c8c (4/4)
Getting image source signatures
Copying blob 0fc614078056 done  
Copying config a17f7bde53 done  
Writing manifest to image destination
Writing manifest list to image destination
Storing list signatures

Hopefully this will help the ARM tests pass.

@yuvipanda
Copy link
Collaborator Author

yuvipanda commented Oct 18, 2023

I can get either the x86 tests to pass or the ARM tests to pass, based on wether I last pushed from my laptop x86 or ARM versions of the singleuser image :D

I suspect actually going through the 'publish' workflow once will fix that.

@manics
Copy link
Member

manics commented Oct 18, 2023

Would it be easier to make a new minor release of CHP?

@yuvipanda
Copy link
Collaborator Author

@manics CHP is fine, the problem is the singleuser-sample for some reason. I copied it with skopeo but to no avail

This should also just trigger a rebuild of the image in CI
@yuvipanda
Copy link
Collaborator Author

@manics we could publish in both places, but let's do that with skopeo copy rather than having our CI push to two places at once?

@yuvipanda
Copy link
Collaborator Author

I have discovered the source of the test failures and it is me!

Because I ran chartpress push from my local machine, it pushed a non-multiarch build to quay which was being pulled and then things were failing.

The solution was to get rid of the images I had pushed.

All tests pass and this is ready to go now!

@yuvipanda yuvipanda requested a review from manics October 20, 2023 12:40
@yuvipanda
Copy link
Collaborator Author

I've added a changelog entry as well.

@yuvipanda yuvipanda requested a review from minrk October 20, 2023 17:01
@yuvipanda
Copy link
Collaborator Author

Anything else to add to this before it gets merged?

Copy link
Member

@manics manics left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's one unticked todo (Add a note to readme of existing dockerhub images that we'll be using quay.io moving forward), is this for the future?

docs/source/administrator/services.md Outdated Show resolved Hide resolved
docs/source/changelog.md Outdated Show resolved Hide resolved
@yuvipanda
Copy link
Collaborator Author

@manics I've removed the unticked item, as I think that's actually best done once the move across everywhere is complete. It's now tracked in jupyterhub/team-compass#688 (comment)

Copy link
Member

@manics manics left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, LGTM!

Copy link
Contributor

@mathbunnyru mathbunnyru left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have only a small comment about naming, looks good otherwise 👍

docs/source/changelog.md Outdated Show resolved Hide resolved
Co-authored-by: Ayaz Salikhov <mathbunnyru@users.noreply.github.com>
@minrk minrk merged commit f3e1f30 into jupyterhub:main Nov 6, 2023
16 checks passed
@yuvipanda
Copy link
Collaborator Author

Thanks @minrk.

Looks like I didn't set appropriate permissions for k8s-image-awaiter so CI failed. I've fixed that and re-ran it.

consideRatio pushed a commit to jupyterhub/helm-chart that referenced this pull request Nov 6, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants