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/