7 Commits

Author SHA1 Message Date
Andrey Smirnov
2f92d92c57
feat: implement simple UI for the Image Service
Fixes #18

The intention is to provide educational frontend so that people can get
comfortable using the Image Service by building the appropriate links.

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2023-09-14 18:26:08 +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
cf250cd103
chore: rename 'configuration' to 'flavor'
No changes, just tons of renames.

Fixes #11

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2023-09-07 13:47:34 +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
a4aa38c9ec
feat: implement PXE frontend
Also, improve error reporting and add more tests for invalid requests.

Fixes #7

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2023-09-01 23:05:00 +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