How to Install OpenFaaS CLI on a Vultr Cloud Server
-
by cobra_admin
- 112
Introduction
Open Functions as a Service (OpenFaas) is an open-source serverless computing framework that allows you to build and deploy code as functions in containerized environments. OpenFaas CLI faas-cli
is a command line tool used to prepare, package, deploy, and invoke functions on any platform.
This article explains how you can install OpenFaas CLI on a Vultr Cloud Server and create new functions for deployment on your target platform such as Docker or a Vultr Kubernetes Engine (VKE) cluster. You will set up a new Node.Js template function, push it to the Vultr Container Registry, and test access to the new function.
Prerequisites
Before you begin:
- Deploy a One Click Docker instance using the Vultr marketplace application to test the OpenFaas CLI operations.
- Using SSH, access the server as a non-root user with sudo privileges
- Add the non-root user to the Docker group.CONSOLECopy# usermod -aG docker linuxuser
- Switch to the user.CONSOLECopy# su – linuxuser
Install OpenFaas CLI
To install faas-cli
on your system, you can either build the tool using the latest source file available on the OpenFaas CLI releases page or use a package manager. For fast deployments, use the OpenFaas CLI installation script or download the latest faas-cli
version using your package manager as described in the system sections below.
Linux
- Using the Curl utility, download the latest OpenFaas CLI script and execute it on your server.CONSOLECopy$ curl -sL https://cli.openfaas.com | sudo sh Output:
Finding latest version from GitHub 0.16.18 Downloading package https://github.com/openfaas/faas-cli/releases/download/0.16.18/faas-cli as /tmp/faas-cli Download complete. Running with sufficient permissions to attempt to move faas-cli to /usr/local/bin New version of faas-cli installed to /usr/local/bin ___ _____ ____ / _ \ _ __ ___ _ __ | ___|_ _ __ _/ ___| | | | | '_ \ / _ \ '_ \| |_ / _` |/ _` \___ \ | |_| | |_) | __/ | | | _| (_| | (_| |___) | \___/| .__/ \___|_| |_|_| \__,_|\__,_|____/ |_|
- Verify the installed OpenFaas CLI version.CONSOLECopy$ faas-cli version Output:
___ _____ ____ / _ \ _ __ ___ _ __ | ___|_ _ __ _/ ___| | | | | '_ \ / _ \ '_ \| |_ / _` |/ _` \___ \ | |_| | |_) | __/ | | | _| (_| | (_| |___) | \___/| .__/ \___|_| |_|_| \__,_|\__,_|____/ |_| CLI: commit: 9981e9ea7065d5dc2d4a17013aca04a1c97fe4df version: 0.16.18
Windows
- Install the Chocolatey Package Manager.
- Open a new Windows Powershell session as an administrator.
- Using Chocolatey, install the latest OpenFaas CLI version.CONSOLECopy> choco install faas-cli Output:
faas-cli v0.16.18 [Approved] faas-cli package files install completed. Performing other installation steps. ShimGen has successfully created a shim for faas-cli.exe The install of faas-cli was successful. Software installed to 'C:\ProgramData\chocolatey\lib\faas-cli' Chocolatey installed 1/1 packages. See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).
- Verify the installed
faas-cli
version.CONSOLECopy> faas-cli version
MacOS
- Install the Homebrew Package Manager.
- Open a new Mac terminal session.
- Using
brew
, install the latest OpenFaas CLI version.CONSOLECopy$ brew install faas-cli - Verify the installed
faas-cli
version.CONSOLECopy$ faas-cli version Output:___ _____ ____ / _ \ _ __ ___ _ __ | ___|_ _ __ _/ ___| | | | | '_ \ / _ \ '_ \| |_ / _` |/ _` \___ \ | |_| | |_) | __/ | | | _| (_| | (_| |___) | \___/| .__/ \___|_| |_|_| \__,_|\__,_|____/ |_| CLI: commit: 9981e9ea7065d5dc2d4a17013aca04a1c97fe4df version: 0.16.18
Deploy Functions using OpenFaas CLI
faas-cli
contains a collection of function templates you can modify and deploy on your platform. To test the tool operations, create a new Node.js function, deploy it to your Vultr Container Registry, and run it locally using Docker as described in the steps below.
- Using Docker, log in to your Vultr Container Registry. Replace
/example
,example-user
, andregistry-password
with your actual values.CONSOLECopy$ docker login https://sjc.vultrcr.com/example -u example-user -p registry-password - Create a new functions directory.CONSOLECopy$ mkdir sample-function
- Switch to the directory.CONSOLECopy$ cd sample-function
- Create a new function using the Node.js template.CONSOLECopy$ faas new function-js –lang node
- When successful, list files in the directory to verify the template files.CONSOLECopy$ ls Output:
function-js function-js.yml template
- Using a text editor such as Nano, edit the
function-js.yml
file.CONSOLECopy$ nano function-js.yml - Change the
image
value to include your registry URL, target image name, and version. For example,sjc.vultrcr.com/example/function-js:latest
.YAMLCopyversion: 1.0 provider: name: openfaas gateway: http://127.0.0.1:8080 functions: function-js: lang: node handler: ./function-js image: sjc.vultrcr.com/example/function-js:latest Save and close the file. - Edit the
handler.js
file in thefunction-js
directory.CONSOLECopy$ nano function-js/handler.js - Change the status value from
done
toHello World! This is a new function
.JSCopy”use strict” module.exports = async (context, callback) => { return {status: “Hello World! This is a new function”} } Save and close the file. - Using
faas-cli
, build your new function Docker image.CONSOLECopy$ faas-cli build -f function-js.yml - Push the image to your Vultr Container Registry.CONSOLECopy$ faas-cli push -f function-js.yml Output:
[0] > Pushing function-js [sjc.vultrcr.com/example/function-js:latest] The push refers to repository [sjc.vultrcr.com/example/function-js] b112a4aa7899: Pushed aab13da92792: Pushed 0ecbb3223988: Mounted from example/function-js fb06df7913c9: Mounted from example/function-js 7c12f4f6f311: Mounted from example/function-js 175e187866ab: Mounted from example/function-js ef754d6d25f6: Mounted from example/function-js f1bd474f9894: Mounted from example/function-js 0ef0faea5d8d: Mounted from example/function-js b247f74b283f: Mounted from example/function-js 7f30cde3f699: Mounted from example/function-js fe810f5902cc: Mounted from example/function-js dfd8c046c602: Mounted from example/function-js 4fc242d58285: Mounted from example/function-js latest: digest: sha256:b70e4dcb7c5ad3c7907fbb52887b0b2cb3a01eaa92ee59ea54d5952931dac0f6 size: 3448 [0] < Pushing function-js [sjc.vultrcr.com/example/function-js:latest] done. [0] Worker done.
- To deploy your new function to an OpenFaas cluster, run the following command to use your
kubectl
configuration to connect to the cluster.CONSOLECopy$ faas-cli deploy -f function-js.yml –gateway http://openfaas.example.com For purposes of this article, run the following command to locally test your new function using Docker as a background process.CONSOLECopy$ faas-cli local-run -f function-js.yml & When successful, verify that the new function Docker container is active and running.CONSOLECopy$ docker ps Output:CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 41b766818845 sjc.vultrcr.com/example/function-js:latest "docker-entrypoint.s…" 49 minutes ago Up 49 minutes (healthy) 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp function-js
- Using Curl, query the function on the localhost port
8080
defined in yourfunction-js.yml
fileCONSOLECopy$ curl 127.0.0.1:8080 Output:2023/11/23 02:58:19 Forking fprocess. 2023/11/23 02:58:19 Wrote 49 Bytes - Duration: 0.060841s {"status":"Hello World! This is a new function"}
To handle invoke operations, modify your function code to include Input values. - Each time you modify the template files, deploy the function to build your image and synchronize changes to your clusterCONSOLECopy$ faas-cli deploy -f function-js.yml
- To stop the background
faas-cli
function process, verify the Job IDCONSOLECopy$ jobs Output:[1]+ Running faas-cli local-run -f function-js.yml &
Kill the target Job ID. For example1
.CONSOLECopy$ kill %1
Conclusion
You have installed the OpenFaas CLI tool on a Vultr Cloud Server. Depending on your environment, you can use faas-cli
to package, deploy, and invoke serverless functions on your OpenFaas cluster.
Introduction Open Functions as a Service (OpenFaas) is an open-source serverless computing framework that allows you to build and deploy code as functions in containerized environments. OpenFaas CLI faas-cli is a command line tool used to prepare, package, deploy, and invoke functions on any platform. This article explains how you can install…
Introduction Open Functions as a Service (OpenFaas) is an open-source serverless computing framework that allows you to build and deploy code as functions in containerized environments. OpenFaas CLI faas-cli is a command line tool used to prepare, package, deploy, and invoke functions on any platform. This article explains how you can install…