Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deployment configuration for geotags #720

Open
jkremser opened this issue Nov 9, 2021 · 0 comments
Open

Deployment configuration for geotags #720

jkremser opened this issue Nov 9, 2021 · 0 comments
Milestone

Comments

@jkremser
Copy link
Member

jkremser commented Nov 9, 2021

Currently we specify
operator:yaml:

            - name: CLUSTER_GEO_TAG
              value: {{ quote .Values.k8gb.clusterGeoTag }}
            - name: EXT_GSLB_CLUSTERS_GEO_TAGS
              value: {{ quote .Values.k8gb.extGslbClustersGeoTags }}

So for 5 cluster setup it can look like:

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: To do
Development

No branches or pull requests

2 participants