docs: Added more details on pulp

This commit is contained in:
Patrick Sy 2025-03-14 17:53:03 +01:00
parent b85952e518
commit 89568b6d54
Signed by: Patrick.Sy
GPG key ID: DDDC8EC51823195E

View file

@ -34,6 +34,9 @@
- Currently of out Scope - Currently of out Scope
- Auth: Cache provides data to anyone who can reach it - Auth: Cache provides data to anyone who can reach it
- Nice to have
- Repo Cache: Can store uploaded artifacts
### Architectural Solutions ### Architectural Solutions
#### File System-Based Caching #### File System-Based Caching
@ -98,15 +101,17 @@
- basically only maven support - basically only maven support
- does not suffice for our use case - does not suffice for our use case
- Community Edition has more features but is limited in sizing. Upgrade to Pro edition necessary in those limits are exceeded. - Community Edition has more features but is limited in sizing. Upgrade to Pro edition necessary if those limits are exceeded.
#### Artifactory #### Artifactory
- Open source / free version - Open source / free version
- Limited feature set - Limited feature set
- Separate distributions per repo type java / container / etc - Separate distributions per repo type java / container / etc
- Inconvenient and insufficient for our use case - Inconvenient and insufficient for our use case
- Full feature set requires paid license
License evaluation needed License evaluation needed
[EULA](https://jfrog.com/artifactory/eula/) [EULA](https://jfrog.com/artifactory/eula/)
@ -116,6 +121,8 @@ License evaluation needed
[GH](https://github.com/artipie/artipie) [GH](https://github.com/artipie/artipie)
[Wiki](https://github.com/artipie/artipie/wiki) [Wiki](https://github.com/artipie/artipie/wiki)
- Self-hosted and upstream artifact caching
- MIT License - MIT License
- might be abandoned / low dev activity / needs new maintainer - might be abandoned / low dev activity / needs new maintainer
@ -124,17 +131,32 @@ License evaluation needed
- Mostly headless - Mostly headless
- Brings a limited web interface - Brings a limited web interface
- Repo creation, artifact viewing - Repo creation, artifact viewing
- Buggy default config
- config changes require restart, which seems to be a bug?
- Easy to setup, once bugs and buggy config are mitigated/worked around
- File system and object storage supported
- No databases required
- Pro: Config in yaml file - Pro: Config in yaml file
- Due to its simplicity it might be a good candidate for a first upstream caching solution
#### Pulp #### Pulp
[Website](https://pulpproject.org/) [Website](https://pulpproject.org/)
[GH](https://github.com/pulp/pulpcore) [GH](https://github.com/pulp/pulpcore)
- Self-hosted and upstream artifact caching
- GPL 2.0 License - GPL 2.0 License
- Pull-Through Caches are only technical previews and might not work correctly - Pull-Through Caches are only technical previews and might not work correctly
- Pull-through cache does not fit into the concept of how artifacts are stored an tracked
- Intended workflow is to sync dedicated artifacts with some upstream repo, not the entire repo
- Setup and config are quite complex
- Build for high availability
- File system and object storage supported
- Requires SQL Db (Postgres) and possibly Redis
#### kube-image-keeper #### kube-image-keeper
@ -186,5 +208,17 @@ License evaluation needed
- Reduces build times significantly if dependencies have to be downloaded from outside networks - Reduces build times significantly if dependencies have to be downloaded from outside networks
- Avoid using fs cache, i.e. forgejo runner cache, long term or at all - Avoid using fs cache, i.e. forgejo runner cache, long term or at all
- Unless you can handle proper cache invalidation - Unless you can handle proper cache invalidation
- Promote immutable infra and reproducible builds without side effects - Promotes immutable infra and reproducible builds without side effects
- Use as additional layer if there is no local cache repo - Use as additional layer if there is no local cache repo
- Repo caches
- Can replace file system cache if network and repo are fast enough
- Optimal solution would be a Nexus/Artifactory-like unified solution
- Foss solutions like Artipie and Pulp have severe problems
- Requires us to add features/fixes/maintenance
- Due to scarce landscape of proper foss solutions we might have to opt for multiple dedicated solutions
- If we opt for a dedicated container cache, we should re-evaluate Harbor or Quay
- Try to use Artipie as a first, simple solution and use Forgejo Runner caches in conjunction for even better performance
- If Artipie does not work correctly or does not fit some reason we didn't waste too much time on it
- If Artipie is abandoned but the concept works for us, we should consider maintaining it and continuing its development