mirror of
https://github.com/openfaas/faasd.git
synced 2025-06-18 03:56:35 +00:00
Update developer docs
* Adds new step for installing containerd with systemd * Adds warning up top that this is not for newbies :-) Signed-off-by: Alex Ellis (OpenFaaS Ltd) <alexellis2@gmail.com>
This commit is contained in:
118
docs/DEV.md
118
docs/DEV.md
@ -1,5 +1,7 @@
|
|||||||
## Manual installation of faasd for development
|
## Manual installation of faasd for development
|
||||||
|
|
||||||
|
> Note: if you're just wanting to try out faasd, then it's likely that you're on the wrong page. This is a detailed set of instructions for those wanting to contribute or customise faasd. Feel free to go back to the homepage and pick a tutorial instead.
|
||||||
|
|
||||||
### Pre-reqs
|
### Pre-reqs
|
||||||
|
|
||||||
* Linux
|
* Linux
|
||||||
@ -30,44 +32,49 @@ curl -sLSf https://github.com/containerd/containerd/releases/download/v$VER/cont
|
|||||||
containerd -version
|
containerd -version
|
||||||
```
|
```
|
||||||
|
|
||||||
* Or get my containerd binaries for armhf
|
* Or get my containerd binaries for Raspberry Pi (armhf)
|
||||||
|
|
||||||
Building containerd on armhf is extremely slow.
|
Building `containerd` on armhf is extremely slow, so I've provided binaries for you.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
curl -sSL https://github.com/alexellis/containerd-armhf/releases/download/v1.3.2/containerd.tgz | sudo tar -xvz --strip-components=2 -C /usr/local/bin/
|
curl -sSL https://github.com/alexellis/containerd-armhf/releases/download/v1.3.2/containerd.tgz | sudo tar -xvz --strip-components=2 -C /usr/local/bin/
|
||||||
```
|
```
|
||||||
|
|
||||||
* Or clone / build / install [containerd](https://github.com/containerd/containerd) from source:
|
* Or clone / build / install [containerd](https://github.com/containerd/containerd) from source:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
export GOPATH=$HOME/go/
|
export GOPATH=$HOME/go/
|
||||||
mkdir -p $GOPATH/src/github.com/containerd
|
mkdir -p $GOPATH/src/github.com/containerd
|
||||||
cd $GOPATH/src/github.com/containerd
|
cd $GOPATH/src/github.com/containerd
|
||||||
git clone https://github.com/containerd/containerd
|
git clone https://github.com/containerd/containerd
|
||||||
cd containerd
|
cd containerd
|
||||||
git fetch origin --tags
|
git fetch origin --tags
|
||||||
git checkout v1.3.2
|
git checkout v1.3.2
|
||||||
|
|
||||||
make
|
make
|
||||||
sudo make install
|
sudo make install
|
||||||
|
|
||||||
containerd --version
|
containerd --version
|
||||||
```
|
```
|
||||||
|
|
||||||
Kill any old containerd version:
|
#### Ensure containerd is running
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# Kill any old version
|
curl -sLS https://raw.githubusercontent.com/containerd/containerd/master/containerd.service > /tmp/containerd.service
|
||||||
sudo killall containerd
|
|
||||||
sudo systemctl disable containerd
|
sudo cp /tmp/containerd.service /lib/systemd/system/
|
||||||
|
sudo systemctl enable containerd
|
||||||
|
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
sudo systemctl restart containerd
|
||||||
```
|
```
|
||||||
|
|
||||||
Start containerd in a new terminal:
|
Or run ad-hoc:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo containerd &
|
sudo containerd &
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Enable forwarding
|
#### Enable forwarding
|
||||||
|
|
||||||
> This is required to allow containers in containerd to access the Internet via your computer's primary network interface.
|
> This is required to allow containers in containerd to access the Internet via your computer's primary network interface.
|
||||||
@ -90,10 +97,11 @@ echo "net.ipv4.conf.all.forwarding=1" | sudo tee -a /etc/sysctl.conf
|
|||||||
sudo apt update \
|
sudo apt update \
|
||||||
&& sudo apt install -qy \
|
&& sudo apt install -qy \
|
||||||
runc \
|
runc \
|
||||||
bridge-utils
|
bridge-utils \
|
||||||
|
make
|
||||||
```
|
```
|
||||||
|
|
||||||
You may find alternatives for CentOS and other distributions.
|
You may find alternative package names for CentOS and other Linux distributions.
|
||||||
|
|
||||||
#### Install Go 1.13 (x86_64)
|
#### Install Go 1.13 (x86_64)
|
||||||
|
|
||||||
@ -109,6 +117,13 @@ export PATH=$PATH:/usr/local/go/bin/
|
|||||||
go version
|
go version
|
||||||
```
|
```
|
||||||
|
|
||||||
|
You should also add the following to `~/.bash_profile`:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
export GOPATH=$HOME/go/
|
||||||
|
export PATH=$PATH:/usr/local/go/bin/
|
||||||
|
```
|
||||||
|
|
||||||
#### Or on Raspberry Pi (armhf)
|
#### Or on Raspberry Pi (armhf)
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
@ -139,17 +154,20 @@ sudo mkdir -p /opt/cni/bin
|
|||||||
curl -sSL https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-linux-${ARCH}-${CNI_VERSION}.tgz | sudo tar -xz -C /opt/cni/bin
|
curl -sSL https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-linux-${ARCH}-${CNI_VERSION}.tgz | sudo tar -xz -C /opt/cni/bin
|
||||||
```
|
```
|
||||||
|
|
||||||
Run or install faasd, which brings up the gateway and Prometheus as containers
|
#### Clone faasd and its systemd unit files
|
||||||
|
|
||||||
|
```sh
|
||||||
|
mkdir -p $GOPATH/src/github.com/openfaas/
|
||||||
|
cd $GOPATH/src/github.com/openfaas/
|
||||||
|
git clone https://github.com/openfaas/faasd
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Build `faasd` from source (optional)
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd $GOPATH/src/github.com/openfaas/faasd
|
cd $GOPATH/src/github.com/openfaas/faasd
|
||||||
go build
|
cd faasd
|
||||||
|
make local
|
||||||
# Install with systemd
|
|
||||||
# sudo ./faasd install
|
|
||||||
|
|
||||||
# Or run interactively
|
|
||||||
# sudo ./faasd up
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Build and run `faasd` (binaries)
|
#### Build and run `faasd` (binaries)
|
||||||
@ -171,6 +189,42 @@ sudo curl -fSLs "https://github.com/openfaas/faasd/releases/download/0.7.4/faasd
|
|||||||
&& sudo chmod a+x "/usr/local/bin/faasd"
|
&& sudo chmod a+x "/usr/local/bin/faasd"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### Install `faasd`
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Install with systemd
|
||||||
|
sudo cp bin/faasd /usr/local/bin
|
||||||
|
sudo faasd install
|
||||||
|
|
||||||
|
2020/02/17 17:38:06 Writing to: "/var/lib/faasd/secrets/basic-auth-password"
|
||||||
|
2020/02/17 17:38:06 Writing to: "/var/lib/faasd/secrets/basic-auth-user"
|
||||||
|
Login with:
|
||||||
|
sudo cat /var/lib/faasd/secrets/basic-auth-password | faas-cli login -s
|
||||||
|
```
|
||||||
|
|
||||||
|
You can now log in either from this machine or a remote machine using the OpenFaaS UI, or CLI.
|
||||||
|
|
||||||
|
Check that faasd is ready:
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo journalctl -u faasd
|
||||||
|
```
|
||||||
|
|
||||||
|
You should see output like:
|
||||||
|
|
||||||
|
```
|
||||||
|
Feb 17 17:46:35 gold-survive faasd[4140]: 2020/02/17 17:46:35 Starting faasd proxy on 8080
|
||||||
|
Feb 17 17:46:35 gold-survive faasd[4140]: Gateway: 10.62.0.5:8080
|
||||||
|
Feb 17 17:46:35 gold-survive faasd[4140]: 2020/02/17 17:46:35 [proxy] Wait for done
|
||||||
|
Feb 17 17:46:35 gold-survive faasd[4140]: 2020/02/17 17:46:35 [proxy] Begin listen on 8080
|
||||||
|
```
|
||||||
|
|
||||||
|
To get the CLI for the command above run:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
curl -sSLf https://cli.openfaas.com | sudo sh
|
||||||
|
```
|
||||||
|
|
||||||
#### At run-time
|
#### At run-time
|
||||||
|
|
||||||
Look in `hosts` in the current working folder or in `/var/lib/faasd/` to get the IP for the gateway or Prometheus
|
Look in `hosts` in the current working folder or in `/var/lib/faasd/` to get the IP for the gateway or Prometheus
|
||||||
|
Reference in New Issue
Block a user