Skip to content
This repository has been archived by the owner on Jun 20, 2024. It is now read-only.

Reweave - an effort to create a modern build system for weave net #3996

Open
wants to merge 66 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
7140e40
Reweave begins
rajch Mar 25, 2023
ee3b7ce
Old build process documented
rajch Mar 25, 2023
273c611
Image security scanning process created
rajch Mar 27, 2023
90a5d94
New build process created
rajch Mar 27, 2023
c241c45
Go version bumped to 1.20
rajch Mar 28, 2023
df2240a
Some vulnerable dependencies upgraded
rajch Mar 28, 2023
2f49b84
github.com/miekg/dns upgraded with code change
rajch Mar 29, 2023
1bb1f02
libCNI upgraded to v1.1.2
rajch Mar 29, 2023
88d8bb6
Docker, containerd and runc dependencies upgraded
rajch Mar 29, 2023
e84a000
multiarch (alpine)
Mar 29, 2023
901e889
Merge pull request #1 from kingdonb/reweave
rajch Mar 30, 2023
559027b
Alpine base image upgraded
rajch Mar 30, 2023
cdf761b
Scan results on 2023-07-17
rajch Jul 17, 2023
4b47fc6
Alpine base image upgraded
rajch Jul 17, 2023
668bbcf
Docker and runc dependencies upgraded
rajch Jul 17, 2023
c085ebe
Build steps for docker plugin added
rajch Jul 28, 2023
6365328
Documentation updated
rajch Jul 31, 2023
65cbea0
Scan results on 2023-08-15
rajch Aug 15, 2023
126f3ab
Alpine base image upgraded
rajch Aug 15, 2023
1ceeca8
Scan results on 2023-11-12
rajch Nov 12, 2023
0d58e17
Alpine base image and some dependencies upgraded
rajch Nov 12, 2023
6093383
Start creation of full fork
rajch Feb 29, 2024
00f8afd
Changed registry user in publishables to rajchaudhuri on docker hub
rajch Feb 29, 2024
ea27069
Scan results on 2024-02-29
rajch Feb 29, 2024
962bb57
Dependencies and alpine base image upgraded
rajch Mar 1, 2024
c1d3107
Changed module name, edited default manifests in prog/weave-kube
rajch Mar 1, 2024
0e7b15b
Changed documentation and scan process
rajch Mar 3, 2024
a9d6634
Go version bumped to 1.21
rajch Mar 3, 2024
7b08716
Add release v2.8.2
rajch Mar 3, 2024
55a4699
Release 2.8.2 cosmetic corrections
rajch Mar 3, 2024
e500408
Docker API client version bumped to 1.24 everywhere
rajch Mar 7, 2024
a752f65
All images other than V2 docker plugin added to scan process
rajch Mar 7, 2024
d087879
Add release v2.8.3
rajch Mar 7, 2024
664e361
In alpine base image, changed default iptables backend to legacy for …
rajch Mar 10, 2024
bcab10a
When publishing images, the :latest tag will not be applied if the cu…
rajch Mar 17, 2024
b46c774
Updated CNI conflist file content, and ensured correct version stamping
rajch Mar 18, 2024
92779f3
Moved old artifacts that are no longer used to 'original' directory
rajch Mar 18, 2024
e2db8a2
Added documentation website content, and a workflow to publish it to …
rajch Mar 18, 2024
a0ee825
Updated internal CHANGELOG
rajch Mar 19, 2024
c1993b9
Scan results on 2024-03-19
rajch Mar 19, 2024
8c14812
Upgraded dependency, modified scan process
rajch Mar 19, 2024
c3afe55
Add release v2.8.4
rajch Mar 20, 2024
ff91a56
Scan results on 2024-03-30
rajch Mar 30, 2024
ac180cf
Upgraded dependency
rajch Apr 5, 2024
c3cc210
Add release 2.8.5
rajch Apr 6, 2024
78f596f
Provisioned for Docker V2 plugin on multiple architectures, blocked C…
rajch Apr 9, 2024
e42bc29
Add release v2.8.6
rajch Apr 10, 2024
afd62f2
Corrected plugin publish tool
rajch Apr 10, 2024
46cf7c4
Documentation corrections
rajch Apr 10, 2024
f8d0d8e
Scan results on 2024-05-04
rajch May 4, 2024
3fd1ae5
Upgraded a dependency
rajch May 4, 2024
a3d5e07
Removed ppc64le and s390x arch support
rajch May 5, 2024
525d517
Add release v2.8.7
rajch May 5, 2024
8cfc740
Scan results on 2024-06-18
rajch Jun 18, 2024
8111775
Alpine base image upgraded
rajch Jun 18, 2024
b0477a2
Add release v2.8.8
rajch Jun 19, 2024
32ad2a1
Documentation updates
rajch Jul 19, 2024
8f85c32
Scan results on 2024-07-30
rajch Jul 30, 2024
ae5d462
Scan results on 2024-08-09
rajch Aug 9, 2024
981196a
Updated a dependency, Go version and Alpine base image
rajch Aug 9, 2024
463c7af
Add release v2.8.9
rajch Aug 9, 2024
f32a2a6
Scan results on 2024-10-16
rajch Oct 16, 2024
ca2ba76
Alpine base image upgraded to 3.20.3
rajch Oct 17, 2024
fab7297
Scan results on 2024-10-17
rajch Oct 17, 2024
6512da7
Go version upgraded to 1.23.1
rajch Oct 17, 2024
84afe28
Add release v2.8.10
rajch Oct 17, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
13 changes: 13 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Git status should be ignored
.git

# .dockerignore should be ignored
.dockerignore

# Almost all of the reweave directory
# should be ignored
reweave/build/Dockerfile
reweave/tools/
reweave/scans/
reweave/Makefile
reweave/*.md
53 changes: 53 additions & 0 deletions .github/workflows/github-pages-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Workflow for building and deploying a Jekyll site to GitHub Pages
name: Build using Jekyll, deploy to GitHub Pages

on:
# Runs on pushes targeting the master branch, if changes found in
# the website directory
push:
branches: ["master"]
paths: ["website/**"]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false

jobs:
# Build job
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Pages
uses: actions/configure-pages@v4
- name: Build with Jekyll
uses: actions/jekyll-build-pages@v1
with:
source: ./website/
destination: ./_site
- name: Upload artifact
uses: actions/upload-pages-artifact@v3

# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
56 changes: 56 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,59 @@
## Release 2.8.10

This release bumps the Go version to 1.23.1 and the alpine base image to version 3.20.3 as per CVE recommendations.

## Release 2.8.9

This release bumps the Go version to 1.22.2, the alpine base image to version 3.20.2, and upgrades a dependency as per CVE recommendations.

## Release 2.8.8

The alpine base image used by `weave-kube` and `weave-npc` has been upgraded to version 3.20.0 in this release. This removes several CVEs.

## Release 2.8.7

This release has upgraded dependencies based on CVE recommendations.

Also, this release does not provides images for the `ppc64le` and `s390x` architectures, because a crucial upstream dependency (libpcap-0.8, from the debian buster respository) does not provide binaries for those architectures any more.

## Release 2.8.6

From this release onwards, the Docker V2 Plugin will be published for all supported architectures. It will be named using the pattern `rajchaudhuri/net-plugin:<version>-<arch>`. The latest version will also be published as `rajchaudhuri/net-plugin:latest_release-<arch>`. Supported architectures are `amd64`,`arm`,`arm64`,`ppc64le` and `s390x`. It can be installed on a Swarm-mode-enabled Docker host as follows:

```bash
ARCH=$(docker version -f '{{.Server.Arch}}')
docker plugin install rajchaudhuri/net-plugin:latest_release-$ARCH
```

## Release 2.8.5

This release has upgraded dependencies based on CVE recommendations.

* Build with Go version 1.21.9
* A dependency has been updated

## Release 2.8.4

The alpine base image used by `weave-kube` and `weave-npc` was upgraded to version 3.19.1 in the previous release. In this version, the default iptables backend is nftables, and the legacy backend is not included. Our scripts and programs assume legacy as the default backend, and change to nft if autodetected, or if we ask for it. So, the build Dockerfile (reweave/build/Dockerfile) was changed to also install the Alpine `iptables-legacy` package , and change the `iptables-{save,restore}` symbolic links to point to the legacy backend by default.

The `weave-kube` and `weave-npc` images can now log traces if the environment WEAVE_DEBUG is set in the manifest.

## Release 2.8.3

The docker API client version, used by the proxy package and the weaveutil command, was bumped from 1.18 to 1.24. As of March 2024, Docker API versions below 1.24 are deprecated. This means that the minimum supported Docker version is now 1.12.0.

Provision was made in weaveutil program and the weave script to override the API version used, via the environment variable `DOCKER_API_VERSION`. The same variable is used by standard docker clients.

## Release 2.8.2

This is the first release since forking from weaveworks/weave. While no new functionality has been added, there have been many changes.

* Build with Go version 1.21.6
* Dependencies, especially ones with associated CVEs, have been updated
* libCNI has been upgraded to v1.1.2
* A new, Docker-only build process has been created, which produces proper multi-arch images
* A vulnerability scanning process has been created using [grype](https://github.com/anchore/grype)

## Release 2.8.1

Fixes a problem introduced in 2.8.0 for machines whose ID is in /etc/machine-id #3886
Expand Down
44 changes: 44 additions & 0 deletions HISTORY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# History of the ReWeave project

## How it started

In June 2022, Weave Net had not been updated for a year. Problems were starting to appear in the field. In particular, the last published images on the Docker Hub ([weaveworks/weave-kube](https://hub.docker.com/r/weaveworks/weave-kube) and [weaveworks/weave-npc](https://hub.docker.com/r/weaveworks/weave-npc), v2.8.1) had issues supporting multiple processor architectures, and security scanners showed multiple vulnerabilities.

A call went out from Weaveworks to get the community more involved in maintaining it. After some discussion on GitHub issues and e-mail, and even a few online meetings, things were not moving forward.

## ReWeave begins

Finally, in March 2023, this fork was created, with the following goals in mind:

* Update dependencies, especially ones with security vulnerabilities
* Make minimal code changes _only_ when required by updating dependencies
* Create true multi-arch images using modern tools
* Create a new build process to automate all this
* Do all this with _minimal_ changes to the existing codebase. Keep all new things in the `reweave` folder.

These goals were achieved. Details can be found in the [reweave](reweave/README.md) directory. A [pull request](https://github.com/weaveworks/weave/pull/3996) was submitted on the weaveworks repo, with the aim of getting a new official release out.

## Weaveworks ends

On February 5th, 2024, Weaveworks CEO Alexis Richardson announced via [LinkedIn](https://www.linkedin.com/posts/richardsonalexis_hi-everyone-i-am-very-sad-to-announce-activity-7160295096825860096-ZS67/) and [Twitter](https://twitter.com/monadic/status/1754530336120140116) that Weaveworks is winding down.

So, a decision was taken to maintain this fork independently.

## We're forked

Two major changes were introduced at this point:

* The module name was changed to `github.com/rajch/weave` (previously `github.com/weaveworks/weave`)
* The default registry account for publishing images was changed to `docker.io/rajchaudhuri` (previously `docker.io/weaveworks`)

In addition, the old repo structure and codebase is not longer sacrosanct. Things can be moved around, new code can be added outside the `reweave` directory, old code can be modified or deleted as necessary.

The version numbers will continue from where Weaveworks left off.

## New Goals

The old goals, listed above (except the last one), remain the priority. In addition, this project aims to:

* Remove dependencies on Weaveworks infrastructure, starting with telemetry (what weaveworks called checkpoint)
* Publish new releases regularly, duly security scanned
* Provide supporting infrastructure, such as weave's famous one-line installation, where possible
45 changes: 22 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,37 +1,36 @@
# Weave Net - Weaving Containers into Applications
# Weave Net

[![Integration Tests](https://circleci.com/gh/weaveworks/weave/tree/master.svg?style=shield)](https://circleci.com/gh/weaveworks/weave)
[![Coverage Status](https://coveralls.io/repos/weaveworks/weave/badge.svg)](https://coveralls.io/r/weaveworks/weave)
[![Go Report Card](https://goreportcard.com/badge/github.com/weaveworks/weave)](https://goreportcard.com/report/github.com/weaveworks/weave)
[![Docker Pulls](https://img.shields.io/docker/pulls/weaveworks/weave.svg?maxAge=604800)](https://hub.docker.com/r/weaveworks/weave/)
This repository contains a fork of Weave Net, the first product developed by Weaveworks. Since Weaveworks has shut down, this repo aims to continue maintaining Weave Net, and to publish releases regularly.

# About Weaveworks
[![Go Report Card](https://goreportcard.com/badge/github.com/rajch/weave)](https://goreportcard.com/report/github.com/rajch/weave)
[![Docker Pulls](https://img.shields.io/docker/pulls/rajchaudhuri/weave-kube "Number of times the weave-kube image was pulled from the Docker Hub")](https://hub.docker.com/r/rajchaudhuri/weave-kube)
[![GitHub release (latest by date)](https://img.shields.io/github/v/release/rajch/weave?include_prereleases)](https://github.com/rajch/weave/releases)
[![Unique CVE count in all images](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Frajch%2Fweave%2Fmaster%2Freweave%2Fscans%2Fbadge.json&label=CVE%20count "The number of unique CVEs reported by scanning all images")](reweave/scans/report.md)

[Weaveworks](https://www.weave.works) is the company that delivers the most productive way for developers to connect, observe and control Docker containers.
The history of the fork can be found in [HISTORY.md](HISTORY.md).

This repository contains [Weave Net](https://www.weave.works/products/weave-net/), the first product developed by Weaveworks, with over 8 million downloads to date. Weave Net enables you to get started with Docker clusters and portable apps in a fraction of the time required by other solutions.
## Using Weave Net on Kubernetes

# Weave Net
On a newly created Kubernetes cluster, the Weave Net CNI pluging can be installed by running the following command:

```
kubectl apply -f https://reweave.azurewebsites.net/k8s/v1.29/net.yaml
```

Weave Net creates a virtual network that connects Docker containers across multiple hosts and enables their automatic discovery. With Weave Net, portable microservices-based applications consisting of multiple containers can run anywhere: on one host, multiple hosts or even across cloud providers and data centers. Applications use the network just as if the containers were all plugged into the same network switch, without having to configure port mappings, ambassadors or links.
Replace `v1.29` with the version on Kubernetes on your cluster.

Services provided by application containers on the Weave network can be exposed to the outside world, regardless of where they are running. Similarly, existing internal systems can be opened to accept connections from application containers irrespective of their location.
That endpoint is provided by the companion project [weave-endpoint](https://github.com/rajch/weave-endpoint).

## <a name="help"></a>Getting help
## Using Weave Net in other ways

If you have any questions about, feedback for or a problem with Weave Net:
Please refer to the [documentation](https://rajch.github.io/weave).

- Read [the Weave Net docs](https://www.weave.works/docs/net/latest/overview).
- Invite yourself to the <a href="https://slack.weave.works/" target="_blank">Weave Users Slack</a>.
- The channel for contributors and developers of Weave Net is [#net-dev](https://weave-community.slack.com/messages/net-dev/).
- Join the <a href="https://www.meetup.com/pro/Weave/"> Weave User Group </a> and get invited to online talks, hands-on training and meetups in your area.
- [File an issue](https://github.com/weaveworks/weave/issues/new).
## Building Weave Net

We follow the [CNCF Code of Conduct](code-of-conduct.md).
Details can be found [here](reweave/BUILDING.md).

Your feedback is always welcome!
## Documentation status

## Further Information
The public documentation that used to exist in the `site` directory has been moved to the `original/site` directory. A new `website` directory has been created, and populated with the content of the `original/site` directory, rearranged and reformatted for being built with Jekyll and published to the GitHub pages site [https://rajch.github.io/weave](https://rajch.github.io/weave).

* [Installing Weave Net](https://www.weave.works/docs/net/latest/install/installing-weave)
* [Weave Net Product Overview](https://www.weave.works/products/weave-net)
The documentation will now be maintained and published from the `website` directory exclusively.
2 changes: 1 addition & 1 deletion common/docker/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (

docker "github.com/fsouza/go-dockerclient"

"github.com/weaveworks/weave/common"
"github.com/rajch/weave/common"
)

const (
Expand Down
Loading