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

Emulation Version guidance needs to be incorporated into feature-gates.md #8082

Open
jpbetz opened this issue Sep 20, 2024 · 11 comments · May be fixed by #8087
Open

Emulation Version guidance needs to be incorporated into feature-gates.md #8082

jpbetz opened this issue Sep 20, 2024 · 11 comments · May be fixed by #8087
Labels
sig/api-machinery Categorizes an issue or PR as relevant to SIG API Machinery.

Comments

@jpbetz
Copy link
Contributor

jpbetz commented Sep 20, 2024

We need to update https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/feature-gates.md to fully incorporate the workflows and guidance for emulation version. This is used by contributors and reviewers as a source-of-truth.

@k8s-ci-robot k8s-ci-robot added the needs-sig Indicates an issue or PR lacks a `sig/foo` label and requires one. label Sep 20, 2024
@jpbetz
Copy link
Contributor Author

jpbetz commented Sep 20, 2024

/sig api-machinery

@k8s-ci-robot k8s-ci-robot added sig/api-machinery Categorizes an issue or PR as relevant to SIG API Machinery. and removed needs-sig Indicates an issue or PR lacks a `sig/foo` label and requires one. labels Sep 20, 2024
@jpbetz
Copy link
Contributor Author

jpbetz commented Sep 20, 2024

cc @Jefftree @aaron-prindle

@jpbetz
Copy link
Contributor Author

jpbetz commented Sep 20, 2024

cc @thockin

@Jefftree
Copy link
Member

Other than the emulation version guidance bits, a couple policies also need to be revised imo.

  1. https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/feature-gates.md#ga-features:

After at least two releases post-GA and deprecation, feature gates should be removed.

We will need to enforce 3 releases to support proper n-3

  1. https://kubernetes.io/docs/reference/using-api/deprecation-policy/#deprecation:

Rule #9: Feature gates must be deprecated when the corresponding feature they control transitions a lifecycle stage as follows. Feature gates must function for no less than:
Beta feature to GA: 6 months or 2 releases (whichever is longer)
Beta feature to EOL: 3 months or 1 release (whichever is longer)
Alpha feature to EOL: 0 releases

Beta features are able to be deprecated in one release and alpha features can be deprecated immediately. For the most accurate emulation, it seems like we would want n-3 with these as well? I'm a bit unsure about the alpha case because they would be disabled by default and are expected to be unstable so we might not even support full emulation for complicated alphas.

@thockin
Copy link
Member

thockin commented Sep 23, 2024

I think n-3 applies for beta, but ISTR that alpha was explicitly not covered? Or did I dream that?

@aojea
Copy link
Member

aojea commented Sep 24, 2024

proper n-3

please explain on the docs update where the n-3 rationale is coming

alpha was explicitly not covered

is there any reason or benefit in covering alphas? we better not cover all alphas, no?

@Jefftree Jefftree linked a pull request Sep 24, 2024 that will close this issue
1 task
@jpbetz
Copy link
Contributor Author

jpbetz commented Sep 25, 2024

I think n-3 applies for beta, but ISTR that alpha was explicitly not covered? Or did I dream that?

I probably mentioned this. I has proposed this in the original KEP: "Non-Goals; Support --emulation-version for Alpha features. Alpha feature are not designed to be upgradable, so we will not allow alpha features to be enabled when --emulation-version is set." https://github.com/kubernetes/enhancements/blob/master/keps/sig-architecture/4330-compatibility-versions/README.md#non-goals.

I really like the simplification of not having to deal with alpha APIs/features at all with compatibility version. But I don't know if we ever implemented a check that prevents enabling alpha APIs/features when --emulate-version is set. So there are details we need to follow up on.

@jpbetz
Copy link
Contributor Author

jpbetz commented Sep 25, 2024

proper n-3

please explain on the docs update where the n-3 rationale is coming

+1 to adding to docs. What I remember us deciding was to make it possible to do a skip-level upgrade from the oldest supported k8s version to the newest supported k8s version. So supporting --emulate-version up to n-3 (or is it n-4?) such that this is possible seemed particularly valuable.

alpha was explicitly not covered

is there any reason or benefit in covering alphas? we better not cover all alphas, no?

I don't see any value to supporting alpha enablement in conjunction with --emulate-version. xref: #8082 (comment)

@aojea
Copy link
Member

aojea commented Oct 3, 2024

--emulate-version up to n-3 (or is it n-4?)

n-3 https://github.com/kubernetes/enhancements/tree/master/keps/sig-architecture/3935-oldest-node-newest-control-plane#summary

I don't see any value to supporting alpha enablement

agree, and omitting this does not stop anybody in the future to work on enable it

@thockin
Copy link
Member

thockin commented Oct 11, 2024

One thing this changes, unless I misunderstand:

  • Previously we could remove all the gate-related logic when a gate became GA. Then, +2 releases, we would remove the gate itself.
  • Now we have to leave the gated logic, even when GA. At +3 releases we can remove the gated logic AND the gate itself.

Right?

@Jefftree
Copy link
Member

One thing this changes, unless I misunderstand:

  • Previously we could remove all the gate-related logic when a gate became GA. Then, +2 releases, we would remove the gate itself.
  • Now we have to leave the gated logic, even when GA. At +3 releases we can remove the gated logic AND the gate itself.

Right?

Correct, working on updating the docs here #8087

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
sig/api-machinery Categorizes an issue or PR as relevant to SIG API Machinery.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants