I just spent some time trying to build flannel
and since there were
some nuances, I decided to list the instructions here.
Install build dependencies:
sudo apt-get install linux-libc-dev golang gcc
Make Go directories:
mkdir -p ~/go/src
cd ~/go/src
export GOPATH=~/go
Clone flannel:
git clone https://github.com/coreos/flannel.git
Install Go dependencies:
cd flannel
go install
Since I wanted a statically linked binary, I edited the Makefile and updated the build instruction like this:
dist/flanneld: $(shell find . -type f -name '*.go')
go build -o dist/flanneld \
-ldflags '-extldflags "-static" -X github.com/coreos/flannel/version.Version=$(TAG)'
Now build the binary:
make dist/flanneld
flanneld
binary should now be created in the dist directory. You
can strip it to make it smaller:
strip dist/flanneld
One other problem I encountered was that you need at least 2GB of RAM for this. I was trying this in a VM with 1GB and I ran out of memory.