sigs.k8s.io/cluster-api@v1.7.1/docs/book/src/developer/providers/implementers-guide/naming.md (about) 1 # Repository Naming 2 3 The naming convention for new Cluster API [_provider_ repositories][repo-naming] 4 is generally of the form `cluster-api-provider-${env}`, where `${env}` is a, 5 possibly short, name for the _environment_ in question. For example 6 `cluster-api-provider-gcp` is an implementation for the Google Cloud Platform, 7 and `cluster-api-provider-aws` is one for Amazon Web Services. Note that an 8 environment may refer to a cloud, bare metal, virtual machines, or any other 9 infrastructure hosting Kubernetes. Finally, a single environment may include 10 more than one [_variant_][variant-naming]. So for example, 11 `cluster-api-provider-aws` may include both an implementation based on EC2 as 12 well as one based on their hosted EKS solution. 13 14 ## A note on Acronyms 15 16 Because these names end up being so long, developers of Cluster API frequently refer to providers by acronyms. 17 Cluster API itself becomes [CAPI], pronounced "Cappy." 18 cluster-api-provider-aws is [CAPA], pronounced "KappA." 19 cluster-api-provider-gcp is [CAPG], pronounced "Cap Gee," [and so on][letterc]. 20 21 [CAPI]: ../../../reference/glossary.md#capi 22 [CAPA]: ../../../reference/glossary.md#capa 23 [CAPG]: ../../../reference/glossary.md#capg 24 [letterc]: ../../../reference/glossary.md#c 25 26 ## Resource Naming 27 28 For the purposes of this guide we will create a provider for a 29 service named **mailgun**. Therefore the name of the repository will be 30 `cluster-api-provider-mailgun`. 31 32 Every Kubernetes resource has a *Group*, *Version* and *Kind* that uniquely 33 identifies it. 34 35 * The resource *Group* is similar to package in a language. 36 It disambiguates different APIs that may happen to have identically named *Kind*s. 37 Groups often contain a domain name, such as k8s.io. 38 The domain for Cluster API resources is `cluster.x-k8s.io`, and infrastructure providers generally use `infrastructure.cluster.x-k8s.io`. 39 * The resource *Version* defines the stability of the API and its backward compatibility guarantees. 40 Examples include v1alpha1, v1beta1, v1, etc. and are governed by the Kubernetes API Deprecation Policy [^1]. 41 Your provider should expect to abide by the same policies. 42 * The resource *Kind* is the name of the objects we'll be creating and modifying. 43 In this case it's `MailgunMachine` and `MailgunCluster`. 44 45 For example, our cluster object will be: 46 ```yaml 47 apiVersion: infrastructure.cluster.x-k8s.io/v1alpha1 48 kind: MailgunCluster 49 ``` 50 51 [repo-naming]: https://github.com/kubernetes-sigs/cluster-api/issues/383 52 [variant-naming]: https://github.com/kubernetes-sigs/cluster-api/issues/480 53 54 [^1]: https://kubernetes.io/docs/reference/using-api/deprecation-policy/