为了获取一个私有化的 AWS Lambda,我尝试使用 OpenFaaS 来进行测试(使用swarm)

最近,我试用了OpenFaaS,为了使用自己的FaaS构建系统的想法。

打开FaaS。

几乎和这里一样。

docker swarm init

git clone https://github.com/openfaas/faas
cd faas

./deploy_stack.sh
    • サーバが立ち上がって、Basic認証の user と password が表示されるのでチェック。

deploy_stack.sh の中を見ると、 docker stack deploy func –compose-file docker-compose.yml を最後で呼んでる。
Basic 認証が有効らしい export BASIC_AUTH=”true”
Basic 認証の情報が出力される echo “[Credentials]\n username: admin \n password: $secret\n echo -n “$secret” | faas-cli login –username=admin –password-stdin”

基本的认证信息以这样的形式输出。记住了。当访问管理界面时,在浏览器上或部署时都是必需的。

[Credentials]
 username: admin
 password: 9c6208072a2389f1a9451c7fefbd2545e39bdf0a1d6cad5fd83d84f045fae173
 echo -n 9c6208072a2389f1a9451c7fefbd2545e39bdf0a1d6cad5fd83d84f045fae173 | faas-cli login --username=admin --password-stdin

当运行docker ps命令时,会看到类似这样的输出。

CONTAINER ID        IMAGE                         COMMAND                  CREATED              STATUS              PORTS                NAMES
98d484de2d2a        openfaas/faas-swarm:0.4.4     "./faas-swarm"           50 seconds ago       Up 49 seconds       8080/tcp             func_faas-swarm.1.un383dnfpqk1h5cd2c7bdn7co
62a944864920        openfaas/gateway:0.9.10       "./gateway"              54 seconds ago       Up 53 seconds       8080/tcp             func_gateway.1.iqgnmze692cleburpvw5jh9pc
fcfbcd09c3bd        prom/alertmanager:v0.15.0     "/bin/alertmanager -…"   58 seconds ago       Up 57 seconds       9093/tcp             func_alertmanager.1.04pes9jdabhxm9w8aapdxf2z4
eea4efca8daa        prom/prometheus:v2.3.1        "/bin/prometheus --c…"   About a minute ago   Up About a minute   9090/tcp             func_prometheus.1.bwl1j63bjmxv7ixl25j99ez3n
dc8c546038ef        openfaas/queue-worker:0.5.4   "./app"                  About a minute ago   Up About a minute   8080/tcp             func_queue-worker.1.nnlvo3ixpc5rf5f65hzhdb2qh
893e162a290f        nats-streaming:0.11.2         "/nats-streaming-ser…"   About a minute ago   Up About a minute   4222/tcp, 8222/tcp   func_nats.1.g33o99phxe0gx3ubt4625ih57
image.png

安装 OpenFaaS 的命令行工具 (CLI)。

curl -sSL https://cli.openfaas.com | sh

在执行上述命令安装时,会出现以下提示(在 Mac 一般用户执行时)。因此,按照提示执行了两个命令。

=========================================================
==    As the script was run as a non-root user the     ==
==    following commands may need to be run manually   ==
=========================================================

  sudo cp faas-cli-darwin /usr/local/bin/faas-cli
  sudo ln -sf /usr/local/bin/faas-cli /usr/local/bin/faas

使用faas-cli version命令来检查版本。

  ___                   _____           ____
 / _ \ _ __   ___ _ __ |  ___|_ _  __ _/ ___|
| | | | '_ \ / _ \ '_ \| |_ / _` |/ _` \___ \
| |_| | |_) |  __/ | | |  _| (_| | (_| |___) |
 \___/| .__/ \___|_| |_|_|  \__,_|\__,_|____/
      |_|

CLI:
 commit:  b24c5763d9b61e0c04018a722f8f2f765498f18a
 version: 0.7.8

faas-cli 的帮助信息

Manage your OpenFaaS functions from the command line

Usage:
  faas-cli [flags]
  faas-cli [command]

Available Commands:
  build          Builds OpenFaaS function containers
  cloud          OpenFaaS Cloud commands
  deploy         Deploy OpenFaaS functions
  describe       Describe an OpenFaaS function
  generate       Generate Kubernetes CRD YAML file
  help           Help about any command
  invoke         Invoke an OpenFaaS function
  list           List OpenFaaS functions
  login          Log in to OpenFaaS gateway
  logout         Log out from OpenFaaS gateway
  new            Create a new template in the current folder with the name given as name
  push           Push OpenFaaS functions to remote registry (Docker Hub)
  remove         Remove deployed OpenFaaS functions
  store          OpenFaaS store commands
  template       Downloads templates from the specified github repo
  up             Builds, pushes and deploys OpenFaaS function containers
  version        Display the clients version information

Flags:
      --filter string   Wildcard to match with function names in YAML file
  -h, --help            help for faas-cli
      --regex string    Regex to match with function names in YAML file
  -f, --yaml string     Path to YAML file describing function(s)

Use "faas-cli [command] --help" for more information about a command.

功能创建

创建用于管理的目录。

mkdir functions
cd functions

新的功能


只是想尝试一下的话,

    • faas-cli new の –prefix localhost:5000 はいらない

 

    • Docker Registry もいらない

 

    • faas-cli push もいらない

 

    • faas-cli build の –tag latest はいらない

 

    new して build して、 OpenFaaS へのログインと deploy すればいい

只是那样而已。他似乎还有其他很多误会。


创建一个节点功能。由于本次使用了私有的Docker仓库,因此–prefix参数的指定十分重要。

faas-cli new hello-openfaas --lang node --prefix localhost:5000

用tree命令查看文件结构。

.
├── hello-openfaas
│   ├── handler.js
│   └── package.json
├── hello-openfaas.yml
└── template

猫 hello-openfaas.yml 已经打开。

provider:
  name: faas
  gateway: http://127.0.0.1:8080
functions:
  hello-openfaas:
    lang: node
    handler: ./hello-openfaas
    image: hello-openfaas:latest

猫表现出了对hello-openfaas/handler.js文件的兴趣。

"use strict"

module.exports = (context, callback) => {
    callback(undefined, {status: "done"});
}

猫 hello-openfaas/package.json。

{
  "name": "function",
  "version": "1.0.0",
  "description": "",
  "main": "handler.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

尝试查看 faas-cli new 命令中除了可指定的 node 模板之外的其他模板。

faas-cli template pull
faas-cli new --list

那个结果是(截至2018年11月12日)。

Languages available as templates:
- csharp
- dockerfile
- go
- go-armhf
- java8
- node
- node-arm64
- node-armhf
- php7
- python
- python-armhf
- python3
- python3-armhf
- ruby

Docker注册表的目的是什么?

以下命令不考虑持久性等问题。仅供试用。

docker run -d -p 5000:5000 --name registry registry:latest

创建Docker镜像

faas-cli build -f hello-openfaas.yml --tag latest

在命令行中输入 “docker image ls” 进行确认。

REPOSITORY                      TAG                    IMAGE ID            CREATED              SIZE
localhost:5000/hello-openfaas   latest                 bd1a24eefc35        About a minute ago   72.2MB

将 Docker Image 推送到 Registry。

faas-cli push -f hello-openfaas.yml --tag latest

把应用程序部署到OpenFaaS

执行以下命令以登录到OpenFaaS:运行./deploy_stack.sh时显示的以echo开头的命令。

echo -n 9c6208072a2389f1a9451c7fefbd2545e39bdf0a1d6cad5fd83d84f045fae173 | faas-cli login --username=admin --password-stdin

部署~

faas-cli deploy -f hello-openfaas.yml
image.png

按下INVOKE按钮,即可执行Function并在响应体中显示结果。
也可以通过浏览器访问URL。

删除功能

faas-cli remove -f hello-openfaas.yml

可以通过画面上的垃圾桶进行删除。

打掃

也许有更好的方法来打扫。

# サーバをダウンする
docker stack rm func
docker rm -f registry

# docker secret の削除
docker secret rm basic-auth-user
docker secret rm basic-auth-password

# docker image の削除
docker rmi localhost:5000/hello-openfaas

我所感受到的

听起来不错。
如果要构建系统,也许可以在 Kubernetes 的集群上搭建。
虽然我没搭建过 Kubernetes。
Fargate 上的 OpenFaaS?这很有意思。https://github.com/ewilde/faas-fargate
关于如何将官方 AWS 部署到 EKS? 我有兴趣。https://aws.amazon.com/jp/blogs/opensource/deploy-openfaas-aws-eks/

广告
将在 10 秒后关闭
bannerAds