All Projects → apache → Openwhisk Apigateway

apache / Openwhisk Apigateway

Licence: apache-2.0
Apache OpenWhisk API Gateway service for exposing actions as REST interfaces.

Programming Languages

lua
6591 projects

Projects that are alternatives of or similar to Openwhisk Apigateway

Openwhisk Runtime Php
Apache OpenWhisk Runtime PHP supports Apache OpenWhisk functions written in PHP
Stars: ✭ 26 (-53.57%)
Mutual labels:  serverless, cloud, faas, serverless-functions, functions-as-a-service, serverless-architectures, apache
Openwhisk Runtime Nodejs
Apache OpenWhisk Runtime NodeJS supports Apache OpenWhisk functions written in JavaScript for NodeJS
Stars: ✭ 43 (-23.21%)
Mutual labels:  serverless, cloud, faas, serverless-functions, functions-as-a-service, serverless-architectures, apache
Openwhisk
Apache OpenWhisk is an open source serverless cloud platform
Stars: ✭ 5,499 (+9719.64%)
Mutual labels:  serverless, cloud, faas, serverless-functions, functions-as-a-service, serverless-architectures, apache
Openwhisk Deploy Kube
The Apache OpenWhisk Kubernetes Deployment repository supports deploying the Apache OpenWhisk system on Kubernetes and OpenShift clusters.
Stars: ✭ 231 (+312.5%)
Mutual labels:  serverless, cloud, faas, serverless-functions, functions-as-a-service, serverless-architectures, apache
openwhisk-runtime-go
Apache OpenWhisk Runtime Go supports Apache OpenWhisk functions written in Go
Stars: ✭ 31 (-44.64%)
Mutual labels:  apache, faas, serverless-functions, serverless-architectures, functions-as-a-service
openwhisk-runtime-docker
Apache OpenWhisk SDK for building Docker "blackbox" runtimes
Stars: ✭ 23 (-58.93%)
Mutual labels:  apache, faas, serverless-functions, serverless-architectures, functions-as-a-service
openwhisk-catalog
Curated catalog of Apache OpenWhisk packages to interface with event producers and consumers
Stars: ✭ 30 (-46.43%)
Mutual labels:  apache, faas, serverless-functions, serverless-architectures, functions-as-a-service
openwhisk-runtime-dotnet
Apache OpenWhisk Runtime .Net supports Apache OpenWhisk functions written in .Net languages
Stars: ✭ 23 (-58.93%)
Mutual labels:  apache, faas, serverless-functions, serverless-architectures, functions-as-a-service
openwhisk-package-kafka
Apache OpenWhisk package for communicating with Kafka or Message Hub
Stars: ✭ 35 (-37.5%)
Mutual labels:  apache, faas, serverless-functions, serverless-architectures, functions-as-a-service
openwhisk-runtime-python
Apache OpenWhisk Runtime Python supports Apache OpenWhisk functions written in Python
Stars: ✭ 39 (-30.36%)
Mutual labels:  apache, faas, serverless-functions, serverless-architectures, functions-as-a-service
Openwhisk Devtools
Development tools for building and deploying Apache OpenWhisk
Stars: ✭ 141 (+151.79%)
Mutual labels:  serverless, faas, serverless-functions, functions-as-a-service, apache
openwhisk-runtime-java
Apache OpenWhisk Runtime Java supports Apache OpenWhisk functions written in Java and other JVM-hosted languages
Stars: ✭ 43 (-23.21%)
Mutual labels:  apache, faas, serverless-functions, serverless-architectures, functions-as-a-service
Openwhisk Cli
Apache OpenWhisk Command Line Interface (CLI)
Stars: ✭ 73 (+30.36%)
Mutual labels:  serverless, faas, serverless-functions, functions-as-a-service, apache
Faas
OpenFaaS - Serverless Functions Made Simple
Stars: ✭ 20,820 (+37078.57%)
Mutual labels:  serverless, faas, serverless-functions, functions-as-a-service
Fission
Fast and Simple Serverless Functions for Kubernetes
Stars: ✭ 6,646 (+11767.86%)
Mutual labels:  serverless, faas, serverless-functions, functions-as-a-service
Jazz
Platform to develop and manage serverless applications at an enterprise scale!
Stars: ✭ 254 (+353.57%)
Mutual labels:  serverless, faas, functions-as-a-service, serverless-architectures
K8s On Raspbian
Kubernetes on Raspbian (Raspberry Pi)
Stars: ✭ 839 (+1398.21%)
Mutual labels:  serverless, cloud, faas
Awesome Serverless
DEPRECATED: Curated list of resources related to serverless computing and serverless architectures.
Stars: ✭ 2,049 (+3558.93%)
Mutual labels:  serverless, serverless-functions, serverless-architectures
Webiny Js
Enterprise open-source serverless CMS. Includes a headless CMS, page builder, form builder and file manager. Easy to customize and expand. Deploys to AWS.
Stars: ✭ 4,869 (+8594.64%)
Mutual labels:  serverless, cloud, serverless-architectures
Functional Typescript
TypeScript standard for rock solid serverless functions.
Stars: ✭ 600 (+971.43%)
Mutual labels:  serverless, faas, serverless-functions

OpenWhisk API Gateway

Build Status License

A performant API Gateway based on Openresty and NGINX.

Project status

This project is currently considered beta stage, Large swaths of code or APIs may change.

Table of Contents

Quick Start

docker run -p 80:80 -p <managedurl_port>:8080 -p 9000:9000 \
            -e PUBLIC_MANAGEDURL_HOST=<managedurl_host> \
            -e PUBLIC_MANAGEDURL_PORT=<managedurl_port> \
            -e REDIS_HOST=<redis_host> \
            -e REDIS_PORT=<redis_port> \
            -e REDIS_PASS=<redis_pass> \
            openwhisk/apigateway:latest

(Optional) The redis password can be passed in encrypted using the aes-256-cbc encryption algorithm. To do so, pass in the following environment variables, in addition to the encrypted password:

  • DECRYPT_REDIS_PASS=true
  • ENCRYPTION_KEY=<32 Byte hex string that was used for encryption>
  • ENCRYPTION_IV=<16 Byte hex string that was used for encryption>

API

Syncing configuration from a remote source

The Gateway can sync its configuration with a remote folder in the cloud such as Amazon S3, Google Cloud Storage, IBM Cloud Object Storage, Dropbox, and many others. The configuration is monitored for changes, and when a file is changed, the Gateway is reloaded automatically. This is very useful to gracefully update the Gateway on the fly, without impacting the active traffic; if the new configuration is invalid, the Gateway doesn't break, running with the last known valid configuration.

This feature is enabled by configuring a few environment variables:

  • REMOTE_CONFIG - the location where the configuration should be synced from. I.e. s3://api-gateway-config . The remote location is synced into is /etc/api-gateway. The default configuration is found in this project's root folder.
  • (optional) REMOTE_CONFIG_SYNC_INTERVAL - how often to check for changes in the remote location. The default value is 10s
  • (optional) REMOTE_CONFIG_RELOAD_CMD - which command to execute in order to reload the Gateway. The default value is: api-gateway -s reload

Syncing is done through rclone sync. rclone has a rich set of options such as what to exclude when syncing, or what to include. An important configuration is --config, pointing to the config file in /root/.config/rclone/rclone.conf. The Gateway should be started with /root/.config/rclone folder mounted so that rclone.conf is present. To generate a new rclone configuration simply execute:

docker run -ti --rm --entrypoint=rclone -v `pwd`/rclone/:/root/.config/rclone/ openwhisk/apigateway config

This runs an interactive rclone config command and stores the resulted configuration in ./rclone/rclone.conf file.

To test this locally, simulate a remote folder using a local location, by mounting it in /tmp folder as follows:

docker run -ti --rm -p 80:80 \
    -v `pwd`:/tmp/api-gateway-local -e REMOTE_CONFIG="/tmp/api-gateway-local" \
    -e REDIS_HOST=redis_host -e REDIS_PORT=redis_port openwhisk/apigateway

Then make changes to any configuration file ( i.e. api-gateway.conf ), save it, then watch as the Gateway reloads the updated configuration automatically.

Developer Guide

Running locally

To build the docker image locally use:

 make docker

To Run the Docker image

 make docker-run PUBLIC_MANAGEDURL_HOST=<mangedurl_host> PUBLIC_MANAGEDURL_PORT=<managedurl_port> \
   REDIS_HOST=<redis_host> REDIS_PORT=<redis_port> REDIS_PASS=<redis_pass>

Testing

To build the test image and run unit tests

 make test
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].