Rendered Template Paths Enterprise
Template authors can configure the eventual locatation of the rendered template in the user's GitOps repository.
This allows for more control over where different resources in the template are rendered.
Configuring Paths
The path for rendered resources is configured via the
spec.resourcetemplates[].path field.
- The path is relative to the repository root
- The path can be templated using params
Expand to see example
spec:
  resourcetemplates:
    - path: clusters/${CLUSTER_NAME}/definition/cluster.yaml
      content:
        - apiVersion: cluster.x-k8s.io/v1alpha4
          kind: Cluster
          metadata:
            name: ${CLUSTER_NAME}
          ...
        - apiVersion: infrastructure.cluster.x-k8s.io/v1alpha4
          kind: AWSCluster
          metadata:
            name: ${CLUSTER_NAME}
          ...
    - path: clusters/${CLUSTER_NAME}/workloads/helmreleases.yaml
      content:
        - apiVersion: helm.toolkit.fluxcd.io/v2beta1
          kind: HelmRelease
          metadata:
            name: ${CLUSTER_NAME}-nginx
          ...
        - apiVersion: helm.toolkit.fluxcd.io/v2beta1
          kind: HelmRelease
          metadata:
            name: ${CLUSTER_NAME}-cert-manager
          ...
Configuring paths for charts
The spec.charts.helmRepositoryTemplate.path and spec.charts.items[].template.path fields can be used to specify the paths of these resources:
Example
spec:
  charts:
    helmRepositoryTemplate:
      path: clusters/${CLUSTER_NAME}/workloads/helm-repo.yaml
    items:
      - chart: cert-manager
        version: 0.0.8
        template:
          path: clusters/${CLUSTER_NAME}/workloads/cert-manager.yaml
Default Paths
If the spec.resourcetemplates[].path is omitted, a default path for the
rendered template is calculated.
In this case some of the submitted params are used. Users must provide one of the following parameters:
- CLUSTER_NAME
- RESOURCE_NAME
To ensure users supply these values, set the parameters to required in the the
template definition:
spec:
  params:
    - name: RESOURCE_NAME
      required: true
    # or
    - name: CLUSTER_NAME
      required: true
The kustomization feature and the add-common-bases annotation feature always use a calculated default path.
If you are using these features one of CLUSTER_NAME or RESOURCE_NAME
must be provided, even if you specify a path for all the other resources in the template.
The default path for a template has a few components:
- From the params: CLUSTER_NAMEorRESOURCE_NAME, required.
- From the params: NAMESPACE, default:default
- From values.yamlfor the Weave GitOps Enterprisemccpchart:values.config.capi.repositoryPath, default:clusters/management/clusters
These are composed to create the path:
${repositoryPath}/${NAMESPACE}/${CLUSTER_OR_RESOURCE_NAME}.yaml
Using the default values and supplying CLUSTER_NAME as my-cluster will result in the path:
clusters/management/clusters/default/my-cluster.yaml