From 265fd11ea236ebb927f188644f6f550a55cc3014 Mon Sep 17 00:00:00 2001 From: Benedikt Rollik Date: Thu, 27 Nov 2025 11:13:35 +0100 Subject: [PATCH 1/3] docs(k8s): tutorial contour --- tutorials/deploy-contour-on-kapsule/index.mdx | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 tutorials/deploy-contour-on-kapsule/index.mdx diff --git a/tutorials/deploy-contour-on-kapsule/index.mdx b/tutorials/deploy-contour-on-kapsule/index.mdx new file mode 100644 index 0000000000..21fa6f7611 --- /dev/null +++ b/tutorials/deploy-contour-on-kapsule/index.mdx @@ -0,0 +1,91 @@ +--- +title: Deploying Contour Ingress Controller in gateway API mode on a Scaleway Kapsule cluster +description: Discover how to deploy Contour Ingress Controller in gateway API mode on a Scaleway Kapsule cluster. +tags: contour ingress kapsule kubernetes k8s +products: + - kubernetes +dates: + validation: 2025-11-27 + posted: 2025-11-27 + validation_frequency: 12 +difficulty: advanced +usecase: + - application-hosting +ecosystem: + - third-party +--- +import Requirements from '@macros/iam/requirements.mdx' + + +This guide explains how to install Contour with Gateway API support on a Scaleway Kapsule Kubernetes cluster. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- An [SSH key](/organizations-and-projects/how-to/create-ssh-key/) +- An [Instance](/instances/how-to/create-an-instance/) running on Ubuntu or Debian + + +## Installing Contour using kubectl + +1. Run the following command to add the `projectcontour` Helm chart repositiory to your local machine: + ```bash + helm repo add contour https://projectcontour.github.io/helm-charts/ + ``` +2. Install the Contour chart using `helm`: + ```bash + helm install my-release contour/contour --namespace projectcontour --create-namespace + ``` + + The installation of contour may take a moment. Do not proceed with the tuorial until you get a confirmation message. + +3. Check Countour is running using the following command: + ```bash + kubectl -n projectcontour get po,svc + ``` + You should get an output like the following example: + ```bash + NAME READY STATUS RESTARTS AGE + pod/my-release-contour-contour-5c79cb6f76-kshnv 1/1 Running 0 9m45s + pod/my-release-contour-envoy-b2rzb 2/2 Running 0 9m45s + pod/my-release-contour-envoy-b4qdz 2/2 Running 0 9m45s + pod/my-release-contour-envoy-cqldx 2/2 Running 0 9m45s + + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + service/my-release-contour ClusterIP 10.32.6.116 8001/TCP 9m45s + service/my-release-contour-envoy LoadBalancer 10.32.14.104 195.154.75.78 80:32736/TCP,443:32408/TCP 9m45s + ``` + You should see the following: + + - 1 instance of `pod/my-release-contour-contour with status` `Running` and 1/1 Ready + - 1+ instance(s) of `pod/my-release-contour-envoy` with each status `Running` and 2/2 Ready + - 1 instance of `service/my-release-contour` + - 1 instance of `service/my-release-contour-envoy` + +## Installing a demo application and routing traffic to it + +1. Install `htttpbin` unsing `kubectl` with the following command: + ```bash + kubectl apply -f https://projectcontour.io/examples/httpbin.yaml + ``` +2. Verify the installation by running: + ```bash + kubectl get po,svc,ing -l app=httpbin + ``` + You should see an output similar to the following example: + ```bash + NAME READY STATUS RESTARTS AGE + pod/httpbin-865bfd74d-6dlnx 1/1 Running 0 8m52s + pod/httpbin-865bfd74d-hjq22 1/1 Running 0 8m52s + pod/httpbin-865bfd74d-wgqvm 1/1 Running 0 8m52s + + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + service/httpbin ClusterIP 10.32.3.254 80/TCP 8m52s + + NAME CLASS HOSTS ADDRESS PORTS AGE + ingress.networking.k8s.io/httpbin contour * 195.154.75.78 80 8m52s + ``` + - 3 instances of `pod/httpbin`, each with status `Running` and 1/1 Ready + - 1 `service/httpbin` of the type `ClusterIP`, listening on port 80 + - 1 Ingress class `contour` on port 80 \ No newline at end of file From 7abe2b4532484f5d5ea0a0955c42d00cd40a0ad4 Mon Sep 17 00:00:00 2001 From: Benedikt Rollik Date: Thu, 27 Nov 2025 11:37:56 +0100 Subject: [PATCH 2/3] docs(k8s): content --- tutorials/deploy-contour-on-kapsule/index.mdx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tutorials/deploy-contour-on-kapsule/index.mdx b/tutorials/deploy-contour-on-kapsule/index.mdx index 21fa6f7611..69b2292e5a 100644 --- a/tutorials/deploy-contour-on-kapsule/index.mdx +++ b/tutorials/deploy-contour-on-kapsule/index.mdx @@ -17,7 +17,9 @@ ecosystem: import Requirements from '@macros/iam/requirements.mdx' -This guide explains how to install Contour with Gateway API support on a Scaleway Kapsule Kubernetes cluster. +Contour is an open-source ingress controller for Kubernetes clusters, designed to manage external access to services within the cluster. +It provides advanced routing, load balancing, and security features for HTTP and gRPC traffic. +Contour is built on top of Envoy, a high-performance edge and service proxy, which handles the actual traffic routing and load balancing. @@ -88,4 +90,8 @@ This guide explains how to install Contour with Gateway API support on a Scalewa ``` - 3 instances of `pod/httpbin`, each with status `Running` and 1/1 Ready - 1 `service/httpbin` of the type `ClusterIP`, listening on port 80 - - 1 Ingress class `contour` on port 80 \ No newline at end of file + - 1 Ingress class `contour` on port 80 +3. Route some local traffic to it: + ```bash + kubectl -n projectcontour port-forward service/my-release-contour-envoy 8888:80 + ``` \ No newline at end of file From 48c405870dca697bf0ff20cfb3e37e7bcd102043 Mon Sep 17 00:00:00 2001 From: Benedikt Rollik Date: Thu, 27 Nov 2025 13:51:35 +0100 Subject: [PATCH 3/3] docs(k8s): tutorial content --- tutorials/deploy-contour-on-kapsule/index.mdx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tutorials/deploy-contour-on-kapsule/index.mdx b/tutorials/deploy-contour-on-kapsule/index.mdx index 69b2292e5a..8fdb0e5112 100644 --- a/tutorials/deploy-contour-on-kapsule/index.mdx +++ b/tutorials/deploy-contour-on-kapsule/index.mdx @@ -91,7 +91,10 @@ Contour is built on top of Envoy, a high-performance edge and service proxy, whi - 3 instances of `pod/httpbin`, each with status `Running` and 1/1 Ready - 1 `service/httpbin` of the type `ClusterIP`, listening on port 80 - 1 Ingress class `contour` on port 80 -3. Route some local traffic to it: +3. Port-forward from your local machine to the Envoy service: ```bash kubectl -n projectcontour port-forward service/my-release-contour-envoy 8888:80 - ``` \ No newline at end of file + ``` +4. Open a browser and type `http://local.projectcontour.io:8888` in the adressbar. You will see the httpbin default page in your browser. + +You now have successfully installed Contour. To go further, explore [HTTPProxy](https://projectcontour.io/docs/1.33/config/fundamentals), a cluster-wide reverse proxy. Discover the [Gateway API documentation](https://projectcontour.io/docs/1.33/config/gateway-api) and [Gateway API guide](https://projectcontour.io/docs/1.33/guides/gateway-api). You can also read about [advanced deployment options](https://projectcontour.io/docs/1.33/deploy-options/). \ No newline at end of file