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

Add k8s-release project and buckets for ci #1110

Merged
merged 1 commit into from
Aug 7, 2020

Conversation

spiffxp
Copy link
Member

@spiffxp spiffxp commented Aug 4, 2020

We need a home for community-owned buckets that are equivalent to:

  • gs://kubernetes-release-dev (hosts periodic builds of kubernetes)
  • gs://kuberentes-release-pull (hosts pr builds of kubernetes, eg: from e2e test jobs)

I'm suggesting we create a k8s-release project, and set it up
identically to the k8s-release-test-prod project currently in use by
release-engineering.

Then setup two equivalent buckets:

  • gs://k8s-release-dev
  • gs://k8s-release-pull

And give prow write access to these buckets. I suspect prow will need
admin access, but let's find out.

ref: #846 (comment)

@k8s-ci-robot k8s-ci-robot added cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. size/M Denotes a PR that changes 30-99 lines, ignoring generated files. wg/k8s-infra labels Aug 4, 2020
@k8s-ci-robot k8s-ci-robot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Aug 4, 2020
@spiffxp
Copy link
Member Author

spiffxp commented Aug 4, 2020

/cc @justaugustus @tpepper
for input from @kubernetes/release-engineering

/cc @thockin
FYI

@justaugustus
Copy link
Member

Matches what Aaron and I chatted about.
/lgtm
/approve

/hold for any other reviewers; lift when ready

@k8s-ci-robot k8s-ci-robot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Aug 4, 2020
@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Aug 4, 2020
@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: justaugustus, spiffxp

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@thockin
Copy link
Member

thockin commented Aug 4, 2020

Why kubernetes-release-dev (and I assume you mean the 3 regionals) and kubernetes-release-pull and not kubernetes-release (and regionals)?

Looking at stats, kubernetes-release is the next-highest cost bucket.

I think there's a way to literally have the bucket moved between projects - would that be a better path?

I know @justinsb started thinking about billing breakdown per-bucket. Unfortunately, GCP's normal billing breakdown stops at a project+SKU, but we can enable finer-grained logs. We should decide if it makes sense to lump ANYTHING together, or if we're better off with a project per bucket (or set of common-purpose buckets). Puke.

In other words, what if we just moved them all into k8s-artifacts-prod (or into a new k8s-release project)? That would mean that all external tools remain functional.

BTW - I have no idea where kubernetes-release-pull lives. Sigh.

@spiffxp
Copy link
Member Author

spiffxp commented Aug 5, 2020

Why kubernetes-release-dev (and I assume you mean the 3 regionals) and kubernetes-release-pull and not kubernetes-release (and regionals)?

I'm not aiming at (monetary) cost right now, but opportunity cost. We're blocked on moving some of the CI jobs out of google.com because gs://kuberetes-release-dev (technically its host project google-containers) won't allow non-google.com accounts to be added to IAM (ref: #846).

Moving CI related builds into community owned bucket(s) means we can move all release-blocking/merge-blocking jobs into community owned infra, and will empower more people to help out.

I think there's a way to literally have the bucket moved between projects - would that be a better path?

Discussed offline. There does not appear to be such a way, unfortunately. So migrating piecemeal or stop-the-world-and-sync are our options.

Unfortunately, GCP's normal billing breakdown stops at a project+SKU, but we can enable finer-grained logs.

The "stops at a project+SKU" is why I'm proposing something (k8s-release) instead of k8s-artifacts-prod. The dividing line in my head is k8s-artifacts-prod is for final/static release artifacts for every single kubernetes subproject; k8s-release is for all the intermediary stuff (per-pr, postsubmits, nightlies, etc) related to kubernetes

BTW - I have no idea where kubernetes-release-pull lives.

It's part of the kubernetes-jenkins project. That's going to be a fun one to migrate away from. But we don't have to do that today.

@thockin
Copy link
Member

thockin commented Aug 5, 2020

Why kubernetes-release-dev (and I assume you mean the 3 regionals) and kubernetes-release-pull and not kubernetes-release (and regionals)?

I'm not aiming at (monetary) cost right now, but opportunity cost. We're blocked on moving some of the CI jobs out of google.com because gs://kuberetes-release-dev (technically its host project google-containers) won't allow non-google.com accounts to be added to IAM (ref: #846).

Do we need just k-release-dev or also the -asia and -eu sister-buckets?

Moving CI related builds into community owned bucket(s) means we can move all release-blocking/merge-blocking jobs into community owned infra, and will empower more people to help out.

ACK

I think there's a way to literally have the bucket moved between projects - would that be a better path?

Discussed offline. There does not appear to be such a way, unfortunately. So migrating piecemeal or stop-the-world-and-sync are our options.

Correct. For kubernetes-release, we might go a long way by changing dl.k8s.io
and seeing how much is left.

Unfortunately, GCP's normal billing breakdown stops at a project+SKU, but we can enable finer-grained logs.

The "stops at a project+SKU" is why I'm proposing something (k8s-release) instead of k8s-artifacts-prod. The dividing line in my head is k8s-artifacts-prod is for final/static release artifacts for every single kubernetes subproject; k8s-release is for all the intermediary stuff (per-pr, postsubmits, nightlies, etc) related to kubernetes

Where would the current 'kubernetes-release' bucket go? Are we OK conflating
the bill for dev, pull, and release together? Or should we make a "one bucket
per project" rule for these?

Regardless, we should put an LB VIP in front of whatever bucket(s) so we don't
have to deal with this again. See ensure-prod-storage-gclb.sh for example. We
could maybe set up ONE VIP to cover everything (except the existing VIP, which
exposes at the root, sigh).

I am fine with the overall plan to make new buckets and copy stuff over, then
flip pointers, for these. We will need to consider kubernetes-release soon,
too.

BTW - I have no idea where kubernetes-release-pull lives.

It's part of the kubernetes-jenkins project. That's going to be a fun one to migrate away from. But we don't have to do that today.

We need a home for community-owned buckets that are equivalent to:
- gs://kubernetes-release-dev      (hosts periodic builds of kubernetes)
- gs://kubernetes-release-dev-asia (asia mirror of above)
- gs://kubernetes-release-dev-eu   (eu mirror of above)
- gs://kuberentes-release-pull     (hosts pr builds of kubernetes, eg: from e2e test jobs)

I'm suggesting we create a `k8s-release` project, and set it up
identically to the `k8s-release-test-prod` project currently in use by
release-engineering.

Then setup two equivalent buckets:
- gs://k8s-release-dev
- gs://k8s-release-pull

And give prow write access to these buckets
@k8s-ci-robot k8s-ci-robot removed the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Aug 6, 2020
@spiffxp
Copy link
Member Author

spiffxp commented Aug 6, 2020

Do we need just k-release-dev or also the -asia and -eu sister-buckets?

So I added equivalents for these. But I have to admit I'm not sure how the existing kubernetes-release buckets are mirrored to their asia/eu siblings. I would be curious to see how much traffic these buckets are seeing compared to the non-geo (us, I guess) bucket.

I misspoke earlier, gs://kubernetes-release-pull is under kubernetes-jenkins-pull. I confirmed it has no geo-specific buckets.

@spiffxp
Copy link
Member Author

spiffxp commented Aug 6, 2020

To unblock the current set of release-blocking jobs I don't think mirroring to geo-specific buckets is required. I think looking at existing traffic will help us decide how much of a priority setting up mirroring is.

@MushuEE
Copy link
Contributor

MushuEE commented Aug 7, 2020

/lgtm

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Aug 7, 2020
@spiffxp
Copy link
Member Author

spiffxp commented Aug 7, 2020

/hold cancel

@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 Aug 7, 2020
@k8s-ci-robot k8s-ci-robot merged commit 916ed33 into kubernetes:master Aug 7, 2020
@spiffxp spiffxp deleted the add-k8s-release branch August 7, 2020 20:49
@spiffxp
Copy link
Member Author

spiffxp commented Aug 7, 2020

Running ./infra/gcp/ensure-release-projects.sh

@spiffxp spiffxp added the area/prow Setting up or working with prow in general, prow.k8s.io, prow build clusters label Aug 25, 2020
@spiffxp
Copy link
Member Author

spiffxp commented Oct 23, 2020

re: #1110 (comment)

So I added equivalents for these. But I have to admit I'm not sure how the existing kubernetes-release buckets are mirrored to their asia/eu siblings. I would be curious to see how much traffic these buckets are seeing compared to the non-geo (us, I guess) bucket.

I did some digging and discovered a few things re: syncing to regional buckets:

  • kubernetes-release-dev hasn't been synced to regional buckets for over a year
  • kubernetes-release-eu/-asia buckets serve two orders of magnitude less traffic than kubernetes-release (I can only see back by six weeks

Given that, I think regional syncing should not be a blocker to moving forward. If we decide it's necessary after the fact, we should look at using Storage Transfer Service (https://cloud.google.com/storage-transfer/docs/create-manage-transfer-console) to sync

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/prow Setting up or working with prow in general, prow.k8s.io, prow build clusters cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. lgtm "Looks good to me", indicates that a PR is ready to be merged. size/M Denotes a PR that changes 30-99 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants