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

[Update Center] Add archives.jenkins.io as a mirror fallback for JSON metadatas #4401

Closed
10 tasks done
dduportal opened this issue Nov 19, 2024 · 5 comments
Closed
10 tasks done

Comments

@dduportal
Copy link
Contributor

dduportal commented Nov 19, 2024

#2649 introduced a new Update Center system built on top of mirrorbits.

We want to add the VM archives.jenkins.io as a "mirror fallback" for the Update Center instead of using the US East Cloudflare R2 mirror.

Rationale:

  • We have to be resilient against a Cloudflare outage => a non Cloudflare mirror is required
  • We need a non-S3 mirror => an HTTP + Rsync service is needed
  • HA is not required => a single VM is 👍
  • This service is only used when there is a mismatch of all mirrors with the mirrorbits reference + during Cloudflare outages: We need a service where outbound bandwidth is cheap => DigitalOcean is a good candidate
  • We want to avoid heavy maintenance as much as possible => archive.jenkins.io DigitalOcean VM is already a download mirror with everything required (webservice, rsync, etc.)

Todo list:

  • Check the network routes to archives.jenkins. Fix the security groups and routing if failing (+ updatecli manifest to track IPs if needed):
    • From the trusted agent-1 with rsync (update_center2)
    • From any trusted.ci ephemeral VM agent with rsync (crawler)
    • From mirrorbits services inside publick8s with both rsync and HTTP
  • Set up an rsync credential to allow both trusted.ci to rsync from its jobs and mirrorbits to scan the service with rsync
    • Add credential in sops (private key) + kubernetes-management (from sops to mirrorbits pods)
    • Add credential in the trusted.ci ZIP definition (in sops) and update it in trusted.ci
  • Set up update_center2 to also rsync to archives.jio (with the updated ZIP credential above)
  • Set up crawler to also rsync to archives.jio (with the updated ZIP credential above)
  • Once archives.jio is kept up to date, set up mirrorbis instances (both secured and unsecured) to use archives.jio as fallback
  • Check metrics to monitor in DigitalOcean to track outbound bandwidth
@dduportal
Copy link
Contributor Author

dduportal commented Dec 3, 2024

Pairing session with @smerle33 :

=> Proposal: Let's start from an empty clean state and use a new path https://archives.jenkins.io/update-center/

  • Avoid keeping legacy stuff (which will be decommissioned little by little)
  • Avoid conflicts
  • Avoid confusion (archives.jenkins.io/updates/updates/ is really confusing...).

@dduportal
Copy link
Contributor Author

Update:

  • We need to open SSH access from the trusted.ci ephemeral agents (permanent agent has routing rules not blocking) => @smerle33 (as we recently restricted outbound SSH to only GitHub globally)
  • Mirrorbits pods should use a rsync server (no ssh client, no need for auth. easier to manage) installed in archives.jio => @dduportal
  • New credential for archives.jio in SSH => @dduportal for the Puppet retrieval part, and pair with @smerle33 for updating the generation script
  • Update center2/crawler new Rsync target to add => @smerle33

@dduportal
Copy link
Contributor Author

Update:

@dduportal
Copy link
Contributor Author

Update: https://archives.jenkins.io/update-center/ can be used as an update center (tested on ci.jio) and is updated by the UC2 build.

dduportal added a commit to jenkins-infra/kubernetes-management that referenced this issue Dec 12, 2024
Related to jenkins-infra/helpdesk#4401

No helmfil diff changes should be shown as the mirrorbits config is a
secret
@dduportal
Copy link
Contributor Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants