44 Commits

Author SHA1 Message Date
Edward Sammut Alessi
4abeff4f1a
feat: add /talosctl/:version endpoint to list downloadable talosctls
Add a /talosctl/:version endpoint which lists all downloadable talosctl binaries fro a given version.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-28 09:12:45 +02:00
Mateusz Urbanek
f1cceee8cd
feat: implement authentication support
This feature is Enterprise only (requires BUSL).

Any access to the schematic requires the user to be authenticated
before access.

Moreover, any schematic stores the owner in the schematic, so each
schematic becomes private (owned by the user which created it).

Authentication is configured using a set of usernames and keys
associates with each user (API key).

Co-authored-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
Signed-off-by: Mateusz Urbanek <mateusz.urbanek@siderolabs.com>
2026-04-20 15:54:31 +02:00
Mateusz Urbanek
1b834b7d2a
feat: add SHA-256 and SHA-512 checksum frontend
Add enterprise-only checksum endpoint: appending .sha256 or .sha512
to any /image/ path returns a single-line checksum file instead of
the asset. Algorithm is selected from the suffix; the Checksummer
interface takes the suffix so no circular import is needed.

Wizard UI shows (sha256) and (sha512) links per download button;
non-enterprise builds show a localized (checksums) tooltip.
Integration tests cover both algorithms (GET, HEAD, validate,
reproducibility, error cases).

Signed-off-by: Mateusz Urbanek <mateusz.urbanek@siderolabs.com>
2026-04-17 14:11:55 +02:00
Andrey Smirnov
bb27d392ab
feat: update Talos to v1.13.0-rc.0
Rename consistently to 'Image Factory Enterprise'.

Pass Talos name down to profile.

Pass the image factory name (and url) in the schematic's extension
Author field.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2026-04-16 18:20:50 +04:00
Mateusz Urbanek
8372fe8854
feat: add SPDX frontend
Fixes #284

Signed-off-by: Mateusz Urbanek <mateusz.urbanek@siderolabs.com>
2026-03-18 12:02:33 +01:00
Andrey Smirnov
470cb2f0e8
chore: switch to large runners
Rekres to use large runners instead of generic ones, as Image Factory
tests require lots of resources.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2026-02-18 17:08:59 +04:00
Noel Georgi
80d1ba3e0e
fix: pass nameoptions to verify bundle too
This was missed in: #381

Signed-off-by: Noel Georgi <git@frezbo.dev>
2026-02-04 11:57:48 +05:30
Andrey Smirnov
ec1c0a790c
fix: pass insecure to the cosign new bundle verifier
The new verifier requires explicit insecure option for insecure
registries.

This affects configurations when the cache registry doesn't use
localhost endpoint, but some hostname.

Also rekres and bump Talos.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2026-02-03 21:21:17 +04:00
Noel Georgi
3c18e053c1
feat: add Sidero google service account email also to verfiers
Add Sidero Google Service Account Email also to the signer list.

Signed-off-by: Noel Georgi <git@frezbo.dev>
2026-01-28 06:43:04 +05:30
Andrey Smirnov
99cbfd73d4
fix: don't enforce bundle verified
This is not set by cosign when veryfing using raw certificate
verification.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2026-01-08 14:45:50 +04:00
Noel Georgi
8723b0274e
fix: drop sbc board support
Drop all SBC board support.

Fixes: https://github.com/siderolabs/talos/issues/12492

Signed-off-by: Noel Georgi <git@frezbo.dev>
2025-12-26 21:52:51 +05:30
Andrey Smirnov
e440ce7a1c
fix: support new cosign bundle format
Refactor the image signature verification code, add more tests.

Support both old and new bundle format from cosign.

Update cosign to address
https://github.com/sigstore/timestamp-authority/security/advisories/GHSA-4qg8-fj49-pxjh.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-12-10 22:30:46 +04:00
Noel Georgi
fb22bcea42
feat: support selecting bootloader
Support selecting bootloader.

Fixes: #224

Signed-off-by: Noel Georgi <git@frezbo.dev>
2025-11-15 23:18:52 +05:30
Noel Georgi
2c5037cf1d
chore: bump deps
Bump dependencies.

Signed-off-by: Noel Georgi <git@frezbo.dev>
2025-10-21 15:43:21 +05:30
Aleksandr Gamzin
15596662c7
feat: replace hardcoded artifact image constants with CLI-configurable values
Adds CLI flags that replace hardcoded image constants

Signed-off-by: Aleksandr Gamzin <gamzin@altlinux.org>
Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-10-17 20:27:07 +04:00
Andrey Smirnov
743fe7f740
feat: support disable cosign signature verification
Fixes #302

Note: this is not recommended, and there is a better way always.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-09-11 18:53:03 +04:00
Andrey Smirnov
418eebb19f
fix: don't filter out rc versions
Without this fix, Talos v1.11.0-rc.0 is not visible.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-08-19 12:54:33 +04:00
Mateusz Urbanek
e1e80fdf71
feat: serve talosctl from image factory
Add support for serving talosctl-all image which will contain all
talosctls built for all platform/architecture combinations, so we can
offer a download URL for them in Image Factory.

Fixes #260

Signed-off-by: Mateusz Urbanek <mateusz.urbanek@siderolabs.com>
2025-07-09 17:22:08 +02:00
Andrey Smirnov
d9ebc5a257
fix: refresh remote pullers and pushers on interval
This is not a fix, but a bit of a workaround for issues in the upstream
library.

Use a refresh on interval strategy to ensure that both remote pushers
and pullers are refreshed.

Fixes #231

Fixes #235

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-06-05 10:10:08 +04:00
Andrey Smirnov
68d6660cbe
fix: pull in overrides from the overlay profile
Previously it was completely ignored in the Image Factory.

See https://github.com/siderolabs/talos/issues/11093

Still a question for me what _can_ be overridden, and what is the best
way to merge profiles.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2025-05-28 19:46:50 +04:00
Noel Georgi
ba8640be86
chore: bump deps
Bump deps.

Signed-off-by: Noel Georgi <git@frezbo.dev>
2025-04-18 06:17:34 +05:30
Noel Georgi
1af002d206
feat: support platform specific installers
Support platform specific installers.

Fixes: https://github.com/siderolabs/talos/issues/10486

Signed-off-by: Noel Georgi <git@frezbo.dev>
2025-03-20 22:34:02 +05:30
Noel Georgi
e1d19dfbff
chore: add more tests for talos 1.10
Add more tests for Talos 1.10.
Reduce layers of image-factory container image.
Also drop integration test for non-pull-requests.

Signed-off-by: Noel Georgi <git@frezbo.dev>
2025-03-07 12:46:11 +05:30
Andrey Smirnov
b985abcc18
fix: cache generated system extension image correctly
The system extensions depends on a quirk, but the cache was based only
on schematic ID. Adjust cache ID.

There was another bug which masked this bug - the schematic extension
cache wasn't used, so the bug could have only been triggered on strictly
concurrent schematic extension build for different versions of Talos.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2024-09-02 18:31:15 +04:00
Andrey Smirnov
f73a61e285
fix: update misreported error
It should report the actual error from the task, not the `err`.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2024-05-17 14:00:01 +04:00
Mattias Cockburn
8ccd284b88
feat: allow key-based image verification as option
Add pubic key verification option.

Signed-off-by: Mattias Cockburn <mattias.cockburn@posteo.net>
Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2024-05-15 14:57:10 +04:00
Andrey Smirnov
2fe682511c
fix: generation of overlay installer images
Pull in fixes from Talos, rekres, add a test for overlay installer
generation.

Due to the nature of the fixes, the first fully working installer should
come with the next release of Talos Linux.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2024-04-17 15:37:21 +04:00
Andrey Smirnov
5d779bb38a
chore: bump dependencies
Update Go modules, adresses HTTP/2 CVE.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2024-04-04 19:11:02 +04:00
Noel Georgi
93eb7de1f6
feat: support overlay
Support handling overlays.

Fixes: #8355

Signed-off-by: Noel Georgi <git@frezbo.dev>
2024-04-02 18:47:48 +05:30
Andrey Smirnov
4ccf0e5d7e
fix: ignore missing DTB and other SBC artifacts
Starting with 1.7.0-alpha.1, these are not present in the imager.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2024-03-14 21:47:40 +04:00
Andrey Smirnov
81f2cb437f
chore: bump dependencies, rekres
Update Go modules, rekres, update to Go 1.22.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2024-02-27 16:16:58 +04:00
Artem Chernyshev
8e62c9dbd3
feat: fetch extensions descriptions from the extensions image
Get `descriptions.yaml` from the same image as we use for getting
`image-digests`.
Read it and add this data to each extension info.
Return that in the `version/:version/extensions/official` API response.

Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
2023-12-26 16:59:14 +03:00
Andrey Smirnov
cde9b3954c
fix: update Talos version listing
Now Image Factory filters out pre-release versions for all releases but
the last one.

In the UI, now pre-release versions are shown.

Return proper 404 not found when someone requests something for
an unsupported version.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2023-12-21 15:02:36 +04:00
Artem Chernyshev
548128ca9a
chore: define public const for the schematic ID extension name
Make it const to simplify discovery of the Talos machine schematic IDs by
third party services.

Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
2023-12-12 19:03:07 +03:00
Andrey Smirnov
3d99e0a696
fix: generation of SBC images
Fixes #43

Depends on https://github.com/siderolabs/talos/pull/7907

Installer image size got bigger, add assertions for additional arm64
files.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2023-10-30 14:40:08 +04:00
Andrey Smirnov
354baca8a0
feat: implement boot asset cache
Fixes #4

This caches the result of the boot asset build (a call to Talos
`imager`) so that we don't rebuild the asset twice.

OCI Registry is used as a cache. An internal registry can be used for
caching, we don't need to expose it to the world.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2023-10-30 14:05:23 +04:00
Andrey Smirnov
c43564fc00
feat: use OCI layout when passing images to the imager
Fixes #39

This fixes for all image pulls to be part of the Image Factory itself,
Talos `imager` now never pulls on its own.

Installer image (base) is passed as an OCI layout to the `imager`, and
same for extension images (for consistency).

Virtual `schematic` extension is passed as `.tar`, as it doesn't make a
difference actually.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2023-10-19 13:02:08 +04:00
Andrey Smirnov
10d78fa04e
fix: allow pulling installer image from insecure registry
This relies on Talos change to pull the image.

Probably this should be re-implemented to make Image Factory pull the
installer image, and then sotre as an OCI layout cached.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2023-09-29 15:24:14 +04:00
Tim Jones
a0b6a8a67d
feat: add support for insecure image registry
Adds support for using an insecure image registry without having to
specify it as IP:PORT.

Signed-off-by: Tim Jones <tim.jones@siderolabs.com>
2023-09-29 10:48:04 +02:00
Andrew Rynhard
91bbcd2c82
chore: rename with new nomenclature
Themes the nomenclature to align with Talos Linux

Signed-off-by: Andrew Rynhard <andrew@rynhard.io>
Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2023-09-18 22:30:22 +04:00
Andrey Smirnov
cf73db9b91
feat: implement support for system extensions
Fixes #13

This builds on top of extensions catalog (see
https://github.com/siderolabs/extensions/pull/225), and existing support
for specifying extension in the flavor.

Image Service resolve the list of extensions requested for a specific
version of Talos into a list of container images, pulls them, and
attaches them to the image request.

Image Service also provides endpoints to get information about available
Talos versions, supported extensions for each version, etc.

I also refactored a bit flow around fetching & verifying image to re-use
it in other flows, added support for authentication to the registry.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2023-09-13 21:45:50 +04:00
Andrey Smirnov
b730f093a0
feat: add a virtual extension with flavor ID to generated assets
This appends a "virtual" (built on the fly) extension which contains
flavor ID to all boot assets of Talos.

This allows to easily identify which flavor of Talos which asset was
built with.

E.g.:

```
$ talosctl -n 172.20.0.2 get extensions -i
NODE   NAMESPACE   TYPE              ID   VERSION   NAME     VERSION
       runtime     ExtensionStatus   0    1         flavor   376567988ad370138ad8b2698212367b8edcb69b5fd68c80be1f2ec7d603b4ba
```

```yaml
node:
metadata:
    namespace: runtime
    type: ExtensionStatuses.runtime.talos.dev
    id: 0
    version: 1
    owner: runtime.ExtensionStatusController
    phase: running
    created: 2023-09-07T14:06:03Z
    updated: 2023-09-07T14:06:03Z
spec:
    image: 0.sqsh
    metadata:
        name: flavor
        version: 376567988ad370138ad8b2698212367b8edcb69b5fd68c80be1f2ec7d603b4ba
        author: Image Service
        description: Virtual extension which specifies the flavor of the image built with Image Service.
        compatibility:
            talos:
                version: '>= 1.0.0'
```

And (as an empty file):

```
$ talosctl -n 172.20.0.2 ls /usr/local/share/flavor/
NODE         NAME
172.20.0.2   .
172.20.0.2   376567988ad370138ad8b2698212367b8edcb69b5fd68c80be1f2ec7d603b4ba
```

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2023-09-07 18:12:44 +04:00
Andrey Smirnov
47c6aeabc4
feat: implement registry frontend
This allows to pull an installer image for a given version of Talos and
configuration.

The actual image is served from the registry, the image service is only
a frontend that redirects to the registry.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2023-09-07 00:00:38 +04:00
Andrey Smirnov
803ffa15a5
feat: initial version
Initial version of the image service.

Implements a basic configuration service, and HTTP frontend for assets.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2023-09-01 00:21:19 +04:00