[go: nahoru, domu]

Skip to content

The Argo Rollouts plugin implementing the Contour HTTPProxy traffic control in progressive delivery scenarios.

Notifications You must be signed in to change notification settings

yyzxw/rollouts-plugin-trafficrouter-contour

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

About Contour

Contour is an ingress controller for Kubernetes that works by deploying the Envoy proxy as a reverse proxy and load balancer. Contour supports dynamic configuration updates out of the box while maintaining a lightweight profile.

Contour supports multiple configuration APIs in order to meet the needs of as many users as possible:

  • Ingress - A stable upstream API that enables basic ingress use cases.
  • HTTPProxy - Contour's Custom Resource Definition (CRD) which expands upon the functionality of the Ingress API to allow for a richer user experience as well as solve shortcomings in the original design.
  • Gateway API (beta) - A new CRD-based API managed by the Kubernetes SIG-Network community that aims to evolve Kubernetes service networking APIs in a vendor-neutral way.

How to integrate Contour with Argo Rollouts

NOTES:

1. The file as follows just for illustrative purposes only, please do not use directly!!!

2. The argo-rollouts >= v1.5.0-rc1

Steps:

  1. Run the yaml/rbac.yaml to add the role for operate on the HTTPProxy.
  2. Build this plugin.
  3. Put the plugin somewhere & mount on to the container for argo-rollouts:
apiVersion: apps/v1
kind: Deployment
metadata:
name: argo-rollouts
namespace: argo-rollouts
spec:
template:
   spec:
   volumes:
      - name: contour-plugin
      hostPath:
          path: /CHANGE-ME/rollouts-trafficrouter-contour-plugin
          type: ''
   containers:
      - name: argo-rollouts
      volumeMounts:
          - name: contour-plugin
          mountPath: /CHANGE-ME/rollouts-trafficrouter-contour-plugin
      
  1. Create a ConfigMap to let argo-rollouts know the plugin's location:
apiVersion: v1
kind: ConfigMap
metadata:
name: argo-rollouts-config
namespace: argo-rollouts
data:
trafficRouterPlugins: |-
   - name: "argoproj-labs/contour"
   location: "file://CHANGE-ME/rollouts-trafficrouter-contour-plugin/contour-plugin"
binaryData: {}
  1. Create the CR/Rollout and put it into the operated services` namespace:
apiVersion: argoproj.io/v1alpha1
   kind: Rollout
   metadata:
   name: rollouts-demo
   namespace: rollouts-demo
   spec:
   replicas: 6
   selector:
       matchLabels:
       app.kubernetes.io/instance: rollouts-demo
   strategy:
       canary:
       canaryService: canaryService
       stableService: stableService
       steps:
           - setWeight: 30
           - pause:
               duration: 10
       trafficRouting:
           plugins:
           argoproj-labs/contour:
               httpProxy: rollouts-demo
               namespace: rollouts-demo
   workloadRef:
       apiVersion: apps/v1
       kind: Deployment
       name: canary
  1. Enjoy It.

TODO: Contribution

About

The Argo Rollouts plugin implementing the Contour HTTPProxy traffic control in progressive delivery scenarios.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages

  • Go 98.6%
  • Makefile 1.4%