Skip to content
This repository has been archived by the owner on Feb 27, 2023. It is now read-only.

Can a http/2 gRPC application connect through envoy/heptio? #262

Open
hmorikaw opened this issue Mar 20, 2019 · 2 comments
Open

Can a http/2 gRPC application connect through envoy/heptio? #262

hmorikaw opened this issue Mar 20, 2019 · 2 comments

Comments

@hmorikaw
Copy link

Describe the solution you'd like
We are operating Gimbal cluster in our private cloud and got a request to get Gimbal support gRPC (http2) based endpoints as well.

Manually change the services discovered by Gimbal discoverer to support gRPC backends will work temporally.
Here is the example displaying what they do by hand.

$ cat loadbalancer-service.yaml
apiVersion: v1
kind: Service
metadata:
  annotations:
    contour.heptio.com/upstream-protocol.h2: 8080,port-8080 // <- Here!!
  labels:
    gimbal.heptio.com/backend: openstack-cluster
    gimbal.heptio.com/load-balancer-id: loadblancer-uuid
    gimbal.heptio.com/load-balancer-name: grpc-http2
    gimbal.heptio.com/service: loadbalancer-service
  name: openstack-cluster-service-uuid
  namespace: loadbalancer-namespace
spec:
  clusterIP: None
  ports:
  - name: port-8080
    port: 8080
    protocol: TCP
    targetPort: 8080
  sessionAffinity: None
  type: ClusterIP

But the services discovered by Gimbal discoverer are overwritten on the next cycle of discovery.
To make this happen without manual changes, we are expecting that ingressRoute has a functionality to support gRPC. If you know how to do it, let us know please.

Environment:

  • Gimbal Cluster Kubernetes version (use kubectl version): v1.13.4
  • Backend Cluster versions (OpenStack and/or Kubernetes): OpenStack Pike
  • Gimbal version (Gimbal git repository tag): v0.4.0
  • Contour version: v0.9.0
  • kubernetes-discoverer version: v0.4.0
  • openstack-discoverer version (if applicable):v0.4.0
  • Cloud provider or hardware configuration: Xeon E5-2650Lv3 1.80GHz /2CPU/512GBMEM/SAS 300GB x2/RAID1*1vol /NVMeSSD 3.2TB/Intel X540 10Gbase-T 2port
  • OS (e.g. from /etc/os-release): CentOS Linux release 7.6.1810
  • Kernel (e.g. uname -a): 3.10.0-957.5.1.el7.x86_64
@alexbrand
Copy link
Contributor

Hey @hmorikaw, are you updating the service definition in the gimbal cluster or in the backend cluster? Or is this an OpenStack service?

@hmorikaw
Copy link
Author

@alexbrand I updated the service definition in the gimbal cluster.

I updated the Gimbal service yaml file, which was created by the Gimbal discoverer, in loadbalancer-namespace namespace.

$ kubectl get ns
NAME               STATUS   AGE
default            Active   31d
gimbal-contour     Active   17d
gimbal-discovery   Active   17d
kube-public        Active   31d
kube-system        Active   31d
loadbalancer-namespace  Active   19d // <= I updated the service definition in this namespace

$ kubectl get svc -n loadbalancer-namespace
NAME                                                   TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE
openstack-cluster-service-uuid   ClusterIP   None         <none>        8080/TCP   17d

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants