Skip to content

Commit 7d8e56b

Browse files
authored
Initial Linkerd 1.3.0 conformance reports (#3839)
* Conformance reports for Linkerd and Buoyant Enterprise for Linkerd Signed-off-by: Flynn <[email protected]> * Tell people where to stand to run the tests. Signed-off-by: Flynn <[email protected]> * Wordsmithing. Signed-off-by: Flynn <[email protected]> * Update conformance report (with standard report names and reproduction scripts) Signed-off-by: Flynn <[email protected]> * Clean up lint failures. Signed-off-by: Flynn <[email protected]> * Correctly mark unsupported features, and clean up run-conformance scripts a touch Signed-off-by: Flynn <[email protected]> * Fix typos 🤦‍♂️ Signed-off-by: Flynn <[email protected]> * Linkerd's Gateway API support is not experimental. Signed-off-by: Flynn <[email protected]> * Update conformance results now that all the mesh tests are correctly being run Signed-off-by: Flynn <[email protected]> * Update READMEs to note that these tests used the v1.3.0 CRDs, but the main branch. (There are better MESH-profile tests on main that I wanted to take advantage of.) Signed-off-by: Flynn <[email protected]> --------- Signed-off-by: Flynn <[email protected]>
1 parent 6cd1558 commit 7d8e56b

File tree

7 files changed

+357
-1
lines changed

7 files changed

+357
-1
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Buoyant Enterprise for Linkerd
2+
3+
## Table of Contents
4+
5+
| API channel | Implementation version | Mode | Report |
6+
|--------------|-------------------------------------------|---------|--------------------------------------------------------|
7+
| standard | [enterprise-2.18](https://docs.buoyant.io/buoyant-enterprise-linkerd/latest/overview//) | default | [enterprise-2.18 report](./standard-2.18-default-report.yaml) |
8+
9+
## Notes
10+
11+
This report uses the v1.3.0 Gateway API CRDs, but was run using the tests on
12+
the `main` branch at commit `6cd1558a9e`, in order to take advantage more
13+
effective tests for the `MESH` conformance profile that landed after v1.3.0
14+
was cut.
15+
16+
## Reproduce
17+
18+
To reproduce a Buoyant Enterprise for Linkerd conformance test report:
19+
20+
0. `cd` to the top level of this repository.
21+
22+
1. Create an empty cluster.
23+
24+
2. Run `bash conformance/reports/v1.3.0/buoyant-enterprise-for-linkerd/run-conformance.sh`.
25+
26+
You can set `LINKERD_VERSION`, `GATEWAY_API_CHANNEL`, and
27+
`GATEWAY_API_VERSION` if you want to try different versions of things.
28+
(Note that if you set `GATEWAY_API_VERSION`, you'll need to be on a
29+
matching Gateway API branch.)
30+
31+
3. The conformance report will be written to the
32+
`conformance/reports/v1.3.0/buoyant-enterprise-for-linkerd/` directory.
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
#!/bin/sh
2+
3+
# Copyright 2025 The Kubernetes Authors.
4+
#
5+
# Licensed under the Apache License, Version 2.0 (the "License");
6+
# you may not use this file except in compliance with the License.
7+
# You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
17+
# Set these as needed.
18+
LINKERD_VERSION=${LINKERD_VERSION:-enterprise-2.18}
19+
GATEWAY_API_CHANNEL=${GATEWAY_API_CHANNEL:-standard}
20+
GATEWAY_API_VERSION=${GATEWAY_API_VERSION:-v1.3.0}
21+
22+
UNSUPPORTED_FEATURES="MeshHTTPRouteRedirectPath,MeshHTTPRouteRewritePath"
23+
24+
CONFORMANCE_PRODUCT=buoyant-enterprise-for-linkerd
25+
CONFORMANCE_VERSION=$(echo $LINKERD_VERSION | cut -d- -f2-)
26+
GATEWAY_API_BASE_URL=https://github.com/kubernetes-sigs/gateway-api/releases/download
27+
28+
echo "Using Buoyant Enterprise for Linkerd version $LINKERD_VERSION"
29+
echo "Using Gateway API $GATEWAY_API_VERSION $GATEWAY_API_CHANNEL"
30+
31+
# Install the Linkerd CLI.
32+
curl --proto '=https' --tlsv1.2 -sSfL https://enterprise.buoyant.io/install \
33+
| env LINKERD2_VERSION=${LINKERD_EDGE_VERSION} sh
34+
35+
export PATH=$HOME/.linkerd2/bin:$PATH
36+
37+
# Install the Gateway API CRDs.
38+
39+
kubectl apply -f ${GATEWAY_API_BASE_URL}/${GATEWAY_API_VERSION}/${GATEWAY_API_CHANNEL}-install.yaml
40+
41+
# Install the Linkerd control plane.
42+
linkerd install --crds | kubectl apply -f -
43+
linkerd install | kubectl apply -f -
44+
linkerd check
45+
46+
# Run the conformance tests.
47+
48+
REPORT_NAME=${GATEWAY_API_CHANNEL}-${CONFORMANCE_VERSION}-default-report.yaml
49+
REPORT_PATH=reports/${GATEWAY_API_VERSION}/${CONFORMANCE_PRODUCT}/${REPORT_NAME}
50+
51+
go test \
52+
-p 4 \
53+
./conformance \
54+
-run TestConformance \
55+
-args \
56+
--organization Buoyant \
57+
--project "Buoyant Enterprise for Linkerd" \
58+
--url https://buoyant.io/ \
59+
--version ${LINKERD_VERSION} \
60+
--contact "[email protected]" \
61+
--report-output ${REPORT_PATH} \
62+
--conformance-profiles=MESH-HTTP,MESH-GRPC \
63+
--all-features \
64+
--exempt-features=Gateway,ReferenceGrant,${UNSUPPORTED_FEATURES} \
65+
--namespace-annotations=linkerd.io/inject=enabled
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
apiVersion: gateway.networking.k8s.io/v1
2+
date: "2025-06-11T14:31:02-04:00"
3+
gatewayAPIChannel: standard
4+
gatewayAPIVersion: v1.3.0
5+
implementation:
6+
contact:
7+
8+
organization: Buoyant
9+
project: Buoyant Enterprise for Linkerd
10+
url: https://buoyant.io/
11+
version: enterprise-2.18
12+
kind: ConformanceReport
13+
mode: default
14+
profiles:
15+
- core:
16+
result: success
17+
statistics:
18+
Failed: 0
19+
Passed: 1
20+
Skipped: 0
21+
name: MESH-GRPC
22+
summary: Core tests succeeded.
23+
- core:
24+
result: success
25+
statistics:
26+
Failed: 0
27+
Passed: 7
28+
Skipped: 0
29+
extended:
30+
result: success
31+
statistics:
32+
Failed: 0
33+
Passed: 8
34+
Skipped: 0
35+
supportedFeatures:
36+
- HTTPRouteBackendProtocolH2C
37+
- HTTPRouteBackendProtocolWebSocket
38+
- HTTPRouteBackendRequestHeaderModification
39+
- HTTPRouteBackendTimeout
40+
- HTTPRouteDestinationPortMatching
41+
- HTTPRouteHostRewrite
42+
- HTTPRouteMethodMatching
43+
- HTTPRouteParentRefPort
44+
- HTTPRoutePathRedirect
45+
- HTTPRoutePathRewrite
46+
- HTTPRoutePortRedirect
47+
- HTTPRouteQueryParamMatching
48+
- HTTPRouteRequestMirror
49+
- HTTPRouteRequestMultipleMirrors
50+
- HTTPRouteRequestPercentageMirror
51+
- HTTPRouteRequestTimeout
52+
- HTTPRouteResponseHeaderModification
53+
- HTTPRouteSchemeRedirect
54+
- MeshClusterIPMatching
55+
- MeshConsumerRoute
56+
- MeshHTTPRouteBackendRequestHeaderModification
57+
- MeshHTTPRouteQueryParamMatching
58+
- MeshHTTPRouteRedirectPort
59+
- MeshHTTPRouteSchemeRedirect
60+
unsupportedFeatures:
61+
- MeshHTTPRouteRedirectPath
62+
- MeshHTTPRouteRewritePath
63+
name: MESH-HTTP
64+
summary: Core tests succeeded. Extended tests succeeded.
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# Linkerd
2+
3+
## Table of Contents
4+
5+
| API channel | Implementation version | Mode | Report |
6+
|--------------|-------------------------------------------|---------|--------------------------------------------------------|
7+
| standard | [version-2.18](https://github.com/linkerd/linkerd2/releases/tag/version-2.18/) | default | [version-2.18 report](./standard-2.18-default-report.yaml) |
8+
9+
## Notes
10+
11+
This report uses the v1.3.0 Gateway API CRDs, but was run using the tests on
12+
the `main` branch at commit `6cd1558a9e`, in order to take advantage of more
13+
effective tests for the `MESH` conformance profile that landed after v1.3.0
14+
was cut.
15+
16+
### Linkerd Versioning
17+
18+
The Linkerd project publishes and announces _versions_ that correspond to
19+
specific project milestones and sets of new features. This report is for
20+
Linkerd 2.18.
21+
22+
Linkerd versions are available in different types of _release artifacts_:
23+
24+
- _Edge releases_ are published on a weekly or near-weekly basis by the
25+
Linkerd open-source project. Their names are `edge-y.m.n`, where `y` is the
26+
two-digit year, `m` is the numeric month, and `n` is the number of the edge
27+
release in that month (e.g. `edge-25.5.1` is the first edge release in May
28+
of 2025).
29+
30+
Each major version of Linkerd has a corresponding edge release, indicated by
31+
a `version-2.X` tag. For example, Linkerd 2.18 corresponds to `edge-25.4.4`,
32+
and therefore the `version-2.18` tag and the `edge-25.4.4` tag are on the
33+
same commit.
34+
35+
- _Stable releases_ of Linkerd follow semantic versioning, and are published
36+
by the vendor community around Linkerd.
37+
38+
For more information on Linkerd versioning, see the Linkerd [Releases and
39+
Versions] documentation.
40+
41+
Since Gateway API conformance tests require semantic versioning for the
42+
implementation version, the Linkerd project reports conformance using the
43+
`version` tags. However, the `run_conformance.sh` script referenced below
44+
installs the corresponding `edge` tag, because the Linkerd CLI is actually
45+
published using the `edge` tag.
46+
47+
[Releases and Versions]: https://linkerd.io/releases/
48+
49+
## Reproduce
50+
51+
To reproduce a Linkerd conformance test report:
52+
53+
0. `cd` to the top level of this repository.
54+
55+
1. Create an empty cluster.
56+
57+
2. Run `bash conformance/reports/v1.3.0/linkerd-linkerd/run-conformance.sh`.
58+
59+
You can set `LINKERD_VERSION`, `LINKERD_EDGE_VERSION`,
60+
`GATEWAY_API_CHANNEL`, and `GATEWAY_API_VERSION` if you want to try
61+
different versions of things. (Note that if you set `GATEWAY_API_VERSION`,
62+
you'll need to be on a matching Gateway API branch.)
63+
64+
3. The conformance report will be written to the
65+
`conformance/reports/v1.3.0/linkerd-linkerd/` directory.
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
#!/bin/sh
2+
3+
# Copyright 2025 The Kubernetes Authors.
4+
#
5+
# Licensed under the Apache License, Version 2.0 (the "License");
6+
# you may not use this file except in compliance with the License.
7+
# You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
17+
# Set these as needed.
18+
LINKERD_VERSION=${LINKERD_VERSION:-version-2.18}
19+
LINKERD_EDGE_VERSION=${LINKERD_EDGE_VERSION:-edge-25.4.4}
20+
GATEWAY_API_CHANNEL=${GATEWAY_API_CHANNEL:-standard}
21+
GATEWAY_API_VERSION=${GATEWAY_API_VERSION:-v1.3.0}
22+
23+
UNSUPPORTED_FEATURES="MeshHTTPRouteRedirectPath,MeshHTTPRouteRewritePath"
24+
25+
CONFORMANCE_PRODUCT=linkerd-linkerd
26+
CONFORMANCE_VERSION=$(echo $LINKERD_VERSION | cut -d- -f2-)
27+
GATEWAY_API_BASE_URL=https://github.com/kubernetes-sigs/gateway-api/releases/download
28+
29+
echo "Using Linkerd version $LINKERD_VERSION (AKA $LINKERD_EDGE_VERSION)"
30+
echo "Using Gateway API $GATEWAY_API_VERSION $GATEWAY_API_CHANNEL"
31+
32+
# Install the Linkerd CLI.
33+
curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/install-edge \
34+
| env LINKERD2_VERSION=${LINKERD_EDGE_VERSION} sh
35+
36+
export PATH=$HOME/.linkerd2/bin:$PATH
37+
38+
# Install the Gateway API CRDs.
39+
40+
kubectl apply -f ${GATEWAY_API_BASE_URL}/${GATEWAY_API_VERSION}/${GATEWAY_API_CHANNEL}-install.yaml
41+
42+
# Install the Linkerd control plane.
43+
linkerd install --crds | kubectl apply -f -
44+
linkerd install | kubectl apply -f -
45+
linkerd check
46+
47+
# Run the conformance tests.
48+
49+
REPORT_NAME=${GATEWAY_API_CHANNEL}-${CONFORMANCE_VERSION}-default-report.yaml
50+
REPORT_PATH=reports/${GATEWAY_API_VERSION}/${CONFORMANCE_PRODUCT}/${REPORT_NAME}
51+
52+
go test \
53+
-p 4 \
54+
./conformance \
55+
-run TestConformance \
56+
-args \
57+
--organization Linkerd \
58+
--project Linkerd \
59+
--url https://github.com/linkerd/linkerd2 \
60+
--version ${LINKERD_VERSION} \
61+
--contact https://github.com/linkerd/linkerd2/blob/main/MAINTAINERS.md \
62+
--report-output ${REPORT_PATH} \
63+
--conformance-profiles=MESH-HTTP,MESH-GRPC \
64+
--all-features \
65+
--exempt-features=Gateway,ReferenceGrant,${UNSUPPORTED_FEATURES} \
66+
--namespace-annotations=linkerd.io/inject=enabled
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
apiVersion: gateway.networking.k8s.io/v1
2+
date: "2025-06-11T14:21:05-04:00"
3+
gatewayAPIChannel: standard
4+
gatewayAPIVersion: v1.3.0
5+
implementation:
6+
contact:
7+
- https://github.com/linkerd/linkerd2/blob/main/MAINTAINERS.md
8+
organization: Linkerd
9+
project: Linkerd
10+
url: https://github.com/linkerd/linkerd2
11+
version: version-2.18
12+
kind: ConformanceReport
13+
mode: default
14+
profiles:
15+
- core:
16+
result: success
17+
statistics:
18+
Failed: 0
19+
Passed: 1
20+
Skipped: 0
21+
name: MESH-GRPC
22+
summary: Core tests succeeded.
23+
- core:
24+
result: success
25+
statistics:
26+
Failed: 0
27+
Passed: 7
28+
Skipped: 0
29+
extended:
30+
result: success
31+
statistics:
32+
Failed: 0
33+
Passed: 8
34+
Skipped: 0
35+
supportedFeatures:
36+
- HTTPRouteBackendProtocolH2C
37+
- HTTPRouteBackendProtocolWebSocket
38+
- HTTPRouteBackendRequestHeaderModification
39+
- HTTPRouteBackendTimeout
40+
- HTTPRouteDestinationPortMatching
41+
- HTTPRouteHostRewrite
42+
- HTTPRouteMethodMatching
43+
- HTTPRouteParentRefPort
44+
- HTTPRoutePathRedirect
45+
- HTTPRoutePathRewrite
46+
- HTTPRoutePortRedirect
47+
- HTTPRouteQueryParamMatching
48+
- HTTPRouteRequestMirror
49+
- HTTPRouteRequestMultipleMirrors
50+
- HTTPRouteRequestPercentageMirror
51+
- HTTPRouteRequestTimeout
52+
- HTTPRouteResponseHeaderModification
53+
- HTTPRouteSchemeRedirect
54+
- MeshClusterIPMatching
55+
- MeshConsumerRoute
56+
- MeshHTTPRouteBackendRequestHeaderModification
57+
- MeshHTTPRouteQueryParamMatching
58+
- MeshHTTPRouteRedirectPort
59+
- MeshHTTPRouteSchemeRedirect
60+
unsupportedFeatures:
61+
- MeshHTTPRouteRedirectPath
62+
- MeshHTTPRouteRewritePath
63+
name: MESH-HTTP
64+
summary: Core tests succeeded. Extended tests succeeded.

site-src/implementations.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ cover, and documentation to help users get started.
5151
- [Google Cloud Service Mesh][38] (GA)
5252
- [Istio][9] (GA)
5353
- [Kuma][11] (GA)
54-
- [Linkerd][28] (experimental)
54+
- [Linkerd][28] (GA)
5555

5656
## Integrations <a name="integrations"></a>
5757

0 commit comments

Comments
 (0)