|
| 1 | += ADR 0031 - Naming scheme for Servala cluster names and URLs |
| 2 | +:adr_author: Nicolas Bigler |
| 3 | +:adr_owner: Schedar |
| 4 | +:adr_reviewers: |
| 5 | +:adr_date: 2025-04-11 |
| 6 | +:adr_upd_date: 2025-04-11 |
| 7 | +:adr_status: draft |
| 8 | +:adr_tags: servala,naming,scheme,cluster |
| 9 | + |
| 10 | +include::partial$adr-meta.adoc[] |
| 11 | + |
| 12 | +[NOTE] |
| 13 | +.Summary |
| 14 | +==== |
| 15 | +With the launch of Servala we will have multiple clusters running on different cloud providers and on different regions. To ensure consistency and ease of management, it is important to establish a naming scheme for these clusters. This ADR outlines the proposed naming scheme for Servala cluster names and URLs. |
| 16 | +==== |
| 17 | + |
| 18 | +== Context |
| 19 | + |
| 20 | +=== Cluster names |
| 21 | + |
| 22 | +We have two different kind of clusters for Servala: |
| 23 | +* Control-plane clusters: Those run Crossplane and contain all the Crossplane resources like functions, composites, api-server etc. |
| 24 | +* Service clusters: Those run the workloads that are managed by Crossplane. |
| 25 | + |
| 26 | +To properly distinguish and identify each cluster, the cluster name should contain the following information: |
| 27 | +* The CSP where the cluster is running: Cloudscale, Exoscale, etc. |
| 28 | +* The region where the cluster is running: `ch-gva-2`, `lpg1`, etc. |
| 29 | +* The type of cluster: `control` or `service` |
| 30 | +* The stage of the cluster: `test`, `prod` |
| 31 | +* A counter for each cluster to ensure uniqueness. |
| 32 | + |
| 33 | +Lieutenant already gives us part of the naming scheme. Each cluster should be prefixed with `c-` followed by the tenant, so that it's easy for users to identify which tenant owns the cluster. |
| 34 | + |
| 35 | +=== URLs |
| 36 | + |
| 37 | +We have two different URLs that are important: |
| 38 | +* The Kubernetes API endpoint |
| 39 | +* The apps endpoint of OpenShift for applications on the service clusters |
| 40 | + |
| 41 | +The defaults in OpenShift are: |
| 42 | + |
| 43 | +* `api.[clustername].domain.tld` |
| 44 | +* `*.apps.[clustername].domain.tld` |
| 45 | + |
| 46 | +== Decision |
| 47 | + |
| 48 | +=== Cluster names |
| 49 | + |
| 50 | +Putting all the information above together we propose the following naming scheme for Servala cluster names: |
| 51 | + |
| 52 | +`c-servala-[TYPE]-[CSP]-[REGION]-[STAGE][COUNTER]` |
| 53 | + |
| 54 | +TYPE:: The type of the cluster. `control` or `service` |
| 55 | +CSP:: The CSP where the cluster is running. cloudscale, exoscale, etc. |
| 56 | +REGION:: The region on the CSP where the cluster is running. `ch-gva-2`, `lpg1`, etc. Use the same naming as the CSP. |
| 57 | +STAGE:: The stage of the cluster. `test`, `prod`, etc |
| 58 | +COUNTER:: A unique counter for each cluster |
| 59 | + |
| 60 | +Examples: |
| 61 | + |
| 62 | +* First production control-plane cluster running on Cloudscale in the lpg1 zone: |
| 63 | +`c-servala-control-cloudscale-lpg1-prod1` |
| 64 | + |
| 65 | +* Second test service cluster running on Exoscale in the ch-gva-2 region: |
| 66 | +`c-servala-service-exoscale-ch-gva-2-test2` |
| 67 | + |
| 68 | +=== URLs |
| 69 | + |
| 70 | +We have a dedicated domain for servala clusters: servala.com and will use that domain for all clusters |
| 71 | + |
| 72 | +The control-plane clusters API should be reachable under the following URL: `api.[csp]-[region]-[stage][counter].control.servala.com` |
| 73 | + |
| 74 | +The apps domain for the services should be: `*.apps.[csp]-[region]-[stage][counter].servala.com` |
| 75 | + |
| 76 | +Examples: |
| 77 | + |
| 78 | +* First production control-plane cluster running on Cloudscale in the lpg1 region: |
| 79 | +`api.cloudscale-lpg1-prod1.control.servala.com` |
| 80 | +* Second test service cluster running on Exoscale in the ch-gva-2 region: |
| 81 | +`api.exoscale-ch-gva-2-test2.control.servala.com` |
0 commit comments