$ oc create configmap --from-file=<templates-directory> smcp-templates -n openshift-operators
Templates allow a cluster administrator to create reusable configurations that users may extend with their own customizations. Templates may also inerhit from other templates. As an example, if there are two teams with different control planes, say an accounting team and a website team, with a development and production configuration, then there could be a template called development and one called production and individual templates for the accounting and development teams that extend these two configurations with their own customizations. Individual control planes in the teams can customize these for the actual deployment.
Templates follow the same configuration as a ServiceMeshControlPlane
so if you get a ServiceMeshControlPlane
working, you can then
include it as a template. To add custom templates, create a ConfigMap
called smcp-templates
in the openshift-operators
project.
This ConfigMap
will contain a collection of templates to use. The ConfigMap
must then be mounted in the operator at
/usr/local/share/istio-operator/templates/
.
To create the ConfigMap
, execute the following as a cluster administrator, substituting <templates-directory> for a directory containing a
collection of ServiceMeshControlPlane
files to use as templates. The name of the template will match the name of the file. Templates will
inherit from other templates until a template is reached which has an empty template field. Using a template name of default
will override the
default template for all control planes when no template is specified in a control plane.
For example, create a ServiceMeshControlPlane
and instead of using oc apply
to create it in the cluster, save it in a
directory called <templates-directory>
. Follow the instructions below to create and configure a ConfigMap
containing this new
template. Additional templates can be added to the ConfigMap
as desired.
$ oc create configmap --from-file=<templates-directory> smcp-templates -n openshift-operators
Next, find the Maistra operator ClusterServiceVersion
name.
$ oc get clusterserviceversion -n openshift-operators | grep 'Service Mesh' maistra.v1.0.0 Red Hat OpenShift Service Mesh 1.0.0 Succeeded
Edit the ClusterServiceVersion
to instruct the operator to use the smcp-templates
ConfigMap
.
$ oc edit clusterserviceversion -n openshift-operators maistra.v1.0.0
In the editor, add a volume mount and volume to the deployments as shown below.
deployments:
- name: istio-operator
spec:
template:
spec:
containers:
volumeMounts:
- name: discovery-cache
mountPath: /home/istio-operator/.kube/cache/discovery
- name: smcp-templates
mountPath: /usr/local/share/istio-operator/templates/
volumes:
- name: discovery-cache
emptyDir:
medium: Memory
- name: smcp-templates
configMap:
name: smcp-templates
...
You can now use templates in your ServiceMeshControlPlane
by adding a
template
parameter to the ServiceMeshControlPlane
. In the example below,
we are including the default
template, but you can use any template from the
smcp-templates
ConfigMap
as well.
apiVersion: maistra.io/v1
kind: ServiceMeshControlPlane
metadata:
name: minimal-install
spec:
template: default