Skip to content

Latest commit

 

History

History
75 lines (46 loc) · 4.37 KB

0037-remove-gcs-fetcher.md

File metadata and controls

75 lines (46 loc) · 4.37 KB
title authors creation-date last-updated status
Remove `gcs-fetcher` image
@ImJasonH
2021-01-27
2021-01-27
implementing

TEP-0037: Remove gcs-fetcher image

Summary

Every Tekton Pipelines release builds and bundles an image, gcs-fetcher, which is vendored from https://github.com/GoogleCloudPlatform/cloud-builders/blob/master/gcs-fetcher. This image exists to support the BuildGCS Storage Resource. That is, the image is involved when the user configures a storage-type PipelineResource, with a type of build-gcs.

Tekton Pipelines doesn't collect centralized usage metrics, but I personally believe this functionality is not used. If it is used, the only functionality it provides beyond the gcs-type PipelineResource is in supporting Source Manifests, which I believe nobody does today.

NB: This is different than the gcs-type PipelineResource, which runs an image using gsutil. This TEP does not propose dropping support for the gcs PipelineResource type.

I would like to remove support for the build-gcs PipelineResource.

Motivation

Building and releasing an image in Tekton's core upstream repo induces release and maintenance burden on all downstream teams. So far this burden has been relatively light, but nobody knows when you might find a critical CVE or crashing bug in unused legacy behavior.

Support for the build-gcs PipelineResource was added to ease the transition of Knative Build users migrating to Tekton Pipelines. I believe Source Manifest usage was low even back when Knative Build was a thing, let alone nearly eighteen months later.

Given the assumption of low utility and non-zero cost, and the potential of higher future cost, we should bias toward action in removing support.

Goals

Deprecate and remove support for the build-crd-type PipelineResource. Remove the gcs-fetcher image from the main Tekton Pipelines release.

Non-Goals

This proposal does not intend to remove support for the gcs-type PipelineResource.

Requirements

  • Ample warning for users and downstream distributors of Tekton Pipelines that support is going away, and that the release contents are changing.

Proposal

When this proposal is marked implementing, attempt to notify Tekton users and operators to let them know the deprecation is coming, and ask for feedback. This includes posting to tekton-users@, the Tekton Slack, weekly WG meetings, and, if need be, me personally shouting it from my balcony.

Assuming no negative response from that communication, update the docs to note that support will be deprecated in the next release (currently, v1.21).

Assuming no negative response, after the v1.21 release branch is cut, remove support for build-crd and remove gcs-fetcher from the Tekton Pipelines codebase.

Risks and Mitigations

It's possible that someone still depends on this behavior, and that our various modes of communication will not reach them. A user or operator who depends on build-gcs may be surprised (in the bad way) when we remove support.

As a mitigation, we can help those users/operators migrate to a more well-supported mechanism, such as authoring and using a Task that fetches source using gcs-fetcher (a public image supported and regularly released by the Google Cloud Build team exists at gcs.io/cloud-builders/gcs-fetcher).

Test Plan

Tests that depend on build-gcs functionality will also be removed.

Alternatives

Continue supporting build-gcs indefinitely, or until such a time as PipelineResources as a whole are refactored for extensibility, and potentially removed from Tekton's core source tree entirely. There is no concrete plan for this at this time.