Project
Use Gloo Edge gateways with Kubernetes ingress resources. Gloo Edge supports ingress, however it requires you to deploy a separate gateway for this. With this adapter, you can integrate your Kubernetes ingresses into an existing gateway.
The adapter works by monitoring ingress resources and automatically creating a Gloo route table for each ingress. You can then mount the created route tables automatically in your gateway.
Install
Install a Gloo Edge gateway:
kubectl create namespace gloo-system
helm install gloo gloo --namespace gloo-system --repo https://storage.googleapis.com/solo-public-helm \
--set gateway.readGatewaysFromAllNamespaces=trueYou can also have a look at the Gloo documentation for detailed installation instructions.
Install the ingress adapter into namespace gloo-system:
git checkout git@github.com:CaperWhite/gloo-ingress-adapter.git
cd gloo-ingress-adapter
helm --namespace gloo-system install gloo-ingress-adapter chartsAfter this, the ingress adapter should be up and running, and monitoring ingress resources. By default it will create
route tables for ingress resources with ingress class name gloo-route.
Verify installation
Deploy a test service:
kubectl create namespace ingress-test
kubectl --namespace ingress-test apply --filename examples/test.yamlCreate an ingress resource for the test service:
cat <<-INGRESS | kubectl apply --namespace ingress-test --filename -
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-test
spec:
ingressClassName: gloo-route
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: ingress-test
port:
number: 8080
INGRESSVerify a route table has been created:
kubectl --namespace ingress-test get routetable ingress-test -o yamlCreate a virtual service resource that automatically mounts the created route tables:
cat <<-SERVICE | kubectl --namespace gloo-system apply --filename -
apiVersion: gateway.solo.io/v1
kind: VirtualService
metadata:
name: ingress-test
spec:
virtualHost:
domains:
- ingress-test.local
routes:
- matchers:
- prefix: "/"
delegateAction:
selector:
labels:
ingress.caperwhite.com/protocol: http
namespaces:
- ingress-test
SERVICEMake the gateway accessible locally:
kubectl --namespace gloo-system port-forward service/gateway-proxy 8080:80Check if you can access the service:
curl -H 'Host: ingress-test.local' http://127.0.0.1:8080should return
{"result":true}Delete the ingress:
kubectl --namespace ingress-test delete ingress ingress-testVerify the route table is gone:
kubectl --namespace ingress-test get routetable -AAcknowledgements
"Gloo" is a trademark of Solo.io, Inc..