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
The Kubernetes Template Project is a template for starting new projects in the GitHub organizations owned by Kubernetes. All Kubernetes projects, at minimum, must have the following files:
4
-
5
-
- a `README.md` outlining the project goals, sponsoring sig, and community contact information
6
-
- an `OWNERS` with the project leads listed as approvers ([docs on `OWNERS` files][owners])
7
-
- a `CONTRIBUTING.md` outlining how to contribute to the project
8
-
- an unmodified copy of `code-of-conduct.md` from this repo, which outlines community behavior and the consequences of breaking the code
9
-
- a `LICENSE` which must be Apache 2.0 for code projects, or [Creative Commons 4.0] for documentation repositories, without any custom content
10
-
- a `SECURITY_CONTACTS` with the contact points for the Product Security Team
11
-
to reach out to for triaging and handling of incoming issues. They must agree to abide by the
ClusterSet represents a specific pattern implemented by various organizations. A ClusterSet is typically:
4
+
5
+
- A group of clusters governed by a single authority.
6
+
- There is usually a high degree of trust within the set of clusters.
7
+
-[Namespace Sameness](../concepts/namespace-sameness.md) applies to clusters in the set:
8
+
- Permissions and characteristics are consistent across clusters for a given namespace.
9
+
- Namespaces don't have to exist in every cluster, but behave the same across those in which they do.
10
+
11
+
!!!note
12
+
The early definition of the ClusterSet was described in [KEP-2149](https://github.com/kubernetes/enhancements/tree/master/keps/sig-multicluster/2149-clusterid). It is now part of the [About API](https://sigs.k8s.io/about-api).
13
+
14
+
A cluster's ClusterSet membership is stored in the about.k8s.io/ClusterProperty `clusterset.k8s.io`.
15
+
16
+
## Cluster Metadata
17
+
The ClusterSet is a Cluster-scoped ClusterProperty CRD (Customer Resource Definition), that stores a name and a value.
18
+
19
+
This property can be used to:
20
+
21
+
- uniquely identify clusters using a clusterID
22
+
23
+
```
24
+
apiVersion: about.k8s.io/v1
25
+
kind: ClusterProperty
26
+
metadata:
27
+
name: cluster.clusterset.k8s.io
28
+
spec:
29
+
value: cluster-1
30
+
```
31
+
32
+
- uniquely identify the membership of a cluster in a ClusterSet for the lifetime of the membership.
33
+
34
+
```
35
+
apiVersion: about.k8s.io/v1
36
+
kind: ClusterProperty
37
+
metadata:
38
+
name: clusterset.k8s.io
39
+
spec:
40
+
value: mycoolclusterset
41
+
```
42
+
43
+
- Provide a reference point for multi-cluster tooling to build on within a cluster set, for example for DNS labels, for logging and tracing, etc.
44
+
45
+
- Provide extra metadata space to store other cluster properties that might otherwise be implemented as ad-hoc annotations on semantically adjacent objects.
A ServiceExport is a Customer Resource Definition used to specify which Kubernetes Services should be exported within a cluster.
5
+
6
+
A ServiceExport resource is created with the cluster and namespace that a given Service resides in, and is name-mapped to the service for export. In other words, the ServiceExport is referenced with the same name as the export.
7
+
8
+
If multiple clusters export a Service with the same namespaced name, they will be recognized as a single combined service.
9
+
10
+
## DNS
11
+
When a ServiceExport is created, this will cause a domain name for the multi-cluster service to become accessible from within the ClusterSet. The domain name will be `<service-export-name>.<service-export-namespace>.svc.clusterset.local`.
12
+
13
+
## EndPointSlice
14
+
When a ServiceExport is created, this will cause EndpointSlice objects for the underlying Service to be created in each cluster within the ClusterSet. One or more EndpointSlice resources will exist for each cluster that exported the Service, with each EndpointSlice containing only endpoints from its source cluster. These EndpointSlice objects are marked as managed by the ClusterSet service controller, so that the endpoint slice controller doesn’t delete them.
0 commit comments