Skip to content

Commit 937b10e

Browse files
authored
Release 1.33.0 docs (#7212)
Signed-off-by: Sunjay Bhatia <[email protected]>
1 parent 7c737c9 commit 937b10e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+18435
-22
lines changed

.github/dependabot.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ updates:
3333
- "actions/download-artifact"
3434

3535
# release branch N targets
36-
- target-branch: release-1.32
36+
- target-branch: release-1.33
3737
package-ecosystem: "gomod"
3838
directory: "/"
3939
schedule:
@@ -51,7 +51,7 @@ updates:
5151
k8s-dependencies:
5252
patterns:
5353
- "k8s.io/*"
54-
- target-branch: release-1.32
54+
- target-branch: release-1.33
5555
package-ecosystem: "github-actions"
5656
directory: "/"
5757
schedule:
@@ -72,7 +72,7 @@ updates:
7272
- "actions/download-artifact"
7373

7474
# release branch N-1 targets
75-
- target-branch: release-1.31
75+
- target-branch: release-1.32
7676
package-ecosystem: "gomod"
7777
directory: "/"
7878
schedule:
@@ -90,7 +90,7 @@ updates:
9090
k8s-dependencies:
9191
patterns:
9292
- "k8s.io/*"
93-
- target-branch: release-1.31
93+
- target-branch: release-1.32
9494
package-ecosystem: "github-actions"
9595
directory: "/"
9696
schedule:
@@ -111,7 +111,7 @@ updates:
111111
- "actions/download-artifact"
112112

113113
# release branch N-2 targets
114-
- target-branch: release-1.30
114+
- target-branch: release-1.31
115115
package-ecosystem: "gomod"
116116
directory: "/"
117117
schedule:
@@ -129,7 +129,7 @@ updates:
129129
k8s-dependencies:
130130
patterns:
131131
- "k8s.io/*"
132-
- target-branch: release-1.30
132+
- target-branch: release-1.31
133133
package-ecosystem: "github-actions"
134134
directory: "/"
135135
schedule:

.github/workflows/trivy-scan.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ jobs:
1616
matrix:
1717
branch:
1818
- main
19+
- release-1.33
1920
- release-1.32
2021
- release-1.31
21-
- release-1.30
2222
runs-on: ubuntu-latest
2323
permissions:
2424
security-events: write

changelogs/CHANGELOG-v1.33.0.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
We are delighted to present version v1.33.0 of Contour, our layer 7 HTTP reverse proxy for Kubernetes clusters.
2+
3+
A big thank you to everyone who contributed to the release.
4+
5+
6+
- [Minor Changes](#minor-changes)
7+
- [Other Changes](#other-changes)
8+
- [Installing/Upgrading](#installing-and-upgrading)
9+
- [Compatible Kubernetes Versions](#compatible-kubernetes-versions)
10+
- [Community Thanks!](#community-thanks)
11+
12+
13+
# Minor Changes
14+
15+
## Distroless Envoy image
16+
17+
The Envoy image used in the example manifests and as the default image in the Gateway Provisioner has been switched to the [distroless](https://www.envoyproxy.io/docs/envoy/latest/start/install#image-variants) variant.
18+
19+
Previously, it was based on Ubuntu and included a minimal OS with a package manager.
20+
The distroless variant contains only the files required to run Envoy, improving security.
21+
22+
(#7170, @tsaarni)
23+
24+
25+
## Update to Gateway API v1.3.0
26+
27+
Gateway API CRD compatibility has been updated to release v1.3.0.
28+
29+
Full release notes for Gateway API v1.3.0 can be found [here](https://github.com/kubernetes-sigs/gateway-api/releases/tag/v1.3.0).
30+
31+
32+
# Other Changes
33+
- Update to Go 1.25.1. See the [Go release notes](https://go.dev/doc/devel/release#go1.25.minor) for more information. (#7211, @sunjayBhatia)
34+
- Updates Envoy to v1.35.2. See the [Envoy release notes](https://www.envoyproxy.io/docs/envoy/v1.35.2/version_history/v1.35/v1.35) for more information about the content of the release. (#7197, @sunjayBhatia)
35+
36+
37+
# Installing and Upgrading
38+
39+
For a fresh install of Contour, consult the [getting started documentation](https://projectcontour.io/getting-started/).
40+
41+
To upgrade an existing Contour installation, please consult the [upgrade documentation](https://projectcontour.io/resources/upgrading/).
42+
43+
44+
# Compatible Kubernetes Versions
45+
46+
Contour v1.33.0 is tested against Kubernetes 1.32 through 1.34.
47+
48+
# Community Thanks!
49+
We’re immensely grateful for all the community contributions that help make Contour even better!
50+
51+
52+
# Are you a Contour user? We would love to know!
53+
If you're using Contour and want to add your organization to our adopters list, please visit this [page](https://projectcontour.io/resources/adopters/). If you prefer to keep your organization name anonymous but still give us feedback into your usage and scenarios for Contour, please post on this [GitHub thread](https://github.com/projectcontour/contour/issues/1269).

changelogs/unreleased/7170-tsaarni-minor.md

Lines changed: 0 additions & 6 deletions
This file was deleted.

changelogs/unreleased/7197-sunjayBhatia-small.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

changelogs/unreleased/7211-sunjayBhatia-small.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

netlify.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
# kubectl apply https://projectcontour.io/quickstart/contour.yaml
4343
[[redirects]]
4444
from = "/quickstart/contour.yaml"
45-
to = "https://raw.githubusercontent.com/projectcontour/contour/release-1.32/examples/render/contour.yaml"
45+
to = "https://raw.githubusercontent.com/projectcontour/contour/release-1.33/examples/render/contour.yaml"
4646
status = 302
4747

4848
# Redirect versioned quickstarts so that they can easily be referenced by
@@ -59,7 +59,7 @@
5959
# kubectl apply https://projectcontour.io/quickstart/contour-gateway.yaml
6060
[[redirects]]
6161
from = "/quickstart/contour-gateway.yaml"
62-
to = "https://raw.githubusercontent.com/projectcontour/contour/release-1.32/examples/render/contour-gateway.yaml"
62+
to = "https://raw.githubusercontent.com/projectcontour/contour/release-1.33/examples/render/contour-gateway.yaml"
6363
status = 302
6464

6565
# Redirect versioned quickstarts so that they can easily be referenced by
@@ -76,7 +76,7 @@
7676
# kubectl apply https://projectcontour.io/quickstart/contour-gateway-provisioner.yaml
7777
[[redirects]]
7878
from = "/quickstart/contour-gateway-provisioner.yaml"
79-
to = "https://raw.githubusercontent.com/projectcontour/contour/release-1.32/examples/render/contour-gateway-provisioner.yaml"
79+
to = "https://raw.githubusercontent.com/projectcontour/contour/release-1.33/examples/render/contour-gateway-provisioner.yaml"
8080
status = 302
8181

8282
# Redirect versioned quickstarts so that they can easily be referenced by

site/config.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ params:
2828
github_url: "https://github.com/projectcontour/contour"
2929
github_raw_url: "https://raw.githubusercontent.com/projectcontour/contour"
3030
slack_url: "https://kubernetes.slack.com/messages/contour"
31-
latest_version: "1.32"
31+
latest_version: "1.33"
3232
use_advanced_docs: true
3333
docs_right_sidebar: true
3434
docs_search: true
@@ -38,6 +38,7 @@ params:
3838
docs_versioning: true
3939
docs_versions:
4040
- main
41+
- "1.33"
4142
- "1.32"
4243
- "1.31"
4344
- "1.30"

site/content/docs/1.33/_index.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
---
2+
cascade:
3+
layout: docs
4+
version: "1.33"
5+
branch: release-1.33
6+
---
7+
8+
## Overview
9+
Contour is an Ingress controller for Kubernetes that works by deploying the [Envoy proxy][1] as a reverse proxy and load balancer.
10+
Contour supports dynamic configuration updates out of the box while maintaining a lightweight profile.
11+
12+
## Philosophy
13+
- Follow an opinionated approach which allows us to better serve most users
14+
- Design Contour to serve both the cluster administrator and the application developer
15+
- Use our experience with ingress to define reasonable defaults for both cluster administrators and application developers.
16+
- Meet users where they are by understanding and adapting Contour to their use cases
17+
18+
See the full [Contour Philosophy][8] page.
19+
20+
## Why Contour?
21+
Contour bridges other solution gaps in several ways:
22+
- Dynamically update the ingress configuration with minimal dropped connections
23+
- Safely support multiple types of ingress config in multi-team Kubernetes clusters
24+
- [Ingress/v1][10]
25+
- [HTTPProxy (Contour custom resource)][2]
26+
- [Gateway API][9]
27+
- Cleanly integrate with the Kubernetes object model
28+
29+
## Prerequisites
30+
Contour is tested with Kubernetes clusters running version [1.21 and later][4].
31+
32+
## Get started
33+
Getting started with Contour is as simple as one command.
34+
See the [Getting Started][3] document.
35+
36+
## Troubleshooting
37+
If you encounter issues review the [troubleshooting][5] page, [file an issue][6], or talk to us on the [#contour channel][7] on Kubernetes slack.
38+
39+
[1]: https://www.envoyproxy.io/
40+
[2]: config/fundamentals.md
41+
[3]: /getting-started
42+
[4]: /resources/compatibility-matrix.md
43+
[5]: /docs/main/troubleshooting
44+
[6]: https://github.com/projectcontour/contour/issues
45+
[7]: https://kubernetes.slack.com/messages/contour
46+
[8]: /resources/philosophy
47+
[9]: guides/gateway-api
48+
[10]: /docs/{{< param version >}}/config/ingress
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# Contour Architecture
2+
3+
The Contour Ingress controller is a collaboration between:
4+
5+
* Envoy, which provides the high performance reverse proxy.
6+
* Contour, which acts as a management server for Envoy and provides it with configuration.
7+
8+
These containers are deployed separately, Contour as a Deployment and Envoy as a Kubernetes Daemonset or Deployment, although other configurations are possible.
9+
10+
In the Envoy Pods, Contour runs as an initcontainer in `bootstrap` mode and writes an Envoy bootstrap configuration to a temporary volume.
11+
This volume is passed to the Envoy container and directs Envoy to treat Contour as its [management server][1].
12+
13+
After initialization is complete, the Envoy container starts, retrieves the bootstrap configuration written by Contour's `bootstrap` mode, and establishes a GRPC session with Contour to receive configuration.
14+
15+
Envoy will gracefully retry if the management server is unavailable, which removes any container startup ordering issues.
16+
17+
Contour is a client of the Kubernetes API.
18+
Contour watches Ingress, HTTPProxy, Gateway API, Secret, Service, and Endpoint objects, and acts as the management server for its Envoy sibling by translating its cache of objects into the relevant JSON stanzas: Service objects for CDS, Ingress for RDS, Endpoint objects for EDS, and so on).
19+
20+
The transfer of information from Kubernetes to Contour is by watching the Kubernetes API utilizing [controller-runtime][4] primitives.
21+
22+
Kubernetes readiness probes are configured to check whether Envoy is ready to accept connections.
23+
The Envoy readiness probe sends GET requests to `/ready` in Envoy's administration endpoint.
24+
25+
For Contour, a liveness probe checks the `/healthz` running on the Pod's metrics port.
26+
Readiness probe is a check that Contour can access the Kubernetes API.
27+
28+
## Architectural Overview
29+
Below are a couple of high level architectural diagrams of how Contour works inside a Kubernetes cluster as well as showing the data path of a request to a backend pod.
30+
31+
A request to `projectcontour.io/blog` gets routed via a load balancer to an instance of an Envoy proxy which then sends the request to a pod.
32+
33+
![architectural overview][2]
34+
35+
Following is a diagram of how Contour and Envoy are deployed in a Kubernetes cluster.
36+
37+
### Kubernetes API Server
38+
39+
The following API objects are watched:
40+
- Services
41+
- Endpoints
42+
- Secrets
43+
- Ingress
44+
- HTTPProxy
45+
- Gateway API (Optional)
46+
47+
### Contour Deployment
48+
49+
Contour is deployed in the cluster using a Kubernetes Deployment.
50+
It has built-in leader election which is responsible for updating httproxy/ingress/gateway api resources via Kube API server.
51+
All instances are able to serve xDS configuration to any Envoy instance, but only the leader can write status back to the API server.
52+
53+
The data being served from contour instances are eventually consistent in an HA based deployment.
54+
However HA mode is operationally scalable when you have high request rate from envoy to contour as requests are loadbalanced among contour instances.
55+
This also helps availability zone /data center degradation events as your service continue to function.
56+
57+
### Envoy Deployment
58+
59+
Envoy can be deployed in two different models, as a Kubernetes Daemonset or as a Kubernetes Deployment.
60+
61+
Daemonset is the standard deployment model where a single instance of Envoy is deployed per Kubernetes Node.
62+
This allows for simple Envoy pod distribution across the cluster as well as being able to expose Envoy using `hostPorts` to improve network performance.
63+
One potential downside of this deployment model is when a node is removed from the cluster (e.g. on a cluster scale down, etc) then the configured `preStop` hooks are not available so connections can be dropped.
64+
This is a limitation that applies to any Daemonset in Kubernetes.
65+
66+
An alternative Envoy deployment model is utilizing a Kubernetes Deployment with a configured `podAntiAffinity` which attempts to mirror the Daemonset deployment model.
67+
A benefit of this model compared to the Daemonset version is when a node is removed from the cluster, the proper shutdown events are available so connections can be cleanly drained from Envoy before terminating.
68+
69+
![architectural overview 2][3]
70+
71+
[1]: https://www.envoyproxy.io/docs/envoy/v1.13.0/api-docs/xds_protocol
72+
[2]: ../img/archoverview.png
73+
[3]: ../img/contour_deployment_in_k8s.png
74+
[4]: https://github.com/kubernetes-sigs/controller-runtime

0 commit comments

Comments
 (0)