### Delete and Reapply Namespace for Upgrade Source: https://github.com/projectcontour/contour/blob/main/site/content/resources/upgrading.md Use this method for a simple upgrade if your installation is in the 'projectcontour' namespace, you use quickstart examples, and your cluster can tolerate downtime. ```bash $ kubectl delete namespace projectcontour $ kubectl apply -f {{< param base_url >}}/quickstart/v1.4.0/contour.yaml ``` ```bash $ kubectl delete namespace projectcontour $ kubectl apply -f {{< param base_url >}}/quickstart/v1.3.0/contour.yaml ``` -------------------------------- ### Install Contour using YAML Source: https://github.com/projectcontour/contour/blob/main/site/content/getting-started/_index.md Apply the example Contour YAML to install Contour. Verify the Contour pods are ready. ```bash kubectl apply -f https://projectcontour.io/quickstart/contour.yaml ``` ```bash kubectl get pods -n projectcontour -o wide ``` -------------------------------- ### Install Contour with Quickstart YAML Source: https://context7.com/projectcontour/contour/llms.txt Installs Contour and Envoy using a single YAML file. Includes verification steps and deploying a sample application. ```bash # Install Contour using the quickstart YAML kubectl apply -f https://projectcontour.io/quickstart/contour.yaml # Verify pods are running kubectl get pods -n projectcontour -o wide # Expected: 2 Contour pods (Running, 1/1 Ready), 1+ Envoy pods (Running, 2/2 Ready) # Deploy a sample application kubectl apply -f https://projectcontour.io/examples/httpbin.yaml # Port-forward to test locally kubectl -n projectcontour port-forward service/envoy 8888:80 # Test the application (in another terminal) curl -i http://local.projectcontour.io:8888 # Returns: HTTP 200 with httpbin homepage ``` -------------------------------- ### Easy Upgrade: Delete and Reapply Namespace Source: https://github.com/projectcontour/contour/blob/main/site/content/resources/upgrading.md A simplified upgrade method for installations in the 'projectcontour' namespace using quickstart examples. This involves deleting the namespace and reapplying the configuration. Be aware that LoadBalancer IPs may change. ```bash $ kubectl delete namespace projectcontour $ kubectl apply -f {{< param base_url >}}/quickstart/v1.23.2/contour.yaml ``` -------------------------------- ### Contour and Envoy Deployment Example Source: https://github.com/projectcontour/contour/blob/main/examples/README.md This is the recommended example installation of Contour. It deploys Contour into a Deployment and Envoy into a Daemonset, securing gRPC communication with certificates. A LoadBalancer Service exposes Envoy. ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: contour namespace: projectcontour spec: replicas: 1 selector: matchLabels: app: contour template: metadata: labels: app: contour spec: containers: - name: contour image: projectcontour/contour:latest ports: - name: contour-grpc containerPort: 8080 - name: contour-metrics containerPort: 8080 command: - contour - --insecure - --grpc-address=0.0.0.0 - --grpc-port=8080 - --xds-address=0.0.0.0 - --xds-port=8080 - --metrics-address=0.0.0.0 - --metrics-port=8080 --- ``` ```yaml apiVersion: apps/v1 kind: DaemonSet metadata: name: envoy namespace: projectcontour spec: selector: matchLabels: app: envoy template: metadata: labels: app: envoy spec: containers: - name: envoy image: envoyproxy/envoy:latest ports: - name: envoy-http containerPort: 80 - name: envoy-https containerPort: 443 - name: envoy-admin containerPort: 9901 command: - envoy - --config-path=/etc/envoy/envoy.yaml - --service-cluster - envoy - --service-node - $(NODE_NAME) env: - name: NODE_NAME valueFrom: fieldRef: fieldPath: spec.nodeName --- ``` ```yaml apiVersion: v1 kind: Service metadata: name: contour namespace: projectcontour spec: type: LoadBalancer ports: - name: http port: 80 targetPort: 80 - name: https port: 443 targetPort: 443 selector: app: envoy ``` -------------------------------- ### Easy Upgrade: Delete and Reapply Namespace Source: https://github.com/projectcontour/contour/blob/main/site/content/resources/upgrading.md For quickstart example deployments in the 'projectcontour' namespace, delete the namespace and reapply the Contour configuration. This may change the public IP for LoadBalancer Services. ```bash $ kubectl delete namespace projectcontour $ kubectl apply -f {{< param base_url >}}/quickstart/v1.17.1/contour.yaml ``` -------------------------------- ### Install Build-Essential, Git, and JQ on Ubuntu Source: https://github.com/projectcontour/contour/blob/main/CONTRIBUTING.md Installs necessary tools on Ubuntu Linux using the apt package manager. ```bash apt-get install build-essential git jq ``` -------------------------------- ### Install httpbin for Testing Source: https://github.com/projectcontour/contour/blob/main/site/content/docs/1.33/config/tracing.md Installs the httpbin application, which can be used to generate sample HTTP traffic for testing tracing configurations. ```bash kubectl apply -f https://projectcontour.io/examples/httpbin.yaml ``` -------------------------------- ### Delete and Reapply Namespace for Upgrade Source: https://github.com/projectcontour/contour/blob/main/site/content/resources/upgrading.md Use this method for a simple upgrade if your installation is in the 'projectcontour' namespace, you use quickstart examples, and your cluster can tolerate downtime. This removes and recreates Envoy and Contour pods. ```bash $ kubectl delete namespace projectcontour $ kubectl apply -f {{< param base_url >}}/quickstart/v1.9.0/contour.yaml ``` ```bash $ kubectl delete namespace projectcontour $ kubectl apply -f {{< param base_url >}}/quickstart/v1.8.0/contour.yaml ``` -------------------------------- ### Install Kind, Kubectl, JQ, and YQ with Homebrew Source: https://github.com/projectcontour/contour/blob/main/CONTRIBUTING.md Recommended installation method on macOS for several command-line tools required for Contour development. ```bash brew install kind kubectl jq yq ``` -------------------------------- ### Install Contour Gateway Provisioner Source: https://github.com/projectcontour/contour/blob/main/hack/release/release-notes-template.md Use this command to install the Contour Gateway Provisioner. This is suitable for environments utilizing the Gateway API. ```bash kubectl apply -f https://raw.githubusercontent.com/projectcontour/contour/{{ .Version }}/examples/render/contour-gateway-provisioner.yaml ``` -------------------------------- ### Easy Upgrade: Delete and Reapply Namespace Source: https://github.com/projectcontour/contour/blob/main/site/content/resources/upgrading.md For quick upgrades, delete the 'projectcontour' namespace and reapply the example configuration. This method is suitable if your installation is in the 'projectcontour' namespace and your cluster can tolerate downtime. Note that LoadBalancer IPs may change. ```bash $ kubectl delete namespace projectcontour $ kubectl apply -f {{< param base_url >}}/quickstart/v1.19.1/contour.yaml ``` ```bash $ kubectl delete namespace projectcontour $ kubectl apply -f {{< param base_url >}}/quickstart/v1.19.0/contour.yaml ``` -------------------------------- ### Install Contour with Helm Source: https://context7.com/projectcontour/contour/llms.txt Installs Contour using the Contour Helm chart. Includes adding the repository, installation command, and verification steps. ```bash # Add the Contour Helm repository helm repo add contour https://projectcontour.github.io/helm-charts/ # Install Contour helm install my-release contour/contour --namespace projectcontour --create-namespace # Verify installation kubectl -n projectcontour get po,svc # Expected: Contour pod (Running, 1/1 Ready), Envoy pods (Running, 2/2 Ready) # Port-forward for testing kubectl -n projectcontour port-forward service/my-release-contour-envoy 8888:80 ``` -------------------------------- ### Install Contour using Helm Source: https://github.com/projectcontour/contour/blob/main/site/content/getting-started/_index.md Install the Contour Helm chart with a specified release name and namespace. Verify Contour is ready. ```bash helm install my-release contour/contour --namespace projectcontour --create-namespace ``` ```bash kubectl -n projectcontour get po,svc ``` -------------------------------- ### Install Xcode Command Line Tools Source: https://github.com/projectcontour/contour/blob/main/CONTRIBUTING.md Use this command on macOS to install essential development tools like git and make. ```bash xcode-select --install ``` -------------------------------- ### Delete and Reapply Namespace for Contour Upgrade Source: https://github.com/projectcontour/contour/blob/main/site/content/resources/upgrading.md Use this method for a simple upgrade if your installation is in the 'projectcontour' namespace, you are using quickstart example deployments, and your cluster can tolerate downtime. ```bash $ kubectl delete namespace projectcontour $ kubectl apply -f {{< param base_url >}}/quickstart/v1.14.1/contour.yaml ``` -------------------------------- ### Delete and Reapply Namespace for Contour 1.14.0 Upgrade Source: https://github.com/projectcontour/contour/blob/main/site/content/resources/upgrading.md This is the simplest way to upgrade to Contour 1.14.0 if your installation is in the 'projectcontour' namespace, you are using quickstart example deployments, and your cluster can tolerate downtime. ```bash $ kubectl delete namespace projectcontour $ kubectl apply -f {{< param base_url >}}/quickstart/v1.14.0/contour.yaml ``` -------------------------------- ### Delete and Reapply Contour Namespace Source: https://github.com/projectcontour/contour/blob/main/site/content/resources/upgrading.md Use this method for a simple upgrade if your installation is in the 'projectcontour' namespace, you use quickstart example deployments, and your cluster can tolerate downtime. This removes and recreates Contour and Envoy pods with the updated configuration. ```bash $ export CONTOUR_VERSION= $ kubectl delete namespace projectcontour $ kubectl apply -f {{< param base_url >}}/quickstart/$CONTOUR_VERSION/contour.yaml ``` -------------------------------- ### Delete and Reapply Namespace for Contour Upgrade Source: https://github.com/projectcontour/contour/blob/main/site/content/resources/upgrading.md Use this method for a simple upgrade if your installation is in the 'projectcontour' namespace, you are using quickstart example deployments, and your cluster can tolerate downtime. This will remove and recreate Envoy and Contour pods with the updated configuration. ```bash $ kubectl delete namespace projectcontour $ kubectl apply -f {{< param base_url >}}/quickstart/v1.11.0/contour.yaml ``` ```bash $ kubectl delete namespace projectcontour $ kubectl apply -f {{< param base_url >}}/quickstart/v1.10.0/contour.yaml ``` -------------------------------- ### HTTPProxy with Duplicate Include Conditions Example Source: https://github.com/projectcontour/contour/blob/main/changelogs/CHANGELOG-v1.24.0.md Demonstrates an HTTPProxy configuration with multiple includes. This example highlights a special case where empty or '/' prefix match conditions are not treated as duplicates, preserving existing user configurations. ```yaml --- apiVersion: projectcontour.io/v1 kind: HTTPProxy metadata: name: example spec: virtualhost: fqdn: foo-example.bar.com includes: - name: example-child1 - name: example-child2 --- apiVersion: projectcontour.io/v1 kind: HTTPProxy metadata: name: example-child1 spec: routes: - conditions: - prefix: / services: - name: s1 port: 80 --- apiVersion: projectcontour.io/v1 kind: HTTPProxy metadata: name: example-child2 spec: routes: - conditions: - prefix: /foo services: - name: s2 port: 80 ``` -------------------------------- ### Delete Namespace and Reapply Configuration (Contour 1.12.0) Source: https://github.com/projectcontour/contour/blob/main/site/content/resources/upgrading.md Use this method for a simple upgrade to Contour 1.12.0 if your installation is in the 'projectcontour' namespace, uses quickstart example deployments, and can tolerate downtime. This process removes and recreates Envoy and Contour pods. ```bash $ kubectl delete namespace projectcontour $ kubectl apply -f {{< param base_url >}}/quickstart/v1.12.0/contour.yaml ``` -------------------------------- ### Delete Namespace and Reapply Configuration (Contour 1.13.1) Source: https://github.com/projectcontour/contour/blob/main/site/content/resources/upgrading.md Use this method for a simple upgrade to Contour 1.13.1 if your installation is in the 'projectcontour' namespace, uses quickstart example deployments, and can tolerate downtime. This process removes and recreates Envoy and Contour pods. ```bash $ kubectl delete namespace projectcontour $ kubectl apply -f {{< param base_url >}}/quickstart/v1.13.1/contour.yaml ``` -------------------------------- ### Install Contour Gateway Provisioner and Launch Kind Cluster Source: https://github.com/projectcontour/contour/blob/main/CONTRIBUTING.md Build and deploy the Contour Gateway Provisioner to a local Kind cluster. Access Contour on localhost ports 9080 and 9443. ```bash make install-provisioner-working ``` -------------------------------- ### Generate New Versioned Docs and Changelog Source: https://github.com/projectcontour/contour/blob/main/site/content/resources/release-process.md Run the release preparation script to generate new versioned documentation and a changelog. This requires the release version and Kubernetes version range as arguments. ```bash go run ./hack/release/prepare-release.go $CONTOUR_RELEASE_VERSION $KUBERNETES_MIN_VERSION $KUBERNETES_MAX_VERSION ``` -------------------------------- ### Apply Service and Verify Source: https://github.com/projectcontour/contour/blob/main/site/content/docs/1.33/guides/cert-manager.md Applies the service configuration and verifies its creation. The output shows the ClusterIP assigned to the service. ```bash $ kubectl apply -f service.yaml service/httpbin created $ kubectl get service httpbin NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE httpbin ClusterIP 10.48.6.155 8080/TCP 57m ``` -------------------------------- ### Deploy Example Workload with HTTPRoute Source: https://github.com/projectcontour/contour/blob/main/site/content/docs/1.33/guides/gateway-api.md Applies a Deployment, Service, and HTTPRoute for the kuard application. Ensure the 'contour' Gateway is configured. ```shell kubectl apply -f {{< param github_raw_url>}}/{{< param branch >}}/examples/example-workload/gatewayapi/kuard/kuard.yaml ``` -------------------------------- ### Easy Upgrade to Contour 1.18.0 Source: https://github.com/projectcontour/contour/blob/main/site/content/resources/upgrading.md Delete the projectcontour namespace and reapply the quickstart configuration for a simple upgrade to Contour 1.18.0. This method is suitable for installations in the 'projectcontour' namespace using quickstart deployments and when downtime is acceptable. ```bash $ kubectl delete namespace projectcontour $ kubectl apply -f {{< param base_url >}}/quickstart/v1.18.0/contour.yaml ``` -------------------------------- ### Easy Upgrade to Contour 1.18.1 Source: https://github.com/projectcontour/contour/blob/main/site/content/resources/upgrading.md Delete the projectcontour namespace and reapply the quickstart configuration for a simple upgrade to Contour 1.18.1. This method is suitable for installations in the 'projectcontour' namespace using quickstart deployments and when downtime is acceptable. ```bash $ kubectl delete namespace projectcontour $ kubectl apply -f {{< param base_url >}}/quickstart/v1.18.1/contour.yaml ``` -------------------------------- ### Delete and Reapply Namespace for Contour Upgrade Source: https://github.com/projectcontour/contour/blob/main/site/content/resources/upgrading.md Use this method for quickstart deployments when your installation is in the 'projectcontour' namespace and downtime is acceptable. This will remove and recreate Envoy and Contour pods with the updated configuration. ```bash $ kubectl delete namespace projectcontour $ kubectl apply -f {{< param base_url >}}/quickstart/v1.17.0/contour.yaml ``` -------------------------------- ### HTTPProxy Inclusion Across Namespaces Example Source: https://github.com/projectcontour/contour/blob/main/site/content/docs/1.33/config/inclusion-delegation.md This example demonstrates how a root HTTPProxy in the 'default' namespace can include configuration for paths matching '/blog' from another HTTPProxy named 'blog' in the 'marketing' namespace. Ensure that if `--watch-namespaces` is used, it includes all referenced namespaces. ```yaml --- apiVersion: projectcontour.io/v1 kind: HTTPProxy metadata: name: namespace-include-root namespace: default spec: virtualhost: fqdn: ns-root.bar.com includes: # delegate the subpath, `/blog` to the HTTPProxy object in the marketing namespace with the name `blog` - name: blog namespace: marketing conditions: - prefix: /blog routes: - services: - name: s1 port: 80 --- apiVersion: projectcontour.io/v1 kind: HTTPProxy metadata: name: blog namespace: marketing spec: routes: - services: - name: s2 port: 80 ``` -------------------------------- ### Easy Upgrade Method for Contour Source: https://github.com/projectcontour/contour/blob/main/site/content/resources/upgrading.md Delete the projectcontour namespace and reapply the quickstart configuration for a simple upgrade. This method is suitable for specific installation types and may change LoadBalancer IPs. ```bash $ kubectl delete namespace projectcontour $ kubectl apply -f {{< param base_url >}}/quickstart/v1.20.1/contour.yaml ``` ```bash $ kubectl delete namespace projectcontour $ kubectl apply -f {{< param base_url >}}/quickstart/v1.20.0/contour.yaml ``` -------------------------------- ### Apply Quickstart YAML for Upgrade Source: https://github.com/projectcontour/contour/blob/main/site/content/resources/upgrading.md This command applies the quickstart YAML file to upgrade Contour to version 1.0.1. It's a simplified method for users running Contour 1.0.0. ```bash $ kubectl apply -f {{< param base_url >}}/quickstart/v1.0.1/contour.yaml ``` -------------------------------- ### Deploy Contour with Gateway Reference and Update Config Source: https://context7.com/projectcontour/contour/llms.txt Deploy Contour using its quickstart configuration and update its ConfigMap to reference the created Gateway. Restart Contour to apply changes. ```bash # Deploy Contour with Gateway reference kubectl apply -f https://projectcontour.io/quickstart/contour.yaml # Update Contour config kubectl apply -f - < ``` -------------------------------- ### Easy Upgrade to Contour 1.20.2 Source: https://github.com/projectcontour/contour/blob/main/site/content/resources/upgrading.md Perform a simple upgrade to Contour 1.20.2 by deleting the 'projectcontour' namespace and reapplying the quickstart configuration. This method is suitable for users with standard installations and when downtime is acceptable. ```bash $ kubectl delete namespace projectcontour $ kubectl apply -f {{< param base_url >}}/quickstart/v1.20.2/contour.yaml ``` -------------------------------- ### Manage HTTPProxy Resources Source: https://context7.com/projectcontour/contour/llms.txt Commands to apply, list, and describe HTTPProxy custom resources. Use `kubectl describe` for detailed status and validation errors. ```bash # Create the HTTPProxy kubectl apply -f basic-httpproxy.yaml # Output: httpproxy.projectcontour.io/basic created # List HTTPProxies kubectl get httpproxy # NAME FQDN TLS SECRET STATUS STATUS DESCRIPTION # basic app.example.com valid Valid HTTPProxy # Describe for detailed status kubectl describe httpproxy basic # Shows spec, status, and any validation errors ``` -------------------------------- ### Run Unit Tests for a Single Package Source: https://github.com/projectcontour/contour/blob/main/CONTRIBUTING.md Navigate to a specific package directory and run its unit tests. ```go go test . ``` -------------------------------- ### Easy Upgrade to Contour 1.21.0 Source: https://github.com/projectcontour/contour/blob/main/site/content/resources/upgrading.md Perform a simple upgrade to Contour 1.21.0 by deleting the 'projectcontour' namespace and reapplying the quickstart configuration. This method is suitable for users with standard installations and when downtime is acceptable. ```bash $ kubectl delete namespace projectcontour $ kubectl apply -f {{< param base_url >}}/quickstart/v1.21.0/contour.yaml ``` -------------------------------- ### Delete and Reapply Namespace for Upgrade Source: https://github.com/projectcontour/contour/blob/main/site/content/resources/upgrading.md Use this method for quickstart deployments when downtime is acceptable. It involves deleting the projectcontour namespace and reapplying the configuration. Note that LoadBalancer IPs may change. ```bash $ kubectl delete namespace projectcontour $ kubectl apply -f {{< param base_url >}}/quickstart/v1.7.0/contour.yaml ``` -------------------------------- ### Easy Upgrade to Contour 1.22.3 Source: https://github.com/projectcontour/contour/blob/main/site/content/resources/upgrading.md Delete the projectcontour namespace and reapply the quickstart configuration for a simple upgrade to Contour 1.22.3. This method requires cluster downtime and assumes your installation is in the 'projectcontour' namespace. ```bash $ kubectl delete namespace projectcontour $ kubectl apply -f {{< param base_url >}}/quickstart/v1.22.3/contour.yaml ``` -------------------------------- ### Easy Upgrade to Contour 1.23.0 Source: https://github.com/projectcontour/contour/blob/main/site/content/resources/upgrading.md Delete the projectcontour namespace and reapply the quickstart configuration for a simple upgrade to Contour 1.23.0. This method requires cluster downtime and assumes your installation is in the 'projectcontour' namespace. ```bash $ kubectl delete namespace projectcontour $ kubectl apply -f {{< param base_url >}}/quickstart/v1.23.0/contour.yaml ``` -------------------------------- ### HTTPProxy Query Parameter Matching Examples Source: https://github.com/projectcontour/contour/blob/main/changelogs/CHANGELOG-v1.25.0.md These examples demonstrate various query parameter matching conditions for HTTPProxy routes, including exact, prefix, suffix, regex, contains, and present matching, with support for case-insensitive prefix matching. ```yaml apiVersion: projectcontour.io/v1 kind: HTTPProxy metadata: name: httpproxy-queryparam-matching spec: routes: - conditions: - queryParam: # will match e.g. '?search=example' as is name: search exact: example services: - name: s1 port: 80 - conditions: - queryParam: # will match e.g. '?search=prefixthis' or any string value prefixed by `prefix` (case insensitive) name: search prefix: PreFix ignoreCase: true services: - name: s2 port: 80 - conditions: - queryParam: # will match e.g. '?search=thispostfix' or any string value suffixed by `postfix` (case sensitive) name: search suffix: postfix services: - name: s3 port: 80 - conditions: - queryParam: # will match e.g. '?search=regularexp123' or any string value matching the given regular expression name: search regex: ^regular.* services: - name: s4 port: 80 - conditions: - queryParam: # will match e.g. '?search=somethinginsideanother' or any string value containing the substring 'inside' (case sensitive) name: search contains: inside services: - name: s5 port: 80 - conditions: - queryParam: # will match e.g. '?search=' or any string value given to the named parameter name: search present: true services: - name: s6 port: 80 ``` -------------------------------- ### Port-Forward to Envoy Service (Static Provisioning) Source: https://github.com/projectcontour/contour/blob/main/site/content/docs/1.33/guides/gateway-api.md Establishes a port-forward connection from your local machine to the Envoy service for testing. Use this if you are using static provisioning. ```shell kubectl -n projectcontour port-forward service/envoy 8888:80 ``` -------------------------------- ### Delete and Reapply Namespace for Contour 1.16.0 Upgrade Source: https://github.com/projectcontour/contour/blob/main/site/content/resources/upgrading.md Use this simple upgrade method for quickstart deployments to version 1.16.0 when your installation is in the 'projectcontour' namespace and downtime is acceptable. This removes and recreates pods with the updated configuration. ```bash $ kubectl delete namespace projectcontour $ kubectl apply -f {{< param base_url >}}/quickstart/v1.16.0/contour.yaml ``` -------------------------------- ### Delete CRDs, Namespace, and Reapply Configuration for Upgrade Source: https://github.com/projectcontour/contour/blob/main/site/content/resources/upgrading.md This is the easy upgrade method for quickstart deployments. It involves deleting specific CRDs, the projectcontour namespace, and then reapplying the Contour configuration. Be aware that LoadBalancer IPs might change. ```bash $ kubectl delete crd ingressroutes.contour.heptio.com $ kubectl delete crd tlscertificatedelegations.contour.heptio.com $ kubectl delete namespace projectcontour $ kubectl apply -f {{< param base_url >}}/quickstart/v1.6.1/contour.yaml ``` -------------------------------- ### Deploy Gateway Provisioner Source: https://github.com/projectcontour/contour/blob/main/site/content/docs/1.33/guides/gateway-api.md Apply the Gateway provisioner configuration. This sets up the necessary components for dynamic Gateway API provisioning. ```shell $ kubectl apply -f {{< param base_url >}}/quickstart/contour-gateway-provisioner.yaml ``` -------------------------------- ### Delete and Reapply Contour Namespace for v1.24.0 Source: https://github.com/projectcontour/contour/blob/main/site/content/resources/upgrading.md This is a specific instance of the 'easy way' to upgrade, detailing the deletion of the 'projectcontour' namespace and reapplying the configuration for version v1.24.0. This method is suitable for users with quickstart example deployments who can tolerate downtime. ```bash $ kubectl delete namespace projectcontour $ kubectl apply -f {{< param base_url >}}/quickstart/v1.24.0/contour.yaml ``` -------------------------------- ### Easy Upgrade: Delete and Reapply Namespace (v1.23.1) Source: https://github.com/projectcontour/contour/blob/main/site/content/resources/upgrading.md Simplified upgrade to Contour 1.23.1 by deleting the 'projectcontour' namespace and reapplying the quickstart configuration. This method is suitable if your installation meets specific criteria and can tolerate downtime. Note that LoadBalancer IPs might change. ```bash $ kubectl delete namespace projectcontour $ kubectl apply -f {{< param base_url >}}/quickstart/v1.23.1/contour.yaml ``` -------------------------------- ### Ratelimit Service Configuration Source: https://github.com/projectcontour/contour/blob/main/site/content/docs/1.33/guides/global-rate-limiting.md Configure the rate limit service with domains and descriptors. This example sets a limit of one request per minute for a generic key 'foo' and three requests per minute for each unique remote address. ```yaml apiVersion: v1 kind: ConfigMap metadata: name: ratelimit-config namespace: projectcontour data: ratelimit-config.yaml: | domain: contour descriptors: # requests with a descriptor of ["generic_key": "foo"] # are limited to one per minute. - key: generic_key value: foo rate_limit: unit: minute requests_per_unit: 1 # each unique remote address (i.e. client IP) # is limited to three requests per minute. - key: remote_address rate_limit: unit: minute requests_per_unit: 3 ```