Skip to content

Commit 60220df

Browse files
committed
Update PRR description based on community feedback
1 parent 1d2f056 commit 60220df

File tree

1 file changed

+79
-10
lines changed

1 file changed

+79
-10
lines changed

sig-architecture/production-readiness.md

Lines changed: 79 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,90 @@ Kubernetes are observable, scalable and supportable, can be safely operated in
55
production environments, and can be disabled or rolled back in the event they
66
cause increased failures in production.
77

8-
More details may be found in the [PRR KEP].
8+
Production readiness reviews are done by a separate team, apart from the SIG
9+
leads (although SIG lead approval is needed as well, of course). It is useful to
10+
have the viewpoint of a team that is not as familiar with the intimate details
11+
of the SIG, but *is* familiar with Kubernetes and with operating Kubernetes in
12+
production. Experience through our dry runs in 1.19 and 1.20 have shown that
13+
this slightly "outsider" view helps identify otherwise missed items.
914

10-
## Status
15+
More background may be found in the [PRR KEP].
1116

12-
As of 1.19, production readiness reviews are required, and are part of the KEP
13-
process. The PRR questionnaire previously found here has been incorporated into
14-
the [KEP template]. The template details the specific questions that must be
15-
answered, depending on the stage of the feature.
17+
## Status
1618

1719
As of 1.21, PRRs are now blocking. PRR _approval_ is required for the enhancement
18-
to be part of the release.
20+
to be part of the release. This means that any KEPs targeting the release for any
21+
stage, and in - or moving to - `implementable` state, will require production
22+
readiness approval by the *Enhancements Freeze Date*.
23+
24+
Note that some of the questions in the [KEP template] should be answered in both
25+
the KEP's README.md and the `kep.yaml`, in order to support automated checks on
26+
the PRR. The template points out these as needed.
27+
28+
## Submitting a KEP for production readiness approval
29+
30+
The KEP template production readiness questionnaire should be filled out by the
31+
KEP authors, and reviewed by the SIG leads. Once the leads are satisfied with
32+
both the overall KEP (i.e., it is ready to move to `implementable` state) and
33+
the PRR answers, the authors may request PRR approval:
34+
35+
* Assign a PRR approver from the `prod-readiness-approvers` list in the
36+
[OWNERS_ALIASES] file. This may be done earlier as well, to get early feedback
37+
or just to let the approver know. Reach out on the `#prod-readiness` Slack
38+
channel or just pick someone from the list.
39+
* Update the `kep.yaml`, setting the `stage`, `latest-milestone`, and the
40+
`milestone` struct (which captures per-stage release versions).
41+
* Create a `prod-readiness/<sig>/<KEP number>.yaml` file, with the PRR
42+
approver's GitHub handle for the specific stage
43+
* See this [example PRR approval request PR].
44+
45+
The PRR approvers use the `kepctl` tool to identify
46+
all outstanding requests for PRR approval, and are responsible for providing
47+
timely feedback so that KEPs are not delayed. If your need is urgent it doesn't
48+
hurt to ping the person on Slack, as well, but it is not necessary.
49+
50+
## Common feedback from reviewers
51+
52+
Some common issues we see:
53+
* Missing metrics. Often metrics are overlooked, or sometimes they are defined
54+
but not wired up (implemented). Please see this [example metrics PR] to better
55+
understand how to add a metric.
56+
* Be sure to differentiate between when to use a *metric* vs an *event*. Metrics
57+
are for the cluster operators and should be primarily about system status and issues,
58+
whereas events can be used to surface user errors. That is, in general the audience
59+
for metrics is cluster operator whereas the audience for events is the user (creator
60+
of that resource). Users won't usually see metrics, and cluster operators
61+
don't generally need to know about user mistakes.
62+
63+
## Becoming a prod readiness reviewer or approver
64+
65+
The prod readiness team is open and eager to add new members. The ideal
66+
production readiness approver is someone with deep knowledge of Kubernetes overall
67+
and the ability to think from the point of view of a cluster operator. An
68+
excellent background would, for example, be someone that is an SRE for a fleet
69+
of Kubernetes clusters.
70+
71+
To become a reviewer:
72+
* Inform the PRR team on Slack (`#prod-readiness`) or by attending the
73+
bi-weekly meeting.
74+
* Read/study previous PRR comments and production readiness responses in existing KEPs.
75+
* Choose some KEPs requiring PRR and perform a review. Put "shadow prod readiness review"
76+
in your review comments so that the assigned PRR approver knows your intent.
77+
* After two release cycles, if you have shown good judgement and quality reviews,
78+
you can propose yourself as approver by submitting a PRR to add your GitHub
79+
handle to the `prod-readiness-approvers` alias in [OWNERS_ALIASES].
80+
81+
## Finding KEPs needing prod readiness review
82+
83+
The prod readiness team uses the [kepctl query] command line tool to identify KEP PRs
84+
that need review. For example:
1985

20-
Note that some of the questions should be answered in both the KEP's README.md
21-
and the `kep.yaml`, in order to support automated checks on the PRR. The
22-
template points out these as needed.
86+
`./cmd/kepctl/kepctl query --sig '.*' --prr '@johnbelamaric' --include-prs
87+
--gh-token-path ~/gh-token --status implementable,provisional`
2388

2489
[PRR KEP]: https://git.k8s.io/enhancements/keps/sig-architecture/1194-prod-readiness
2590
[KEP template]: https://git.k8s.io/enhancements/keps/NNNN-kep-template
91+
[OWNERS_ALIASES]: https://git.k8s.io/enhancements/OWNERS_ALIASES
92+
[example PRR approval request PR]: https://github.com/kubernetes/enhancements/pull/2274/files
93+
[example metrics PR]: https://github.com/kubernetes/kubernetes/pull/97814
94+
[kepctl query]: https://git.k8s.io/enhancements/cmd/kepctl

0 commit comments

Comments
 (0)