It is possible to run own serverless setup instead of using service like IBM Cloud Functions. Here is How to Install Apache OpenWhisk on Ubuntu 18.04 to Create Own FaaS Environment. This is single VM/server deployment of OpenWhisk. One easy way to try OpenWhisk locally is to use Docker Compose. We will need to install Python and couchdb for OpenWhisk. A cloud server with 8GB RAM should be sufficient to test OpenWhisk.
SSH to the cloud server instance, run :
1 2 3 | # apt update -y && apt upgrade -y # |
Install Git, Build Essentials, Python, pip etc dependencies :
---
1 2 3 | # apt install git python-pip python-setuptools build-essential libssl-dev libffi-dev python-dev software-properties-common # |
Install Ansible, change the version to latest :
1 2 3 | # sudo pip install ansible==2.1.2.0 # |
Install, configure and test Docker :
1 2 3 4 5 6 7 8 9 10 | curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt-get update sudo apt-get install -y docker-ce sudo vi /lib/systemd/system/docker.service ## change on the file ExecStart=/usr/bin/docker daemon -H fd:// -H tcp://0.0.0.0:4243 ### end edit sudo service docker restart curl http://Docker_host_IP:4243/version |
Install, configure and test CouchDB :
1 2 3 4 5 6 7 8 9 10 11 12 13 | sudo add-apt-repository ppa:couchdb/stable -y sudo apt-get update sudo apt-get install couchdb -y vi /etc/couchdb/default.ini ## edit bind_address = <Your IP> ## end edit sudo service couchdb stop sudo chown -R couchdb:couchdb /usr/share/couchdb /etc/couchdb /usr/bin/couchdb sudo chmod -R 0770 /usr/share/couchdb /etc/couchdb /usr/bin/couchdb sudo service couchdb start curl -X PUT <CouchDB IP>:5984/_config/admins/USERNAME -d '"PASSWORD"' curl -X PUT <CouchDB IP>:5984/_config/query_server_config/reduce_limit -d '"false"' -u USERNAME:PASSWORD |
Install, configure OpenWhisk :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | cd ~/ git clone https://github.com/openwhisk/openwhisk.git cd openwhisk/tools/ubuntu-setup sudo ./all.sh cd ~/openwhisk/ansible vi ~/openwhisk/ansible/env.sh ## Add export OW_DB=CouchDB export OW_DB_PROTOCOL=http export OW_DB_HOST=<the IP of your CouchDB server> export OW_DB_PORT=5984 export OW_DB_USERNAME=USERNAME export OW_DB_PASSWORD=PASSWORD ## end addition source env.sh # create in ~/openwhisk/absible vi ansible/db_local.ini ## Add [db_creds] db_provider=CouchDB db_username= db_password= db_protocol=http db_host= db_port=5984 ## end addition ## run commands ansible-playbook setup.yml ansible-playbook prereq.yml ## Build cd ~/openwhisk ./gradlew distDocker ## it will take half a hour mins to complete ## cd ~/openwhisk/ansible ## run ansible-playbook initdb.yml ansible-playbook wipe.yml ansible-playbook apigateway.yml ansible-playbook openwhisk.yml ansible-playbook postdeploy.yml ## update path variable PATH=~/openwhisk/bin:$PATH ## set wsk credentials wsk property set --apihost <openwhisk_baseurl> wsk property set --auth `cat ~/openwhisk/ansible/files/auth.guest |
Get web console credentials by :
1 | wsk property get --auth |
Webconsole URL will be like https://
. You will get additional installation guides on GitHub and Official OpenWhish website :
1 2 | https://github.com/apache/incubator-openwhisk/tree/master/tools/ubuntu-setup https://openwhisk.apache.org/ |