vmware / hamlet

Multi-Vendor Service Mesh Interoperation
Other
86 stars 14 forks source link

Make more explicit the FQDN description #9

Closed sergiopozoh closed 4 years ago

sergiopozoh commented 4 years ago

Wanted to propose to make FQDN unique and provide a better description for it.

Proposed change

Reasons The current description of FQDN is not saying much about how a service owner or consumer could use it: "FQDN the federated service exposes outside of the owner mesh".

FQDN might not be required or used by some implementors, like Consul. But it can be helpful to provide aliasing (for example, using some parts of the domain name as prefix or suffix for a service Name or ServiceID).

Alternatives Currently, we have discarded overloading Name with FQDN or vice-versa.

Currently, we have discarded making Ingress optional if the owner mesh has programmed an ingress of the service in a DNS the consumer mesh can use, as this would assume a global DNS which may not be the case in many architectures, but especially in different administrative boundaries.

andrewsykim commented 4 years ago

+1 for making FQDN optional.

I can imagine a Kubernetes-based implementation updating the cluster DNS with the fqdn provided by Hamlet but in the absense of that, it can connect to the endpoints directly w/ SNI header so optional makes sense.

sergiopozoh commented 4 years ago

I meant, these are the options I see.

In the case of TLS, I think we still have the same two cases. To me, FQDN makes sense to be mandatory when both owner and consumer share DNS.

Am I missing anything @andrewsykim ?

andrewsykim commented 4 years ago

Specifically for a Kubernetes-based implementation, DNS (CoreDNS to be specific) would not be shared across clusters , but we may want to apply some global FQDN across clusters. The FQDN doesn't have to resolve to the same address (or clusterIP), but the address can route to the same set of endpoints. So in this scenario the first case is more applicable.

Even when DNS is shared across consumers, I'm not sure that FQDN will always be mandatory. Need to think about this one some more.

sergiopozoh commented 4 years ago

Even when DNS is shared across consumers, I'm not sure that FQDN will always be mandatory. Need to think about this one some more.

I haven't found a reason to make it mandatory yet. That's the reason I was proposing to make it optional.

Once you have given it a thought, I would love to learn more!

sergiopozoh commented 4 years ago

Wanted to provide an update on this. Changes are only in the consumer behavior regarding what to do with the FQDN provided by the service owner, and the descriptions. No changes to data model or APIs.

Proposed change

Reasons The current description of FQDN is not saying much about how a service owner or consumer could use it: "FQDN the federated service exposes outside of the owner mesh".

FQDN might not be required or used by some implementors, like Consul. But it can be helpful to provide aliasing (for example, using some parts of the domain name as prefix or suffix for a service Name or ServiceID).

Alternatives Currently, we have discarded overloading Name with FQDN or vice-versa.

Currently, we have discarded making Ingress optional if the owner mesh has programmed an ingress of the service in a DNS the consumer mesh can use, as this would assume a global DNS which may not be the case in many architectures, but especially in different administrative boundaries.