-
Notifications
You must be signed in to change notification settings - Fork 397
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
Release dependency management improvements umbrella #601
Comments
+1000
I'm now more sad I couldn't make the meeting today
…On Tue, Apr 23, 2019, 17:32 Tim Pepper ***@***.***> wrote:
There is an ongoing need for better managing external dependencies.
The release team regularly scrambles to collect the current preferred
dependency versions. These are inconsistently articulated in multiple files
across multiple repos in non-machine-readable ways. And some are even
untracked outside of anecdotal lore.
Various prior issues have been opened, for example #400
<#400> and this regularly
comes up in release retrospectives.
SIG Release needs to draft a KEP for implementation by the release team to
outline the problem space, possible solutions. We need a machine readable,
structured, single source of truth. It should have a broad OWNERS set to
get wide review on changes and not be blocked on a small set of reviewers.
Code in the project that needs to get “etcd” should get the version
specified in this file. Release notes should draw from this file and its
changelog. A PR changing a dependency in this file might get a special
label, insured release notes inclusion, and special review. Special review
can be needed to insure one group doesn't upgrade for a fix, introduce a
regression in some other code, those owners revert the upgrade,
re-introducing the prior bug (this has actually happened multiple times).
One potential problem with this approach, which has been a past blocker,
is that this could mean work in a sub-project repo requires checking out
some other repo in order to get this hypothetical yaml saying what are the
preferred versions.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#601>, or mute the thread
<https://github.com/notifications/unsubscribe-auth/AAKUO6C4OAKAS6XTXQ4ZUS3PR557BANCNFSM4HH6SQZA>
.
|
/area release-eng |
Circling back to this item - I expressed interest in helping out here - I mostly care for the purposes of 1.15 for defining what is the list of dependencies that we need to care about I can start a draft of a KEP for what are those dependencies |
/assign |
/cc |
Initial PR for discussion here: kubernetes/kubernetes#79366 |
Notice sent to k-dev, @kubernetes/sig-release, @kubernetes/release-team, and @kubernetes/release-engineering regarding the merged changes in kubernetes/kubernetes#79366: https://groups.google.com/d/topic/kubernetes-dev/cTaYyb1a18I/discussion |
also error message improvements here: kubernetes/kubernetes#80060 |
build/external: Move dependencies.yaml and update OWNERS - kubernetes/kubernetes#80799 |
I propose we un-milestone 1.16 this umbrella issue and remove the area release team, assuming that the release notes team for 1.16 (@saschagrunert @onyiny-ang @cartyc @kcmartin @paulbouwer ) have the dependencies.yaml file documented and codified as the source of info for the dependencies section https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.15.md#dependencies It may also be about time to go ahead and close this as complete for the first go and move from the giant long lived umbrella issue to smaller point issues (like is happening already above) for incremental improvement. |
Thanks for the hint, I assume that we still update the release notes dependency section manually for 1.16. :) That may be a bit out of scope, but I wrote a tool some time ago to diff go modules between git releases automatically: https://github.com/saschagrunert/go-modiff |
/remove-area area/release-team |
@lachie83: Those labels are not set on the 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. |
/remove-area release-team |
Issues go stale after 90d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
/lifecycle frozen |
@Pluies reached out to me before the holidays with this:
What do we think about using zeitgeist? |
Other than etcd is not specified in tree by anything other than cluster provisioning tooling, which we have issues open about removing from the tree. vendor/ already has an established dependency review system, and I don't think it needs any new tooling. what other dependencies are we talking about? |
I would also note that in order to maintain a tool that brings up clusters you pretty much need the freedom to update dependencies at will. We do not force all cluster tools to synchronize on some specific version of e.g. containerd today, and I would not be in favor of doing so in the future. |
I agree with @BenTheElder that users (and vendors) need the ability to override project preferred defaults, if that's what was stated ;) My primary point is we need a stronger definition of "project preferred defaults". We do have these sprinkled around the code. We do bring up clusters, intentionally with certain components and component versions, and run tests with intention of proving specific combinations. We observe and fix real bugs relative to specific external non-golang dependency name/version/release tuples. At some point we, the collective us as a community, need to understand what we're engineering, coding and testing against, and giving "support". IMO we should do that more strongly. From the older example linked above, there was a time where we tried to track more: Since then the list of non-go-modules dependencies which are tracked is down to golang and etcd: Another point that changelog shows is that we don't have a canonical source of truth. The user-focused message there is coming from the long series of commits and gives the sum of those (in arbitrary order?):
Also interesting to me: K3s proves one may not even need etcd at all (or via a small patch anyway, and with a set of caveats on runtime robustness). The kubeadm departure from k/k is an interesting case. Since they intend to branch and version with k/k, are they implicitly following any k/k's implicit dependencies? They (and other installers) do actively track some dependencies. I'm open to arguments that it's not on us to manage. As the monolith splits and toward a more loosely coupled future, can we argue there is no longer a need for common base expectations? To me the split feels like it makes worse the potential for unmanaged risk of implicit dependencies and end-user confusion. |
yes, unless something is broken.
most installers usually trail behind. |
+1 @neolit123 @tpepper :
IMO project preferred defaults is a problematic topic for political rather than technical reasons. Are we going to start advertising preferred CRI and CNI ...?
We don't provide support for external tools. Doing so is perhaps not the best idea. Complete solutions like kops, minikube, kind etc. do package some external tools necessarily and provide their own support there, but for kubernetes to do so seems like a mis-step unless we're prepared to pick a favorite for each option...
Cluster autoscaler should advertise it's own compatibility with kubernetes and not vice versa, as should CNI implementations and CSI implementations etc. klog is ??? not an issue??
Zero patches away, you can "simply" implement the etcd wire protocol but there are some problems there that I'd rather discuss in another forum :+) |
In as much as there are classes of interfaces or providers, as an open source project with limited resources I feel like we have a few paths:
Seriously though the latter is obviously highly unlikely to happen. The middle is where we are now. The first is simpler but for the choice of which.
We don't support external tools, but we debug problem reports. We support our code running in conjunction with external components both in CI and we welcome end-users' problem reports. That requires our finite resources have an understanding of and ability to debug a not-very-finite set of runtime combinations. Can we actively manage that complexity or must it be a free for all? I feel like if we declare the things we run in test, do that in common (across the org?), reduce the size of the test matrix, then we can have more realistic conversations about what is containable beyond a simple, common short list of variations and at what cost. We feel out of balance and unsustainable where we are today. |
Relates IMO partly to conversation in kubernetes/test-infra#18551 and #966 around establishing more clean test plan. |
/unassign |
@justaugustus: GuidelinesPlease ensure that the issue body includes answers to the following questions:
For more details on the requirements of such an issue, please see here and ensure that they are met. If this request no longer meets these requirements, the label can be removed 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. |
There is an ongoing need for better managing external dependencies.
The release team regularly scrambles to collect the current preferred dependency versions. These are inconsistently articulated in multiple files across multiple repos in non-machine-readable ways. And some are even untracked outside of anecdotal lore.
Various prior issues have been opened, for example #400 and this regularly comes up in release retrospectives.
SIG Release needs to draft a KEP for implementation by the release team to outline the problem space, possible solutions. We need a machine readable, structured, single source of truth. It should have a broad OWNERS set to get wide review on changes and not be blocked on a small set of reviewers. Code in the project that needs to get “etcd” should get the version specified in this file. Release notes should draw from this file and its changelog. A PR changing a dependency in this file might get a special label, insured release notes inclusion, and special review. Special review can be needed to insure one group doesn't upgrade for a fix, introduce a regression in some other code, those owners revert the upgrade, re-introducing the prior bug (this has actually happened multiple times).
One potential problem with this approach, which has been a past blocker, is that this could mean work in a sub-project repo requires checking out some other repo in order to get this hypothetical yaml saying what are the preferred versions.
The text was updated successfully, but these errors were encountered: