Skip to content

Commit 8da0960

Browse files
committed
Link moved platforms guide
Signed-off-by: Sascha Grunert <[email protected]>
1 parent 5d89232 commit 8da0960

File tree

2 files changed

+3
-157
lines changed

2 files changed

+3
-157
lines changed

release-engineering/platforms/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ We consider the combination of architecture (`GOARCH`) and operating system
77
categories of platforms as well as guiding through their graduation criteria.
88

99
How to introduce new supported architectures and operating systems is outline in
10-
the [platforms guide](guide.md).
10+
the [platforms guide](https://github.com/kubernetes/community/blob/master/contributors/guide/platforms.md).
1111

1212
## Tiers
1313

Lines changed: 2 additions & 156 deletions
Original file line numberDiff line numberDiff line change
@@ -1,157 +1,3 @@
1-
# Platforms Guide
1+
This document has been moved:
22

3-
This document outlines the necessary steps to either add or remove supported
4-
platform builds in Kubernetes.
5-
6-
## Adding supported platforms
7-
8-
The default Kubernetes platform is `linux/amd64`. This platform is fully tested,
9-
where build and release systems initially supported only that. A while ago we
10-
started an [effort to support multiple architectures][0]. As part of this
11-
effort, we added support in our build and release pipelines for the
12-
architectures `arm`, `arm64`, `ppc64le` and `s390x` on different operating
13-
systems like Linux, Windows and macOS.
14-
15-
[0]: https://github.com/kubernetes/kubernetes/issues/38067
16-
17-
The main focus was to have binaries and container images to be available for
18-
these architectures/operating systems. Contributors should be able to to take
19-
these artifacts and set up CI jobs to adequately test these platforms.
20-
Specifically to call out the ability to run conformance tests on these
21-
platforms.
22-
23-
Target of this document is to provide a starting point for adding new platforms
24-
to Kubernetes from a SIG Architecture and SIG Release perspective. This does not
25-
include release mechanics or supportability in terms of functionality.
26-
27-
### Step 1: Building
28-
29-
The container image based build infrastructure should support this architecture.
30-
This implicitly requires the following:
31-
32-
- golang should support the platform
33-
- All dependencies, whether vendored or run separately, should support this
34-
platform
35-
36-
In other words, anyone in the community should be able to use our build infra to
37-
generate all artifacts required to stand up Kubernetes.
38-
39-
More information about how to build Kubernetes can be found in [the build
40-
documentation][1].
41-
42-
[1]: https://github.com/kubernetes/kubernetes/tree/3f7c09e/build#building-kubernetes
43-
44-
### Step 2: Testing
45-
46-
It is not enough for builds to work as it gets bit-rotted quickly when we vendor
47-
in new changes, update versions of things we use etc. So we need a good set of
48-
tests that exercise a wide battery of jobs in this new architecture.
49-
50-
A good starting point from a testing perspective are:
51-
52-
- unit tests
53-
- e2e tests
54-
- node e2e tests
55-
56-
This will ensure that community members can rely on these architectures on a
57-
consistent basis. This will give folks who are making changes a signal when they
58-
break things in a specific architecture.
59-
60-
This implies a set of folks who stand up and maintain both post-submit and
61-
periodic tests, watch them closely and raise the flag when things break. They
62-
will also have to help debug and fix any platform specific issues as well.
63-
64-
Creating custom [testgrid][4] dashboards can help to monitor platform specific
65-
tests.
66-
67-
[4]: https://testgrid.k8s.io
68-
69-
### Step 3: Releasing
70-
71-
With the first 2 steps we have a reasonable expectation that there are people
72-
taking care of a supported platform and it works in a reproducible environment.
73-
74-
Getting to the next level is a big jump from here. We are talking about real
75-
users who are betting their business literally on the work we are doing here. So
76-
we need guarantees around "can we really ship this!?" question.
77-
78-
Specifically we are talking about a set of CI jobs in our release-informing and
79-
release-blocking tabs of our testgrid. The Kubernetes release team has a "CI
80-
signal" team that relies on the status(es) of these jobs to either ship or hold
81-
a release. Essentially, if things are mostly red with occasional green, it would
82-
be prudent to not even bother making this architecture as part of the release.
83-
CI jobs get added to release-informing first and when these get to a point where
84-
they work really well, then they get promoted to release-blocking.
85-
86-
The problem here is once we start shipping something, users will start to rely
87-
on it, whether we like it or not. So it becomes a trust issue on this team that
88-
is talking care of a platform/architecture. Do we really trust this team not
89-
just for this release but on an ongoing basis. Do they show up consistently when
90-
things break, do they proactively work with testing/release on ongoing efforts
91-
and try to apply them to their architectures. It's very easy to setup a CI job
92-
as a one time thing, tick a box and advocate to get something added. It's a
93-
totally different ball game to be there consistently over time and show that you
94-
mean it. There has to be a consistent body of people working on this over time
95-
(life happens!).
96-
97-
What are we looking for here, a strong green CI signal for release managers
98-
to cut a release and for folks to be able to report problems and them getting
99-
addressed. This includes [conformance testing][2] as use of the Kubernetes
100-
trademark is controlled through a conformance ensurance process. So we are
101-
looking for folks here to work with [the conformance sub project][3] in addition
102-
to testing and release.
103-
104-
[2]: https://github.com/cncf/k8s-conformance
105-
[3]: https://bit.ly/sig-architecture-conformance
106-
107-
### Step 4: Finishing
108-
109-
If you got this far, you really have made it! You have a clear engagement with
110-
the community, you are working seamlessly with all the relevant SIGs, you have
111-
your content in the Kubernetes release and get end users to adopt your
112-
architecture. Having achieved conformance, you will gain conditional use of the
113-
Kubernetes trademark relative to your offerings.
114-
115-
### Generic rules to consider
116-
117-
- We should keep it easy for contributors to get into Step 1.
118-
- Step 1, by default things should not build and should be switched off.
119-
- Step 1, should not place undue burden on review or infrastructure (case in
120-
point - Windows).
121-
- Once Step 2 is done, we could consider switching things on by default (but
122-
still not in release artifacts).
123-
- Once Step 3 is done, binaries / images in arch can ship with release.
124-
- Step 2 is at least the default e2e-gce equivalent, PLUS the node e2e tests.
125-
More the better.
126-
- Step 2 will involve 3rd party reporting to test-grid at the least.
127-
- Step 2 may end up needing boskos etc to run against clouds (with these arches)
128-
where we have credits.
129-
- Step 3 is at least the conformance test suite. More the better. Using
130-
community tools like prow/kubeadm is encouraged but not mandated.
131-
- Step 4 is where we take this up to CNCF trademark program. For at least a year
132-
in Step 3 before we go to Step 4.
133-
- If at any stage things bit rot, we go back to a previous step, giving an
134-
opportunity for the community to step up.
135-
136-
## Deprecating and removing supported platforms
137-
138-
Supported platforms may be considered as deprecated for various reasons, for
139-
example if they are being replaced by new ones, are not actively used or
140-
maintained any more. Deprecating an already supported platform has to follow a
141-
couple of steps:
142-
143-
1. The platform deprecation has been announced on k-dev and links to a k/k issue
144-
for further discussions and consensus.
145-
146-
1. The deprecation will be active immediately after consensus has been reached
147-
at a set deadline. This incorporates approval from SIG Release and
148-
Architecture.
149-
150-
1. Removing the supported platform will be done in the beginning of the next
151-
minor (v1.N+1.0) release cycle, which means to:
152-
- Update the k/k build scripts to exclude the platform from all targets
153-
- Update the k/sig-release repository to reflect the current set of supported
154-
platforms.
155-
156-
Please note that actively supported release branches are not affected by the
157-
removal. This ensures compatibility with existing artifact consumers.
3+
https://github.com/kubernetes/community/blob/master/contributors/guide/platforms.md

0 commit comments

Comments
 (0)