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.