We'd like to use Tekton experimental features such as the Pipelines In Pipelines feature. We already installed the feature as described in the README via kubectl apply but end up in an error like this:
Pipeline default/buildpacks-test-pipeline can't be Run; it contains Tasks that don't exist: Couldn't retrieve Task "generic-gitlab-set-status": tasks.tekton.dev "generic-gitlab-set-status" not found
In this issue it is stated, that we need to enable Tekton alpha features in our deployment. In the Tekton docs at Customizing the Pipelines Controller behavior all feature flags are described - including the Alpha Features. The docs state we should change the enable-api-fields: field from stable to alpha if we want to use those features.
The recommended way of installing Tekton Pipelines is to use kubectl apply leveraging a remotely served yaml file:
kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml
Inside we see the ConfigMap feature-flags (shortened):
apiVersion: v1
kind: ConfigMap
metadata:
name: feature-flags
namespace: tekton-pipelines
labels:
app.kubernetes.io/instance: default
app.kubernetes.io/part-of: tekton-pipelines
data:
...
# Setting this flag will determine which gated features are enabled.
# Acceptable values are "stable" or "alpha".
enable-api-fields: "stable"
...
Is there a way to change the enable-api-fields field to alpha somehow on-the-fly without the need to store (and in the long run maintain) the official Tekton pipeline yaml file?
A simple combination of
curlwhich downloads the file and pipes it intosed, which substitutes thestabletoalphaworks like a charm - especially since this flag is the only line includingstable(except of the commentary line directly above).sedis a common tool to set dynamic values with Kubernetes yaml file.You may test-drive it adding a
grepat the end to see the lines changed with:Now combining the command with a final
kubectl apply -f -(instead ofgrep) will do what was asked for:Now the officially released Tekton pipelines yaml is configured to use alpha features on-the-fly - without the need to store and maintain the
ConfigMapin a custom git repository for example.