Skip to main content
Version: Deploy 24.1

Preprocessing and postprocessing Stitch transformation

When user wants to generate additional documents based on the content of the deployment plugin uses preprocessing or postprocessing stitch transformation. Preprocessing should be used if generated documents should go through regular stitch transformations and postprocessing should be used when no additional transformation is expected.

Plugins that support this are:

  • xld-kubernetes-plugin
  • xld-openshift-plugin

###How to use For user to trigger the preprocessing transformation one needs to add

    condition:
preProcessing: true

or, for postprocessing transformation

    condition:
postProcessing: true

to the list of conditions in stitch rules. Input and output to processors for this transformations should always be an array. A helpful processor which can be used is AddYamlObject which will append yaml object to input (see stitch processors).

###Example A use case is when kubernetes deployment doesn't have Ingress resource, and we want users to be able to generate it. Or when user wants to add PDB (Pod Disruption Budget), secrets, config maps, etc. based on the content of YAML that Stitch analyzes. A simple configuration to add Ingress and PDB resources could loo like this:

kind: Rules
metadata:
namespace: k8s-add-labels
spec:
- name: "k8s.AddResourcesInPreprocessing"
condition:
deployedType: k8s.Resources
preProcessing: true
processor:
- type: freemarker
description: "Initialize empty array for pre processing"
merge:
type: none
phase: PRE_FLIGHT
weight: 0
parameters:
template: []
- type: addYamlObject
description: "Using add yaml object processor to add Ingress resource"
merge:
type: none
parameters:
yaml: |
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: minimal-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /testpath
pathType: Prefix
backend:
service:
name: test
port:
number: 80
- name: "k8s.AddResourcesInPostprocessing"
condition:
deployedType: k8s.Resources
postProcessing: true
processor:
- type: freemarker
description: "Initialize empty array for post processing"
merge:
type: none
phase: PRE_FLIGHT
weight: 0
parameters:
template: []
- type: addYamlObject
description: "Using add yaml object processor to add PDB resource"
merge:
type: none
parameters:
yaml: |
apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
name: zk-pdb
spec:
minAvailable: 2
selector:
matchLabels:
app: petclinic