Using Kubernetes API Gateway with Argo Rollouts
Categories:
Quick start - Argo Rollouts Gateway API plugin https://rollouts-plugin-trafficrouter-gatewayapi.readthedocs.io/en/latest/quick-start/
| Step | Name | Namespace | Once Per | Kind | Purpose | 
|---|---|---|---|---|---|
| 2 | eg | default | Cluster | GatewayClass | Create a gateway | 
| 2 | eg | default | Cluster | Gateway | |
| 3 | gateway-controller-role | argo-rollouts | Cluster | ClusterRole | Allow Argo Rollouts to edit Http Routes | 
| 3 | gateway-admin | ? | Cluster | ClusterRoleBinding | |
| 4 | argo-rollouts-http-route | default | Application | HTTPRoute | Create an HTTP route | 
| 5 | argo-rollouts-stable-service | default | Application | Service | Create a Rollout | 
| 5 | argo-rollouts-canary-service | default | Application | Service | |
| 5 | rollouts-demo | default | Application | Rollout | 
Argo Rollouts Gateway API plugin
Install the Gateway Provider (Cluster)
Envoy Gateway, eenmalig per cluster1
vagrant ssh c2d-argocd
helm install eg oci://docker.io/envoyproxy/gateway-helm --version v0.5.0 \
   -n envoy-gateway-system --create-namespace
Show me
[vagrant@c2d-argocd ~ (⎈|microk8s:argo-rollouts)]$ helm install eg oci://docker.io/envoyproxy/gateway-helm --version v0.5.0 \
   -n envoy-gateway-system --create-namespace
NAME: eg
LAST DEPLOYED: Fri Jan 24 11:55:30 2025
NAMESPACE: envoy-gateway-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
**************************************************************************
*** PLEASE BE PATIENT: Envoy Gateway may take a few minutes to install ***
**************************************************************************
Envoy Gateway is an open source project for managing Envoy Proxy as a standalone or Kubernetes-based application gateway.
Thank you for installing Envoy Gateway! 🎉
Your release is named: eg. 🎉
Your release is in namespace: envoy-gateway-system. 🎉
To learn more about the release, try:
  $ helm status eg -n envoy-gateway-system
  $ helm get all eg -n envoy-gateway-system
To have a quickstart of Envoy Gateway, please refer to https://gateway.envoyproxy.io/latest/user/quickstart.html.
To get more details, please visit https://gateway.envoyproxy.io and https://github.com/envoyproxy/gateway.
[vagrant@c2d-argocd ~ (⎈|microk8s:argo-rollouts)]$
kubectl wait --timeout=5m \
    -n envoy-gateway-system deployment/envoy-gateway \
  --for=condition=Available
Show me
[vagrant@c2d-argocd ~ (⎈|microk8s:argo-rollouts)]$ kubectl wait --timeout=5m \
    -n envoy-gateway-system deployment/envoy-gateway \
  --for=condition=Available
deployment.apps/envoy-gateway condition met
[vagrant@c2d-argocd ~ (⎈|microk8s:argo-rollouts)]$
Create a gateway (Cluster)
---
apiVersion: gateway.networking.k8s.io/v1beta1
kind: GatewayClass
metadata:
  name: eg
  namespace: default
spec:
  controllerName: gateway.envoyproxy.io/gatewayclass-controller
---
apiVersion: gateway.networking.k8s.io/v1beta1
kind: Gateway
metadata:
  name: eg
  namespace: default
spec:
  gatewayClassName: eg
  listeners:
    - name: http
      protocol: HTTP
      port: 80
k get gatewayclass -n default
k get gateway -n default
Note:
Ik krijg gateway address1.1.4.10.Show me
[vagrant@c2d-argocd ~ (⎈|microk8s:argo-rollouts)]$ k get gatewayclass -n default
NAME   CONTROLLER                                      ACCEPTED   AGE
eg     gateway.envoyproxy.io/gatewayclass-controller   True       88s
[vagrant@c2d-argocd ~ (⎈|microk8s:argo-rollouts)]$ k get gateway -n default
NAME   CLASS   ADDRESS    PROGRAMMED   AGE
eg     eg      1.1.4.10   True         91s
Allow Argo Rollouts to edit Http Routes (Cluster)
Create an HTTP route (Application)
[root@c2d-argocd ~ (⎈|microk8s:argo-rollouts)]# k get httproutes -n default
NAME                       HOSTNAMES   AGE
argo-rollouts-http-route               17s
Create a Rollout (Application)
Verify
Argo Rollouts Gateway API plugin
kubectl rollout restart deployment -n argo-rollouts argo-rollouts
  --namespace argo-rollouts
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.