Templates system#
By default, 2A delivers a set of default ProviderTemplate
, ClusterTemplate
and SystemTemplate
objects:
ProviderTemplate
The template containing the configuration of the provider, ex. k0smotron. Cluster-scoped.ClusterTemplate
The template containing the configuration of the cluster objects. Namespace-scoped.ServiceTemplate
The template containing the configuration of the service to be installed on the managed cluster. Namespace-scoped.
All Templates are immutable. You can also build your own templates and use them for deployment along with the Templates shipped with 2A.
Template Life Cycle Management#
Cluster and Service Templates can be delivered to target namespaces using the TemplateManagement
,
ClusterTemplateChain
and ServiceTemplateChain
objects. TemplateManagement
object contains the list of
access rules to apply. Each access rule contains the namespaces' definition to deliver templates into and
the template chains. Each ClusterTemplateChain
and ServiceTemplateChain
contains the supported templates
and the upgrade sequences for them.
The example of the Cluster Template Management:
- Create
ClusterTemplateChain
object in the system namespace (defaults tohmc-system
). Properly configure the list of.spec.supportedTemplates[].availableUpgrades
for the specifiedClusterTemplate
if the upgrade is allowed. For example:
apiVersion: hmc.mirantis.com/v1alpha1
kind: ClusterTemplateChain
metadata:
name: aws
namespace: hmc-system
spec:
supportedTemplates:
- name: aws-standalone-cp-0-0-1
availableUpgrades:
- name: aws-standalone-cp-0-0-2
- name: aws-standalone-cp-0-0-2
- Edit
TemplateManagement
object and configure the.spec.accessRules
. For example, to apply all templates and upgrade sequences defined in theaws
ClusterTemplateChain
to thedefault
namespace, the followingaccessRule
should be added:
spec:
accessRules:
- targetNamespaces:
list:
- default
clusterTemplateChains:
- aws
The HMC controllers will deliver all the ClusterTemplate
objects across the target namespaces.
As a result, the new objects should be created:
ClusterTemplateChain
default/aws
ClusterTemplate
default/aws-standalone-cp-0-0-1
ClusterTemplate
default/aws-standalone-cp-0-0-2
(available for the upgrade fromaws-standalone-cp-0-0-1
)
Note
- The target
ClusterTemplate
defined as the available for the upgrade should reference the same helm chart name as the sourceClusterTemplate
. Otherwise, after the upgrade is triggered, the cluster will be removed and then, recreated from scratch even if the objects in the helm chart are the same. - The target template should not affect immutable fields or any other incompatible internal objects upgrades, otherwise the upgrade will fail.