Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multi architecture support for catalog resources #661

Closed
vdemeester opened this issue Mar 4, 2021 · 7 comments
Closed

Multi architecture support for catalog resources #661

vdemeester opened this issue Mar 4, 2021 · 7 comments
Labels
kind/feature Categorizes issue or PR as related to a new feature. lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed.

Comments

@vdemeester
Copy link
Member

A bit similar to tektoncd/pipeline#856, this issue is to track support for multi-architecture task in the catalog. Pipeline ships and is capable on running on multiple architecture today (not yet officially supported but still), thus the catalog should be able to mark task as multi-architecture compatible or not. This issue is to track ideas and thoughts on the subject.

This should cover:

  • How to communicate a task can run on multiple architectures (through labels, …)
  • How tools can use this (thinking of the hub, …)
  • Guidelines and recommendations towards supporting multiple architectures

This will probably need a TEP or updates on the current catalog TEP, but we can discuss it here first.

/kind feature
/cc @tektoncd/catalog-collaborators @tektoncd/catalog-maintainers @tektoncd/hub-collaborators @tektoncd/hub-maintainers

@tekton-robot tekton-robot added the kind/feature Categorizes issue or PR as related to a new feature. label Mar 4, 2021
@barthy1
Copy link
Member

barthy1 commented May 18, 2021

How to communicate a task can run on multiple architectures (through labels, …)

Would it make sense to use annotations, similar how it is done now for tags (tekton.dev/tags)?
Something like tekton.dev/architectures: linux/amd64, linux/s390x, windows/amd64. If there is no annotation, then default value is linux/amd64

How tools can use this (thinking of the hub, …)

tkn hub can filter tasks in search and installation based on architecture (extra --platform parameter?). And shown supported architectures as extra info column.
Hub can have UI extension to filter tasks in the UI based on architecture.

Guidelines and recommendations towards supporting multiple architectures

I guess it makes sense to ask for arch-specific CI/CD pipeline for supported tasks. For s390x and ppc64le cases current CI/CD setup can be extended to run also tests for tasks from catalog. The min requirement is to have images used in the task available for supported architecture.

@vdemeester What do you think? I can start working on TEP if the suggested ideas are reasonable..

@afrittoli
Copy link
Member

@afrittoli
Copy link
Member

A few thoughts:

  • When no command is specified, the controller will fetch the step image to extract the original entrypoint. This causes the image that matches the architecture of the node where the controller runs to be used, which might not match the architecture of the node where the taskrun is going to be executed. TEP-0041 could help for that as @imjasonh noted.
  • When a command is specified, the step definition could be valid one of the architectures / operating systems. We might need a way in Tekton and/or in the catalog to express alternate implementations of a step. This might be a really cool feature to have:

A random example (not advocating for this specific syntax):

  steps:
    - name: multi-arch-find
       image: alpine
       script: |
         #!/bin/sh
         find $(workspaces.source.path)
    - name: multi-arch-find. # multiple versions of a step with the same name could be used for specific arch/os
       image: PowerShell
       os: windows
       script: |
         Get-ChildItem -Path  $(workspaces.source.path) –Recurse

When using bundles we could use a manifest - like container images do - to specify different versions of a task depending on the arch / os. In any case this would suffer from a similar issue that container images have: the resolution to a specific step or task would happen in the controller, and the controller arch / os might not match that of the node where the task will be running.

@tekton-robot
Copy link

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale with a justification.
Stale issues rot after an additional 30d of inactivity and eventually close.
If this issue is safe to close now please do so with /close with a justification.
If this issue should be exempted, mark the issue as frozen with /lifecycle frozen with a justification.

/lifecycle stale

Send feedback to tektoncd/plumbing.

@tekton-robot tekton-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Oct 15, 2021
@tekton-robot
Copy link

Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten with a justification.
Rotten issues close after an additional 30d of inactivity.
If this issue is safe to close now please do so with /close with a justification.
If this issue should be exempted, mark the issue as frozen with /lifecycle frozen with a justification.

/lifecycle rotten

Send feedback to tektoncd/plumbing.

@tekton-robot tekton-robot added lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels Nov 14, 2021
@tekton-robot
Copy link

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen with a justification.
Mark the issue as fresh with /remove-lifecycle rotten with a justification.
If this issue should be exempted, mark the issue as frozen with /lifecycle frozen with a justification.

/close

Send feedback to tektoncd/plumbing.

@tekton-robot
Copy link

@tekton-robot: Closing this issue.

In response to this:

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen with a justification.
Mark the issue as fresh with /remove-lifecycle rotten with a justification.
If this issue should be exempted, mark the issue as frozen with /lifecycle frozen with a justification.

/close

Send feedback to tektoncd/plumbing.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/feature Categorizes issue or PR as related to a new feature. lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed.
Projects
None yet
Development

No branches or pull requests

4 participants