You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
cluster 1:
CLUSTER_GEO_TAG: eu
EXT_GSLB_CLUSTERS_GEO_TAGS: us, cz, af, ap
cluster 2:
CLUSTER_GEO_TAG: us
EXT_GSLB_CLUSTERS_GEO_TAGS: eu, cz, af, ap
cluster 3:
CLUSTER_GEO_TAG: cz
EXT_GSLB_CLUSTERS_GEO_TAGS: eu, us, af, ap
..
This is not ideal because for each cluster EXT_GSLB_CLUSTERS_GEO_TAGS needs to be calculated (so that CLUSTER_GEO_TAG is not in the list).
optimisation 1)
If we allowed the EXT_GSLB_CLUSTERS_GEO_TAGS to contain all the geo tags, including the "myself" (~CLUSTER_GEO_TAG), the deployment burden would be easier and we can easily perform this operation internally in the gslb controller (even check if EXT_GSLB_CLUSTERS_GEO_TAGS ∈ CLUSTER_GEO_TAG during validation phase)
optimisation 2)
Another optimisation that would make the life easier for those who deploy us would be inferring the CLUSTER_GEO_TAG from the Node's label/annotation. This shifts the problem to some other level, but it would allow for the same helm command (or the same crossplane XRD / whatever) to be run against each cluster.
optimisation 3)
Furthermore, if we look into distributed systems consisting of a lot of clusters (say 10), the EXT_GSLB_CLUSTERS_GEO_TAGS list will be pretty long and we need to assure the consistency among all the clusters. Now what if we want to unplug one cluster or add additional one? We are in the situation where we have to update each deployment of k8gb on each cluster to reflect this change in the EXT_GSLB_CLUSTERS_GEO_TAGS variable. If we have this list stored as TXT or SOA record on the DNS level (in the similar fashion as we store the split brain logic) this would be no longer needed. On the other hand, we should be careful about how much info would be stored in the centralised fashion, because we might be losing the no spof feature (imho). Well, but if the edge dns fails, we are screwed anyway :D
The text was updated successfully, but these errors were encountered:
Currently we specify
operator:yaml:
So for 5 cluster setup it can look like:
This is not ideal because for each cluster
EXT_GSLB_CLUSTERS_GEO_TAGS
needs to be calculated (so thatCLUSTER_GEO_TAG
is not in the list).optimisation 1)
If we allowed the
EXT_GSLB_CLUSTERS_GEO_TAGS
to contain all the geo tags, including the "myself" (~CLUSTER_GEO_TAG
), the deployment burden would be easier and we can easily perform this operation internally in the gslb controller (even check ifEXT_GSLB_CLUSTERS_GEO_TAGS ∈ CLUSTER_GEO_TAG
during validation phase)optimisation 2)
Another optimisation that would make the life easier for those who deploy us would be inferring the
CLUSTER_GEO_TAG
from the Node's label/annotation. This shifts the problem to some other level, but it would allow for the same helm command (or the same crossplane XRD / whatever) to be run against each cluster.optimisation 3)
Furthermore, if we look into distributed systems consisting of a lot of clusters (say 10), the
EXT_GSLB_CLUSTERS_GEO_TAGS
list will be pretty long and we need to assure the consistency among all the clusters. Now what if we want to unplug one cluster or add additional one? We are in the situation where we have to update each deployment of k8gb on each cluster to reflect this change in theEXT_GSLB_CLUSTERS_GEO_TAGS
variable. If we have this list stored as TXT or SOA record on the DNS level (in the similar fashion as we store the split brain logic) this would be no longer needed. On the other hand, we should be careful about how much info would be stored in the centralised fashion, because we might be losing the no spof feature (imho). Well, but if the edge dns fails, we are screwed anyway :DThe text was updated successfully, but these errors were encountered: