Skip to content

Commit b4e9f8d

Browse files
authored
Merge pull request #140 from vshn/servala_naming_scheme
Add ADR for servala clusters and url naming scheme
2 parents b7ad957 + 1cd9dec commit b4e9f8d

File tree

3 files changed

+84
-2
lines changed

3 files changed

+84
-2
lines changed
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
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`

docs/modules/ROOT/partials/nav-adrs.adoc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,5 @@
2727
** xref:adr/0027-keycloak-deployment-with-helm-chart.adoc[]
2828
** xref:adr/0028-sli-prober-for-object-storage.adoc[]
2929
** xref:adr/0029-converged-service-provisioning-implementation.adoc[]
30-
** xref:adr/0030-function-revisions.adoc[]
30+
** xref:adr/0030-function-revisions.adoc[]
31+
** xref:adr/0031-naming-scheme-for-servala-cluster-names-and-urls.adoc[]

templates/adr/cookiecutter.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"adr_number": "0031",
2+
"adr_number": "0032",
33
"full_name": "VSHNeer Name",
44
"adr_title": "Title",
55
"adr_reviewers": "",

0 commit comments

Comments
 (0)