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?

1

There are 1 answers

0
jonashackt On BEST ANSWER

A simple combination of curl which downloads the file and pipes it into sed, which substitutes the stable to alpha works like a charm - especially since this flag is the only line including stable (except of the commentary line directly above). sed is a common tool to set dynamic values with Kubernetes yaml file.

You may test-drive it adding a grep at the end to see the lines changed with:

curl https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml | sed "s#stable#alpha#g" | grep enable-api-fields

Now combining the command with a final kubectl apply -f - (instead of grep) will do what was asked for:

curl https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml | sed "s#stable#alpha#g" | kubectl apply -f -

Now the officially released Tekton pipelines yaml is configured to use alpha features on-the-fly - without the need to store and maintain the ConfigMap in a custom git repository for example.