OpenFaaS on Azure (Swarm)
I explain about how to deploy OpenFaaS on Kubernetes on Azure. However, OpenFaaS supports Swarm as well. What is the most easy way to deploy it? Since the OpenFaaS requires docker ce for 17.05+, we can't use Azure Container Service. Instead, we can use Docker for Azure. It is the most easiest way to deploy 17.06+ swarm mode cluster on Azure, currently.
Let's deploy it.
Deploy Docker for Azure
Go to this site. You can deploy the cluster directly. Just click "Deploy Docker Community Edition for Azure (Stable)"
Deploy your app on Docker for Azure
Then you can see this page. You can edit the template if you like.
Connect to the Docker for Azure
After the deployment, you can find the externalSSHLoadBalancer which have an IP address to access the master nodes.
If you have three master nodes, then the SSH port will be 50000, 50001, and 50002. You can check it out on the externalSSHLoadBalancer > Inbound NAT Rules
You can tunnel it to deploy OpenFaaS. If the loadbalancer's IP is 13.93.211.68, then the command is like this. NOTE: the default user name is docker. not azureuser!
ssh -p 50000 -fNL localhost:2374:/var/run/docker.sock docker@13.93.211.68
export DOCKER_HOST=:2374
Deploy OpenFaaS
Just clone the OpenFaaS and deploy it.
git clone git@github.com:alexellis/faas.git
cd faas
./deploy-stack.sh
Finish. Then you can check it out. If the all nodes status is OK and replicas are not 0, then it works.
$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
19jwb8riabdtgbrgbhcaohv7v swarm-manager000002 Ready Active Leader
5r4cghmtsiyt96cfmzbeavhb5 * swarm-manager000000 Ready Active Reachable
guc9klap92wy9w393d4s29vir swarm-manager000001 Ready Active Reachable
ubwo378qzjq4pl45rrixusfa9 swarm-worker000000 Ready Active
xm12qzvwqyuspzcy3fs3o2a5f swarm-worker000001 Ready Active
$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
0z3nhuc3322r func_decodebase64 replicated 1/1 functions/alpine:health
5k222fmec6pb func_nodeinfo replicated 1/1 functions/nodeinfo:latest
6dscv6uctk8p func_hubstats replicated 1/1 functions/hubstats:latest
ki6r1w1f5cdm func_wordcount replicated 1/1 functions/alpine:health
mji9f788qktk func_gateway replicated 1/1 functions/gateway:0.6.3 *:8080->8080/tcp
mktgocot0uxq func_echoit replicated 1/1 functions/alpine:health
nz764gxdg99k func_prometheus replicated 1/1 functions/prometheus:latest *:9090->9090/tcp
u8s2kw7755q2 func_webhookstash replicated 1/1 functions/webhookstash:latest
ubbtcade7skw func_markdown replicated 1/1 alexellis2/faas-markdownrender:latest
xulsluhy3zvv func_alertmanager replicated 1/1 functions/alertmanager:latest *:9093->9093/tcp
yw7s4ut1xt99 func_base64 replicated 1/1 functions/alpine:health
Open the OpenFaaS potal
As you can see, All you need to do is find the externalLoadBalancer on the Resource Group, then access the URL with port 8080. You can refer OpenFaaS on ACS (Kubernetes) for seeing the faas-cli setting.