Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 1 addition & 79 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,79 +1 @@
# Peerd

[![Build Status]][build-status]
[![Kind CI Status]][kind-ci-status]
[![Release CI]][release-ci]
[![CodeQL]][code-ql]
[![Go Report Card]][go-report-card]
[![codecov]][code-cov]
[![release-tag]][peerd-pkgs]

<img src="./assets/images/logo.png" alt="peerd-logo" width="130">

---

Peerd enhances [Azure Artifact Streaming] and containerd image pull performance by enabling peer-to-peer distribution in
a Kubernetes cluster. Nodes can share streamable content as well as images with each other, which can result in throughput
and latency improvements.

![cluster-ops]

## Benefits

| Benefit | Artifact Streaming | Image Pulls | Notes |
| ----------------------------------------------- | ------------------ | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Increased Throughput** | <p>&#9989;</p> | <p>&#9989;</p> | Both streaming and image pull latency improves. |
| **Reduced Cluster Scale Out Time** | <p>&#9989;</p> | <p>&#9989;</p> | New nodes stream or pull images from peers that already have that content. |
| **Improved Cluster Fault Tolerance** | <p>&#9989;</p> | <p>&#9989;</p> | Mitigating upstream throttling or unavailability. |
| **Reduced Container Registry Egress Costs** | <p>&#9989;</p> | <p>&#9989;</p> | By sharing content within the cluster, upstream I/O is reduced. |
| **More Cluster Firewall Configuration Options** | <p>&#9989;</p> | <p>&#9989;</p> | Once an image or streamable content is ingested, nodes can share from each other without needing to communicate with the container registry. |
| **Ease of Use** | <p>&#9989;</p> | <p>&#9989;</p> | Peerd is a drop-in solution that requires no changes to existing workflows or tooling, with seamless fallback to the container registry if needed. |

## Usage Guide

See the [usage guide][usage.md] to get started.

## Design and Architecture

Read the [design.md] document to understand the architecture and design of Peerd.

## Contributing

Please read our [contribution guide][CONTRIBUTING.md] which outlines all of our policies, procedures, and requirements
for contributing to this project.

## Code of Conduct

Please see [CODE_OF_CONDUCT.md] for further details.

## Acknowledgments

- Thanks to Philip Laine and Simon Gottschlag at Xenit for generously sharing their insights on [Spegel] with us.
- Thanks to [DADI P2P Proxy] for demonstrating the integration with [Overlaybd].

---

[Azure Artifact Streaming]: https://learn.microsoft.com/en-us/azure/container-registry/container-registry-artifact-streaming
[Build Status]: https://github.com/azure/peerd/actions/workflows/build.yml/badge.svg
[build-status]: https://github.com/azure/peerd/actions/workflows/build.yml
[cluster-ops]: ./assets/images//cluster-ops.gif
[codecov]: https://codecov.io/gh/Azure/peerd/branch/main/graph/badge.svg
[code-cov]: https://codecov.io/gh/Azure/peerd
[CODE_OF_CONDUCT.md]: CODE_OF_CONDUCT.md
[CodeQL]: https://github.com/Azure/peerd/actions/workflows/github-code-scanning/codeql/badge.svg?branch=main
[code-ql]: https://github.com/Azure/peerd/actions/workflows/github-code-scanning/codeql
[CONTRIBUTING.md]: CONTRIBUTING.md
[DADI P2P Proxy]: https://github.com/data-accelerator/dadi-p2proxy
[design.md]: ./docs/design.md
[Go Report Card]: https://goreportcard.com/badge/github.com/azure/peerd
[go-report-card]: https://goreportcard.com/report/github.com/azure/peerd
[kubectl-node-shell]: https://github.com/kvaps/kubectl-node-shell
[Kind CI Status]: https://github.com/azure/peerd/actions/workflows/kind.yml/badge.svg
[kind-ci-status]: https://github.com/azure/peerd/actions/workflows/kind.yml
[Overlaybd]: https://github.com/containerd/overlaybd
[peerd-pkgs]: https://github.com/Azure/peerd/pkgs/container/acr%2Fdev%2Fpeerd
[Release CI]: https://github.com/azure/peerd/actions/workflows/release.yml/badge.svg
[release-ci]: https://github.com/azure/peerd/actions/workflows/release.yml
[release-tag]: https://img.shields.io/github/v/tag/Azure/peerd?label=Docker%20Image%20Tag
[Spegel]: https://github.com/XenitAB/spegel
[usage.md]: ./docs/usage.md
# I CANT CODE MY OWN SHIT SO I STEAL FROM OTHERS