cupdate

module
v0.12.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 30, 2024 License: MIT

README

Logo

Cupdate

Cupdate is a zero-config service that helps you keep your container images up-to-date. It automatically identifies container images in use in your Kubernetes cluster or on your Docker host. Cupdate then identifies the latest available version and makes this data and more available to you via a UI, API or through an RSS feed.

Cupdate is for those who like the process of keeping their services up-to-date, looking through what's outdated and what features new updates bring. Cupdate will not help you deploy the updates. If you deploy your services using things like flux, then there are great services that will modify your manifests for you, such as Dependabot or Renovate. Cupdate is not about that, nor will it ever be. That's not to say that Cupdate won't integrate well with such services. Cupdate can still act as a dashboard of your deployed services, visualizing their graphs and versions.

Features:

  • Zero configuration required
  • Performant and lightweight - uses virtually zero CPU and roughly 14MiB RAM
  • Auto-detect container images in Kubernetes and Docker
  • Auto-detect the latest available container image versions
  • UI for discovering updates
  • Subscribe to updates via an RSS feed
  • Graphs image versions' dependants explaining why they're in use
  • Vulnerability scanning via Docker Scout, Quay and the GitHub Advisory Database through vulndb.
  • APIs for custom integrations

Supported registries:

  • docker.io
  • ghcr.io
  • quay.io
  • lscr.io
  • registry.k8s.io, k8s.gcr.io
  • registry.gitlab.com

Supported data sources:

  • Docker Hub, Docker Scout
  • GitHub, GitHub Container Registry
  • GitLab
  • Quay

Running

Cupdate can be deployed using Kubernetes or Docker. It's designed to run well with minimal required configuration. Please refer to the platform-specific documentation for more information on how to deploy:

Cupdate requires zero configuration, but is very configurable. See docs/config.md for more information.

Screenshots

Light mode Dark mode
Dashboard screenshot in light mode Dashboard screenshot in dark mode
Dashboard screenshot on small screen in light mode Dashboard screenshot on small screen in dark mode
Image page screenshot in light mode Image page screenshot in dark mode
Full image screenshot page in light mode Full image page screenshot in dark mode
Vulnerable image page screenshot in light mode Vulnerable image page screenshot in dark mode

Architecture

See docs/architecture/architecture.md.

Building

Either build using yarn+go, or docker.

yarn install
yarn build
go build -o cupdate cmd/cupdate/*.go
# Build for running the container
docker build -t ghcr.com/alexgustafsson/cupdate:latest .

# Build inside the container, for running on host
DOCKER_BUILDKIT=1 docker build --target=export . --output .

Contributing

Cupdate is still being developed.

Development

Proxy the Kubernetes API server.

kubectl proxy

Link the Docker socket.

ln -s ~/.colima/default/docker.sock docker.sock

Source the default dev config for the target platform.

# Inspect
cat .env-kubernetes

# Bash etc.
source .env-kubernetes

# Fish
export (cat .env-kubernetes | xargs -L 1)

Start cupdate.

go run cmd/cupdate/*.go

Start the web server.

yarn run dev

Directories

Path Synopsis
cmd
cupdate command
internal
api
dockerhub
Package docker provides a client using the Docker API.
Package docker provides a client using the Docker API.
oci
rss
semver
Package semver contains methods of working with semantic versions.
Package semver contains methods of working with semantic versions.
web
tools
vulndb command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL