From 7533a94fb88266bf8fed67139a4772ef338d1f18 Mon Sep 17 00:00:00 2001 From: "Kostis (Codefresh)" <39800303+kostis-codefresh@users.noreply.github.com> Date: Wed, 28 Feb 2024 14:09:49 +0200 Subject: [PATCH] docs: homepage content (#43) Signed-off-by: Kostis Kapelonis --- README.md | 2 +- {public => docs}/images/gateway-api.png | Bin docs/index.md | 49 +++++++++++++++++++++++- docs/installation.md | 2 +- docs/provider-status.md | 3 +- 5 files changed, 52 insertions(+), 4 deletions(-) rename {public => docs}/images/gateway-api.png (100%) diff --git a/README.md b/README.md index b47b792..f35b31d 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ [Argo Rollouts](https://argoproj.github.io/rollouts/) is a progressive delivery controller for Kubernetes. It supports several advanced deployment methods such as blue/green and canaries. For canary deployments Argo Rollouts can optionally use [a traffic provider](https://argoproj.github.io/argo-rollouts/features/traffic-management/) to split traffic between pods with full control and in a gradual way. -![Gateway API with traffic providers](public/images/gateway-api.png) +![Gateway API with traffic providers](docs/images/gateway-api.png) Until recently adding a new traffic provider to Argo Rollouts needed ad-hoc support code. With the adoption of the [Gateway API](https://gateway-api.sigs.k8s.io/), the integration becomes much easier as any traffic provider that implements the API will automatically be supported by Argo Rollouts. diff --git a/public/images/gateway-api.png b/docs/images/gateway-api.png similarity index 100% rename from public/images/gateway-api.png rename to docs/images/gateway-api.png diff --git a/docs/index.md b/docs/index.md index a2342a2..5d9510f 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,3 +1,50 @@ # Progressive Delivery with the Kubernetes Gateway API -To be written +[Argo Rollouts](https://argoproj.github.io/rollouts/) is a progressive delivery controller for Kubernetes. It supports several advanced deployment methods such as [blue/green](https://argo-rollouts.readthedocs.io/en/stable/features/bluegreen/) and [canaries](https://argo-rollouts.readthedocs.io/en/stable/features/canary/). + +For canary deployments Argo Rollouts can optionally use [a traffic provider](https://argoproj.github.io/argo-rollouts/features/traffic-management/) to split traffic between pods with full control and in a gradual way. + +![Gateway API with traffic providers](images/gateway-api.png) + +Until recently adding a new traffic provider to Argo Rollouts needed ad-hoc support code. With the adoption of the [Gateway API](https://gateway-api.sigs.k8s.io/), the integration becomes much easier as any traffic provider that implements the API will automatically be supported by Argo Rollouts. + +## The Kubernetes Gateway API + +The Gateway API is an open source project managed by the [SIG-NETWORK](https://github.com/kubernetes/community/tree/master/sig-network) community. It is a collection of resources that model service networking in Kubernetes. + +See a [list of current projects](https://gateway-api.sigs.k8s.io/implementations/) that support the API. + +## Prerequisites + +You need the following + +1. A Kubernetes cluster +2. An [installation](https://argoproj.github.io/argo-rollouts/installation/) of the Argo Rollouts controller +3. A traffic provider that [supports the Gateway API](https://gateway-api.sigs.k8s.io/implementations/) +4. An [installation of the Gateway plugin](installation.md) + +Once everything is ready you need to create [a Rollout resource](https://argoproj.github.io/argo-rollouts/features/specification/) for all workloads that will use the integration. + +## How to use the Gateway API with Argo Rollouts + +This is the installation process. + +1. Enable Gateway Provider and create Gateway entrypoint +1. Create GatewayClass and Gateway resources +1. Create cluster entrypoint and map it with our Gateway entrypoint +1. Install Argo Rollouts in your cluster along with the Gateway API plugin +1. Create an HTTPRoute +1. Create canary and stable services +1. Create your Rollout resources +1. Start a deployment + +The first 3 steps are specific to your provider/implementation of the Gateway API inside the Kubernetes cluster. The rest of the steps are the same regardless of the specific implementation you chose. + +See end-to-end examples for several other implementations +at the [provider status page](provider-status.md). + + + + + + diff --git a/docs/installation.md b/docs/installation.md index d9af4db..cb312fe 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -9,7 +9,7 @@ First get the core Argo Rollouts controller in your cluster. Follow the [official instructions](https://argo-rollouts.readthedocs.io/en/stable/installation/) to install Argo Rollouts. -Optionally instal the [Argo Rollouts CLI](https://argoproj.github.io/argo-rollouts/features/kubectl-plugin/) in order to control Rollouts from your terminal. +Optionally install the [Argo Rollouts CLI](https://argoproj.github.io/argo-rollouts/features/kubectl-plugin/) in order to control Rollouts from your terminal. ## Installing the plugin diff --git a/docs/provider-status.md b/docs/provider-status.md index 202cc8d..14b94ff 100644 --- a/docs/provider-status.md +++ b/docs/provider-status.md @@ -18,7 +18,8 @@ For convenience we are including here a list of those actually tested with the p | [NGINX Gateway](https://github.com/nginxinc/nginx-gateway-fabric) | yes | [Example](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-gatewayapi/tree/main/examples/nginx) | | [Traefik](https://doc.traefik.io/traefik/providers/kubernetes-gateway/) | yes | [Example](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-gatewayapi/tree/main/examples/traefik) | - +Note that these examples are included just for completeness. You should be able +to use any solution that implements the Gateway API. !!! note We are always looking for more tested implementations. If you have tried the plugin with a provider not listed above please [open a Pull Request](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-gatewayapi/pulls) to add it to the list.