1

我们想使用Tekton 实验性功能,例如Pipelines In Pipelines 功能。我们已经按照自述文件中的描述安装了该功能,kubectl apply但最终出现如下错误:

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

这个问题中,我们需要在我们的部署中启用 Tekton alpha 功能。在Customizing the Pipelines Controller behavior的 Tekton 文档中,描述了所有功能标志 - 包括Alpha 功能。文档指出,如果我们想使用这些功能,我们应该将字段从enable-api-fields:更改为。stablealpha

安装 Tekton Pipelines的推荐方法是使用kubectl apply远程服务的 yaml 文件:

kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml

在里面我们看到ConfigMap feature-flags(缩短的):

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"
  ...

有没有办法以某种方式即时更改该enable-api-fields字段,alpha而无需存储(并从长远来看维护)官方的 Tekton 管道 yaml 文件?

4

1 回答 1

1

一个简单的组合curl将文件下载并通过管道传输到sed中,替代stabletoalpha就像一个魅力 - 特别是因为这个标志是唯一包含的行stable(除了上面的评论行)。是使用 Kubernetes yaml 文件设置动态值sed的常用工具。

您可以试驾它grep,在最后添加一个以查看更改为:

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

现在将命令与 final kubectl apply -f -(而不是grep)结合起来将完成所要求的操作:

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

现在,正式发布的 Tekton 管道 yaml 配置为即时使用 alpha 功能 - 例如,无需ConfigMap在自定义 git 存储库中存储和维护。

于 2021-12-13T14:26:52.967 回答