Git Product home page Git Product logo

komalsukhani / rollouts-plugin-trafficrouter-gatewayapi Goto Github PK

View Code? Open in Web Editor NEW

This project forked from argoproj-labs/rollouts-plugin-trafficrouter-gatewayapi

0.0 0.0 0.0 147 KB

The Argo Rollouts plugin implementing the Kubernetes Gateway API specification for using different traffic providers in progressive delivery scenarios

License: Apache License 2.0

Go 96.34% Makefile 3.66%

rollouts-plugin-trafficrouter-gatewayapi's Introduction

Code: Go Report Card Gateway API plugin CI

Social: Twitter Follow Slack

Argo Rollouts Gateway API plugin

Argo 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 to split traffic between pods with full control and in a gradual way.

Gateway API with traffic providers

Until recently adding a new traffic provider to Argo Rollouts needed ad-hoc support code. With the adoption of the Gateway API, 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 community. It is a collection of resources that model service networking in Kubernetes.

See a list of current projects that support the API.

Prerequisites

You need the following

  1. A Kubernetes cluster
  2. An installation of the Argo Rollouts controller
  3. A traffic provider that supports the Gateway API
  4. An installation of the Gateway plugin

Once everything is ready you need to create a Rollout resource 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
  2. Create GatewayClass and Gateway resources
  3. Create cluster entrypoint and map it with our Gateway entrypoint
  4. Install Argo Rollouts in your cluster along with the Gateway API plugin
  5. Create HTTPRoute
  6. Create canary and stable services
  7. Create argo-rollouts resources
  8. 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:

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.

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.

For more details see the Plugin documentation at Argo Rollouts.

Feedback needed

The gateway API plugin should cover all providers that support it. If you find an issue please tell us about it

If you also want to add an example with your favorite gateway API provider please send us a Pull Request.

rollouts-plugin-trafficrouter-gatewayapi's People

Contributors

iandelahorne avatar kostis-codefresh avatar lgadban avatar philipp-plotnikov avatar philippplotnikov avatar smarunich avatar xtineskim avatar yohanb avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.