This controller fetches the given StackDefinition
custom resource as configuration and reconciles the given CRD, which should exist in cluster already. The controller will construct a reconciler in the initialization phase and register it to the api-server to receive events for the CRD given in spec.behavior.crd
. The reconciler is constructed with the configuration under spec.behavior.engine
.
Here is an example StackDefinition
object that uses kustomize
engine:
---
apiVersion: stacks.crossplane.io/v1alpha1
kind: StackDefinition
metadata:
name: template-stack-test
spec:
behavior:
source:
image: crossplane/stack-minimal-gcp:0.0.2
path: "kustomize"
crd:
kind: MinimalGCP
apiVersion: gcp.resourcepacks.crossplane.io/v1alpha1
engine:
type: kustomize
kustomize:
overlays:
- apiVersion: gcp.crossplane.io/v1alpha3
kind: Provider
name: gcp-provider
bindings:
- from: "spec.credentialsSecretRef"
to: "spec.credentialsSecretRef"
- from: "spec.projectID"
to: "spec.projectID"
- apiVersion: cache.gcp.crossplane.io/v1beta1
kind: CloudMemorystoreInstanceClass
name: cloudmemorystore
bindings:
- from: "spec.region"
to: "specTemplate.forProvider.region"
The reconciler will use kustomize
as engine and it will produce an overlay with the given objects above. What's happening there is that a Provider
object will be created as strategic patch overlay with two bindinds; from
is the field path for the actual CR instance and to
is the field path of the field on the Provider
object.
See test
folder to give it a spin.
Run make
to build the latest version.