Skip to content

Commit 7494a0c

Browse files
committed
Add process for SIG-Node collaboration
This adds public documentation of the process for containerd project collaboration with Kubernetes SIG-Node. It is mostly a formalization of what we have already been doing informally, but the formalization should help with visibility and work distribution. Signed-off-by: Samuel Karp <[email protected]>
1 parent 5d2dd66 commit 7494a0c

File tree

1 file changed

+148
-0
lines changed

1 file changed

+148
-0
lines changed

SIG-NODE.md

Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
# Collaboration with Kubernetes SIG-Node
2+
3+
containerd is a popular container runtime used with
4+
[Kubernetes](https://kubernetes.io). containerd implements the Kubernetes
5+
Container Runtime Interface (CRI) and is expected to participate in the
6+
development and implementation of CRI.
7+
8+
Changes to Kubernetes (including CRI) are primarily driven through the
9+
[Kubernetes Enhancement Proposal (KEP) process](https://github.com/kubernetes/enhancements).
10+
KEPs are proposed to individual Special Interest Groups (SIGs) within the
11+
Kubernetes project, which help to refine, clarify, and decide the content of an
12+
individual KEP as well as drive its implementation. CRI-related KEPs are
13+
primarily handled through SIG-Node. SIG-Node has
14+
[adopted a policy](https://www.kubernetes.dev/docs/code/cri-api-dev-policies/)
15+
which requires KEPs to reach maturity in both containerd and CRI-O before
16+
advancing through graduation stages.
17+
18+
This document describes the process that the containerd project uses to
19+
collaborate with SIG-Node on any KEP or other CRI-related change.
20+
21+
## Goals
22+
23+
* Provide visibility of SIG-Node integration work for containerd (including
24+
KEPs) for:
25+
* containerd maintainers and community members who are not directly involved
26+
in SIG-Node
27+
* SIG-Node participants who are not involved in the containerd community
28+
* Ensure containerd maintainers and communtiy members have adequate
29+
opportunities to participate in design without requiring full context on
30+
every SIG-Node KEP or who are not familiar with the KEP process
31+
* Ensure contributors understand the status of their proposed contributions
32+
* Spread the KEP tracking and review load among interested maintainers, and
33+
enable at least two interested containerd maintainers per KEP or
34+
Kubernetes-related work item in order to facilitate knowledge sharing
35+
36+
## Non-goals
37+
38+
* Change the development or release process of containerd. See the
39+
[contribution guidelines](CONTRIBUTING.md) and
40+
[versioning and release](https://containerd.io/releases) page.
41+
* Guarantee KEP delivery, outside of providing feedback during KEP design,
42+
guiding contributors through processes, and reviews.
43+
44+
## Roles
45+
46+
* SIG-Node member liaison - a containerd maintainer responsible for
47+
facilitating communication between SIG-Node and the containerd project
48+
regarding KEP status, targeted containerd releases, and any other integration
49+
work or pain points.
50+
* KEP shepherd - for each KEP, at least one (preferably two) containerd
51+
maintainer(s) responsible for helping a KEP move through the implementation
52+
and release process in containerd.
53+
54+
## Metadata
55+
56+
* Per-KEP issue in the
57+
[containerd/containerd](https://github.com/containerd/containerd) repository
58+
for tracking KEPs that require CRI changes in the container
59+
runtime or one of our other containerd subprojects. (This includes
60+
relatively minor changes, such as a runc update or checking containerd config
61+
to align defaults with feature gate GAs.)
62+
* Labels within the containerd/containerd repository corresponding to
63+
Kubernetes minor releases, applied to KEP tracking issues and PRs
64+
* Recording the assigned shepherd(s) on the KEP tracking issue
65+
66+
## Process
67+
68+
For a KEP to be reviewed and implemented in containerd:
69+
70+
### Issue management
71+
72+
* An issue should be created in the
73+
[containerd/containerd repository](https://github.com/containerd/containerd)
74+
tracking the individual KEP as soon as possible
75+
* containerd KEP tracking issues may be opened by one of the KEP owners,
76+
an interested maintainer, or by a group within SIG-Node that is managing
77+
the KEP process
78+
* This includes all KEPs for SIG-Node, whether they are in Draft or Approved
79+
status. The same issue should continue to track the KEP through each
80+
stage, alpha(s), beta(s), and GA
81+
* The new issue title should include both the KEP number and a short title or
82+
description of the goal of the KEP
83+
* containerd maintainers will triage new KEP tracking issues as needed
84+
* KEP tracking issues should be added to a label for the Kubernetes release
85+
cycle within the containerd/containerd repository during triage
86+
87+
### SIG-Node Liaison
88+
89+
At least one containerd maintainer will be responsible to liaise with SIG-Node
90+
for each Kubernetes release cycle. The liaison role involves:
91+
92+
* Tracking the status of each KEP both in containerd and the larger context in
93+
Kubernetes (including the status of the KEP in kubelet and/or other
94+
involved/dependent SIGs / projects).
95+
* Tracking the status of the other types of Node Integration pain points
96+
critical to the upcoming kubernetes releases (likely via issue)
97+
* Communicating which containerd release(s) will include a given KEP (usually
98+
the next minor release in our
99+
[6-month release cadence](https://containerd.io/releases/#release-cadence))
100+
and whether there are implications to prior containerd releases as KEPs are
101+
promoted
102+
* Ensuring other types of SIG-Node integration pain points have at least one
103+
containerd maintainer assigned. These include urgent Kubernetes PRs that
104+
require containerd support and standard issues that don’t require a KEP, long
105+
running infra tasks, major critest/crictl interop up on
106+
kubernetes-sigs/critools, etc.
107+
* Being a
108+
[Kubernetes org member](https://github.com/kubernetes/community/blob/master/community-membership.md#member)
109+
and
110+
[SIG-Node member](https://github.com/kubernetes/community/blob/master/sig-node/sig-node-contributor-ladder.md)
111+
(prerequisite for volunteering)
112+
* Being available in the `#sig-node` channel of the [Kubernetes slack](https://slack.kubernetes.io)
113+
114+
### KEP shepherd
115+
116+
At least one containerd maintainer will be assigned (as part of KEP triage) to
117+
shepherd each active KEP planned for integration with containerd. An active
118+
KEP is one which has already been implemented in an existing Kubernetes release
119+
or is being considered for an upcoming Kubernetes release. The shepherd role
120+
involves:
121+
122+
* Engaging as early as possible in the KEP discussion (via the primary KEP
123+
issue, `#sig-node` Slack channel, and SIG-Node weekly calls) and design to
124+
represent the containerd maintainer perspective in terms of
125+
architecture/layering (i.e., should the new functionality reside in the
126+
runtime, Kubelet, or some other component) and priority so that
127+
implementation can be scheduled into an upcoming release.
128+
* Ensuring maintainers have consensus on how the KEP should be implemented in
129+
containerd and communicating to the KEP owner and our liaison if consensus on
130+
implementation details and/or timing cannot be reached in time for the next
131+
minor release.
132+
* Ensuring the implementation design discussion happens in the open and
133+
transparently; allowing proposals from the KEP owner, contributors, and
134+
maintainers.
135+
* Coordinating contributors to implement the KEP
136+
* Coordinating the review and merge of containerd side KEP-related PRs
137+
coinciding with required k/k CRI, kubelet, and other project dependencies
138+
* Shepherds should provide initial review of the containerd PRs
139+
* Shepherds should ensure that documentation for any new CRI API clearly
140+
articulates any guarantees that containerd must provide and any API
141+
behaviors that are not clear from the API declaration
142+
* Assist the liason(s) with reviews of the other KEP dependent PRs, such as CRI
143+
API changes, Kubelet changes, etc.
144+
* Communicating the status of the KEP clearly on the tracking issue which will
145+
be cross linked to the KEP issue document, PRs, and other SIG-Node tracking
146+
documents.
147+
* The shepherd role is not necessarily responsible for designing or
148+
implementing the KEP themselves

0 commit comments

Comments
 (0)