Skip to content

Commit

Permalink
docs: link to readthedocs site (#44)
Browse files Browse the repository at this point in the history
* docs: link to readthedocs site

Signed-off-by: Kostis Kapelonis <[email protected]>

* docs: mark pages in progress

Signed-off-by: Kostis Kapelonis <[email protected]>

---------

Signed-off-by: Kostis Kapelonis <[email protected]>
  • Loading branch information
kostis-codefresh authored Feb 28, 2024
1 parent 7533a94 commit 6eec228
Show file tree
Hide file tree
Showing 7 changed files with 21 additions and 79 deletions.
82 changes: 3 additions & 79 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,92 +8,16 @@

# Argo Rollouts Gateway API plugin

[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.
This repository is a [plugin](https://argoproj.github.io/argo-rollouts/features/traffic-management/plugins/) of [Argo Rollouts](https://argoproj.github.io/rollouts/) for enabling the use of the Kubernetes Gateway API in Progressive Delivery scenarios.

![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.

## 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

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 integrate 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 HTTPRoute
1. Create canary and stable services
1. Create argo-rollouts 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:

* [Cilium](examples/cilium)
* [EnvoyGateway](examples/envoygateway)
* [Gloo Gateway](examples/gloo-gateway/)
* [Google Cloud](examples/google-cloud)
* [Kong](examples/kong)
* [NGINX Kubernetes Gateway](examples/nginx/)
* [Traefik](examples/traefik/)



Note that these examples are included just for illustration purposes. You should be able
to use any solution that implements the Gateway API.

## Installing the plugin

There are many ways to install the Gateway API plugin in Argo Rollouts. The easiest
one is to simply download it during startup.

```yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: argo-rollouts-config # must be so name
namespace: argo-rollouts # must be in this namespace
data:
trafficRouterPlugins: |-
- name: "argoproj-labs/gatewayAPI"
location: "https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-gatewayapi/releases/download/v0.0.0-rc1/gateway-api-plugin-linux-amd64"
```
Deploy this file with `kubectl` or Argo CD or any other deployment method you use for your cluster.

Restart the Argo Rollouts pod for the plug-in to take effect.
```shell
kubectl rollout restart deployment -n argo-rollouts argo-rollouts
```

For more details see the [Plugin documentation](https://argoproj.github.io/argo-rollouts/features/traffic-management/plugins/) at Argo Rollouts.
See [the main documentation site](https://rollouts-plugin-trafficrouter-gatewayapi.readthedocs.io/en/latest/) for all the details.

## Feedback needed

The gateway API plugin should cover all providers that support it. If you find an issue
please [tell us about it](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-gatewayapi/issues)

If you also want to add an example with your favorite gateway API provider please send us a [Pull Request](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-gatewayapi/pulls).
If you also want to add an example with your favorite [gateway API provider](https://rollouts-plugin-trafficrouter-gatewayapi.readthedocs.io/en/latest/provider-status/) please open a [Pull Request](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-gatewayapi/pulls).



3 changes: 3 additions & 0 deletions docs/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# Contributing

!!! warning
Page under construction.

## Before You Start
The Gateway Plugin for Argo Rollouts is written in Golang. If you do not have a good grounding in Go, try out [the tutorial](https://tour.golang.org/).

Expand Down
3 changes: 3 additions & 0 deletions docs/features/advanced-deployments.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# Advanced Deployment methods

!!! warning
Page under construction.

To be written
3 changes: 3 additions & 0 deletions docs/features/header-based-routing.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# Header Based routing

!!! warning
Page under construction.

To be written
4 changes: 4 additions & 0 deletions docs/features/multiple-routes.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# Using Multiple Routes

!!! warning
Page under construction.


To be written
3 changes: 3 additions & 0 deletions docs/features/tcp.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# Using TCP

!!! warning
Page under construction.

To be written
2 changes: 2 additions & 0 deletions docs/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ data:

Deploy this file with `kubectl -f gateway-plugin.yml -n argo-rollouts`. You can also use [Argo CD](https://argoproj.github.io/cd/) or any other Kubernetes deployment method that you prefer.

For more installation options see the [Plugin documentation](https://argoproj.github.io/argo-rollouts/features/traffic-management/plugins/) at the main Argo Rollouts site.

## Verifying the installation

Restart the Argo Rollouts controller so that it detects the presence of the plugin.
Expand Down

0 comments on commit 6eec228

Please sign in to comment.