去年八月单起,我寫(xiě)了一篇文章,展示了如何在5分鐘內(nèi)使用Kubernetes或Docker Swarm在DigitalOcean上設(shè)置OpenFaaS尝盼。本周,DigitalOcean與OpenFaaS社區(qū)之間的合作達(dá)到了頂峰辱揭,這使得OpenFaaS一鍵式Droplet圖像得以普遍提供。這使得通過(guò)DigitalOcean以最具成本效益的方式部署OpenFaaS變得更加容易病附。
現(xiàn)在问窃,我們有三種方法有據(jù)可查,可以在DigitalOcean的基礎(chǔ)架構(gòu)上為您的團(tuán)隊(duì)設(shè)置OpenFaaS:
- 將OpenFaaS部署到DigitalOcean的Kubernetes服務(wù)(DOKS)
- 通過(guò)Kubernetes或Swarm與Ansible一起部署OpenFaaS
- 使用今天可用的新的一鍵式Droplet圖像(本文)
在這篇文章中完沪,我們將指導(dǎo)您使用一鍵式Droplet映像創(chuàng)建第一個(gè)OpenFaaS函數(shù)域庇,該映像使用單節(jié)點(diǎn)Docker Swarm集群。
先決條件
- DigitalOcean帳戶(hù)
- OpenFaaS CLI
現(xiàn)在覆积,OpenFaaS CLI(或faas-cli
)是OpenFaaS開(kāi)發(fā)人員經(jīng)驗(yàn)的核心部分听皿,我們的用戶(hù)在本地及其CI作業(yè)中運(yùn)行它。我們將使用它來(lái)創(chuàng)建功能并將其部署到您的一鍵式Droplet上宽档。OpenFaaS文檔提供了獲取CLI所需的所有詳細(xì)信息尉姨。
創(chuàng)建Droplet
訪(fǎng)問(wèn)您的Droplet
準(zhǔn)備好Droplet后,它將顯示在DigitalOcean資源窗格內(nèi)的Droplet列表中吗冤。
復(fù)制IP地址又厉,然后使用您喜歡的終端登錄到Droplet,使用 root@<IP address>
注意:請(qǐng)確保您已為正在使用的客戶(hù)端提供了適當(dāng)?shù)乃借€椎瘟。
登錄后覆致,請(qǐng)按照說(shuō)明進(jìn)行操作;在撰寫(xiě)本文時(shí)肺蔚,只需按Enter煌妈。
將為您執(zhí)行許多配置操作,結(jié)果將是運(yùn)行中的基于Swarm的OpenFaaS實(shí)例婆排。記下憑據(jù)-特別是最后一行將設(shè)置憑據(jù)的行faas-cli-在部署功能時(shí)將需要此憑據(jù)∩現(xiàn)在,我們可以關(guān)閉與Droplet的連接段只。
在本地計(jì)算機(jī)上設(shè)置OPENFAAS_URL:
$ export OPENFAAS_URL=http://159.65.92.17:8080
要保留此設(shè)置,請(qǐng)將其添加到您的.bashrc文件或中.bash_profile鉴扫。
運(yùn)行CLI登錄命令:
echo -n 6acf4e5dc4997530666fece7be3e15e5a1b7ba9572163aa2beb8ff9449ee1911 | faas-cli login --username=admin --password-stdin
當(dāng)我們將功能部署到Droplet時(shí)赞枕,這將節(jié)省我們的時(shí)間和精力。
創(chuàng)建一個(gè)功能
我們將創(chuàng)建一個(gè)簡(jiǎn)單的Python函數(shù)坪创,該函數(shù)在調(diào)用時(shí)將回顯字符串炕婶。
- 為我們的功能創(chuàng)建一個(gè)工作區(qū):
$ mkdir -p ~/openfaas/functions/ && cd ~/openfaas/functions/
-
hello-digitalocean
使用CLI 創(chuàng)建一個(gè)稱(chēng)為的函數(shù):
將
rgee0
前綴替換為您自己的Docker Hub帳戶(hù)名,以啟用后續(xù)push
操作莱预。
$ faas-cli new --lang=python3 --prefix=rgee0 hello-digitalocean
faas-cli new --lang=python3 --prefix=rgee0 hello-digitalocean
2019/02/02 11:42:08 No templates found in current directory.
2019/02/02 11:42:08 Attempting to expand templates from https://github.com/openfaas/templates.git
2019/02/02 11:42:10 Fetched 15 template(s) : [csharp csharp-armhf dockerfile go go-armhf java8 node node-arm64 node-armhf php7 python python-armhf python3 python3-armhf ruby] from https://github.com/openfaas/templates.git
Folder: hello-digitalocean created.
___ _____ ____
/ _ \ _ __ ___ _ __ | ___|_ _ __ _/ ___|
| | | | '_ \ / _ \ '_ \| |_ / _` |/ _` \___ \
| |_| | |_) | __/ | | | _| (_| | (_| |___) |
\___/| .__/ \___|_| |_|_| \__,_|\__,_|____/
|_|
Function created in folder: hello-digitalocean
Stack file written: hello-digitalocean.yml
- 重命名
hello-digitalocean.yml
為stack.yml
:
$ mv hello-digitalocean.yml stack.yml
- 編輯
hello-digitalocean/handler.py
以添加我們函數(shù)的代碼:
def handle(req):
"""handle a request to the function
Args:
req (str): request body
"""
return 'Hello from OpenFaaS on DigitalOcean!'
- 保存處理程序并運(yùn)行
faas-cli up
以構(gòu)建柠掂,推送和部署:
$ faas-cli up
[0] > Building hello-digitalocean.
Clearing temporary build folder: ./build/hello-digitalocean/
Preparing ./hello-digitalocean/ ./build/hello-digitalocean/function
Building: rgee0/hello-digitalocean:latest with python template. Please wait..
Sending build context to Docker daemon 8.192kB
Step 1/25 : FROM python:2.7-alpine
...
Successfully built 724a2e96754b
Successfully tagged rgee0/hello-digitalocean:latest
Image: rgee0/hello-digitalocean:latest built.
[0] < Building hello-digitalocean done.
[0] worker done.
[0] > Pushing hello-digitalocean [rgee0/hello-digitalocean:latest].
The push refers to repository [docker.io/rgee0/hello-digitalocean]
...
latest: digest: sha256:03ec049a59bd784a152ca3df8fcdffd97ab0dcb4392e0c2811ee5dcb4180ca2d size: 3655
[0] < Pushing hello-digitalocean [rgee0/hello-digitalocean:latest] done.
[0] worker done.
Deploying: hello-digitalocean.
Deployed. 202 Accepted.
URL: http://159.65.92.17:8080/function/hello-digitalocean
正如我們先前將CLI登錄到我們的Droplet并設(shè)置一樣
OPENFAAS_URL
,CLI將無(wú)縫地以Droplet為目標(biāo)依沮。為了推送到Docker Hub涯贞,您還需要在此登錄到您的帳戶(hù)枪狂。
- 使用以下命令調(diào)用功能
faas-cli
:
$ echo '' | faas-cli invoke hello-digitalocean
Hello from OpenFaaS on DigitalOcean!
通過(guò)訪(fǎng)問(wèn)訪(fǎng)問(wèn)UI以查看已部署的功能http://159.65.92.17:8080/ui/
。您需要以前的憑據(jù)才能訪(fǎng)問(wèn)該網(wǎng)站宋渔。
從這里您還可以調(diào)用函數(shù)-只需單擊invoke按鈕州疾;您會(huì)注意到調(diào)用計(jì)數(shù)隨您的增加而增加。您還可以通過(guò)OpenFaaS商店從一組現(xiàn)成的功能中進(jìn)行部署-單擊Deploy New Function
以查看可用功能皇拣。
包起來(lái)
我們已經(jīng)開(kāi)始使用DigitalOcean的OpenFaaS一鍵式應(yīng)用程序創(chuàng)建函數(shù)的第一步严蓖。內(nèi)置配置創(chuàng)建了一個(gè)基于Docker Swarm的可公開(kāi)訪(fǎng)問(wèn)的實(shí)例,默認(rèn)情況下啟用了基本身份驗(yàn)證氧急。我們已經(jīng)研究了如何通過(guò)設(shè)置來(lái)使用OpenFaaS CLI構(gòu)建功能并將其部署到遠(yuǎn)程實(shí)例OPENFAAS_URL
颗胡。
這是快速入門(mén)OpenFaaS的良好起點(diǎn)。實(shí)例啟動(dòng)并運(yùn)行后吩坝,您可以理想地通過(guò)OpenFaaS Workshop進(jìn)行工作毒姨。如果您已完全按照本文進(jìn)行操作,那么您應(yīng)該可以直接跳至實(shí)驗(yàn)2-記住將所有研討會(huì)參考資料替換127.0.0.1
為Droplet的IP地址钾恢。