You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by cs...@apache.org on 2019/04/02 04:56:08 UTC
[incubator-openwhisk-devtools] branch master updated: adding
support for lean openwhisk setup (#220)
This is an automated email from the ASF dual-hosted git repository.
csantanapr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk-devtools.git
The following commit(s) were added to refs/heads/master by this push:
new 1e4cf0e adding support for lean openwhisk setup (#220)
1e4cf0e is described below
commit 1e4cf0e077e44b8f1d0a5debcd43e0b7a89aa024
Author: Pavel Kravchenko <kp...@il.ibm.com>
AuthorDate: Tue Apr 2 07:56:04 2019 +0300
adding support for lean openwhisk setup (#220)
---
docker-compose/Makefile | 24 +++++---
docker-compose/README.md | 8 +++
docker-compose/docker-compose-lean.yml | 107 +++++++++++++++++++++++++++++++++
3 files changed, 132 insertions(+), 7 deletions(-)
diff --git a/docker-compose/Makefile b/docker-compose/Makefile
index 033b329..ac9a4d4 100644
--- a/docker-compose/Makefile
+++ b/docker-compose/Makefile
@@ -26,6 +26,8 @@ WSK_CONFIG_FILE=$(CURDIR)/.wskprops
OPEN_WHISK_DB_PREFIX ?= local_
DOCKER_KERNEL ?= $(shell docker version --format "{{.Server.KernelVersion}}")
+DOCKER_COMPOSE_FILE=docker-compose.yml
+
ifeq ("$(UNAME_STR)","Linux")
DOCKER_BINARY ?= $(shell (which docker))
else
@@ -41,6 +43,9 @@ endif
# 3. it runs a sample hello-world function
# To stop and cleanup the environment use: make destroy
+lean: DOCKER_COMPOSE_FILE=docker-compose-lean.yml
+lean: download-src download-cli docker-pull-lean run hello-world quick-start-info
+
quick-start: download-src download-cli docker-pull run quick-start-pause hello-world quick-start-info
add-catalog: download-catalog init-catalog
@@ -104,14 +109,17 @@ docker-build:
cd $(OPENWHISK_PROJECT_HOME) && \
./gradlew distDocker -PdockerImagePrefix=$(DOCKER_IMAGE_PREFIX)
-.PHONY: docker-pull
-docker-pull:
- echo "pulling the docker images short list... "
+.PHONY: docker-pull-lean
+docker-pull-lean:
docker pull $(DOCKER_IMAGE_PREFIX)/controller
- docker pull $(DOCKER_IMAGE_PREFIX)/invoker
docker pull $(DOCKER_IMAGE_PREFIX)/nodejs6action
docker pull $(DOCKER_IMAGE_PREFIX)/dockerskeleton
+.PHONY: docker-pull
+docker-pull: docker-pull-lean
+ echo "pulling the docker images short list... "
+ docker pull $(DOCKER_IMAGE_PREFIX)/invoker
+
.PHONY: docker-pull-full
docker-pull-full:
echo "pulling the docker images full list ... "
@@ -213,6 +221,8 @@ setup:
mkdir -p ~/tmp/openwhisk/minio
cp -r ./apigateway/* ~/tmp/openwhisk/api-gateway-config/api-gateway/
cp -r ./apigateway/rclone ~/tmp/openwhisk
+
+
$(shell cat ~/tmp/openwhisk/local.env) docker-compose --project-name openwhisk up minio 2>&1 > ~/tmp/openwhisk/setup.log &
echo "pinging minio..."
until (curl --silent http://$(DOCKER_HOST_IP):9001/ > /dev/null); do printf '.'; sleep 5; done
@@ -259,7 +269,7 @@ restart-invoker:
.PHONY: start-docker-compose
start-docker-compose:
- $(shell cat ~/tmp/openwhisk/local.env) docker-compose --project-name openwhisk up --abort-on-container-exit 2>&1 > ~/tmp/openwhisk/docker-compose.log &
+ $(shell cat ~/tmp/openwhisk/local.env) docker-compose --project-name openwhisk -f $(DOCKER_COMPOSE_FILE) up --abort-on-container-exit 2>&1 > ~/tmp/openwhisk/docker-compose.log &
.PHONY: wait-for-docker-compose-up
wait-for-docker-compose-up:
@@ -268,7 +278,7 @@ wait-for-docker-compose-up:
@trycount=0; \
trycounttimeout=30; \
up=`$(shell cat ~/tmp/openwhisk/local.env) docker-compose --project-name openwhisk ps | grep Up -c`; \
- servicescount=`$(shell cat ~/tmp/openwhisk/local.env) docker-compose config --services | wc -l | xargs`; \
+ servicescount=`$(shell cat ~/tmp/openwhisk/local.env) docker-compose -f $(DOCKER_COMPOSE_FILE) config --services | wc -l | xargs`; \
docker_ps() { \
docker ps --format 'table {{.Image}}\t{{.Status}}' --filter "label=com.docker.compose.project=openwhisk" -a; \
}; \
@@ -352,7 +362,7 @@ init-catalog:
.PHONY: destroy
destroy: stop rm
echo "cleaning other OpenWhisk containers started by the invoker ... "
- docker ps | grep whisk | awk '{print $$1}' | xargs docker stop | xargs docker rm
+ -docker ps | grep whisk | awk '{print $$1}' | xargs docker stop | xargs docker rm
echo "cleaning dangling docker volumes ... "
docker volume ls -qf dangling=true | xargs docker volume rm
if [ "$(UNAME_STR)" = "Linux" ]; then \
diff --git a/docker-compose/README.md b/docker-compose/README.md
index cfabb8a..f2ac189 100644
--- a/docker-compose/README.md
+++ b/docker-compose/README.md
@@ -252,3 +252,11 @@ These 2 variable allow you to execute a JS action using the container `registry.
By default this setup uses published images for controller and invokers from `openwhisk` namespace i.e.
`openwhisk/controller` and `openwhisk/invoker`. To make use of locally build images you can use `DOCKER_IMAGE_PREFIX`
variable i.e. `DOCKER_IMAGE_PREFIX=whisk make quick-start`
+
+## Lean setup
+
+To have a lean setup (no Kafka, Zookeeper and no Invokers as separate entities):
+
+```bash
+make lean
+```
diff --git a/docker-compose/docker-compose-lean.yml b/docker-compose/docker-compose-lean.yml
new file mode 100644
index 0000000..addb478
--- /dev/null
+++ b/docker-compose/docker-compose-lean.yml
@@ -0,0 +1,107 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more contributor
+# license agreements; and to You under the Apache License, Version 2.0.
+version: '3'
+services:
+ db:
+ image: apache/couchdb:2.1
+ ports:
+ - "5984:5984"
+ environment:
+ COUCHDB_USER: whisk_admin
+ COUCHDB_PASSWORD: some_passw0rd
+ volumes:
+ - ~/tmp/openwhisk/couchdb:/usr/local/var/lib/couchdb:rw
+
+ # WHISK CONTROLLER
+ controller:
+ image: ${DOCKER_IMAGE_PREFIX:-openwhisk}/controller
+ command: /bin/sh -c "exec /init.sh 0 >> /home/owuser/controller-local_logs.log 2>&1"
+ privileged: true
+ pid: "host"
+ userns_mode: "host"
+ links:
+ - db:db.docker
+ depends_on:
+ - db
+ env_file:
+ - ./docker-whisk-controller.env # env vars shared
+ - ~/tmp/openwhisk/local.env # generated during make setup
+ environment:
+ COMPONENT_NAME: controller
+ PORT: 8888
+
+ CONFIG_whisk_couchdb_provider: CouchDB
+ CONFIG_whisk_couchdb_protocol: http
+ CONFIG_whisk_couchdb_port: 5984
+ CONFIG_whisk_couchdb_host: db.docker
+ CONFIG_whisk_couchdb_username: whisk_admin
+ CONFIG_whisk_couchdb_password: some_passw0rd
+
+ CONFIG_akka_actor_provider: local
+
+ LOADBALANCER_HOST: ${DOCKER_COMPOSE_HOST}
+ LOADBALANCER_HOST_PORT: 443
+
+ #invoker env
+ EDGE_HOST: ${DOCKER_COMPOSE_HOST}
+ EDGE_HOST_APIPORT: 443
+ CONFIG_whisk_containerFactory_containerArgs_network: openwhisk_default
+ WHISK_API_HOST_NAME: ${DOCKER_COMPOSE_HOST}
+
+ #required by lean controller
+ CONFIG_whisk_spi_MessagingProvider: org.apache.openwhisk.connector.lean.LeanMessagingProvider
+ CONFIG_whisk_spi_LoadBalancerProvider: org.apache.openwhisk.core.loadBalancer.LeanBalancer
+ volumes:
+ - ~/tmp/openwhisk/controller/logs:/logs
+ - /var/run/docker.sock:/var/run/docker.sock
+ - /var/lib/docker/containers:/containers
+ - /sys/fs/cgroup:/sys/fs/cgroup
+ ports:
+ - "8888:8888"
+ - "9222:9222"
+
+ # The API Gateway is currently used to expose the Controller API
+ # see apigateway/conf/whisk-docker-compose.conf
+ # Minio is used to mock an object storage ( i.e. S3) that hosts the api-gateway configuration.
+ # Minio also exposes a web UI to browse the files: http://localhost:9001/minio/api-gateway/
+ minio:
+ image: minio/minio:RELEASE.2018-07-13T00-09-07Z
+ command:
+ - server
+ - /data
+ environment:
+ - MINIO_ACCESS_KEY=5VCTEQOQ0GR0NV1T67GN
+ - MINIO_SECRET_KEY=8MBK5aJTR330V1sohz4n1i7W5Wv/jzahARNHUzi3
+ volumes:
+ - ~/tmp/openwhisk/minio:/data:rw
+ ports:
+ - "9001:9000"
+ redis:
+ image: redis:2.8
+ ports:
+ - "6379:6379"
+ apigateway:
+ image: openwhisk/apigateway:latest
+ links:
+ - controller:whisk.controller
+ - redis:redis.docker
+ - minio:minio.docker
+ environment:
+ - REDIS_HOST=${DOCKER_COMPOSE_HOST}
+ - REDIS_PORT=6379
+ - PUBLIC_MANAGEDURL_PORT=9090
+ - PUBLIC_MANAGEDURL_HOST=${DOCKER_COMPOSE_HOST}
+ - REMOTE_CONFIG=minio:api-gateway
+ depends_on:
+ - controller
+ - redis
+ - minio
+ volumes:
+ - ~/tmp/openwhisk/api-gateway-ssl:/etc/ssl:ro
+ - ~/tmp/openwhisk/api-gateway-config/api-gateway/generated-conf.d:/etc/api-gateway/generated-conf.d
+ - ~/tmp/openwhisk/rclone:/root/.config/rclone:rw
+ ports:
+ - "80:80"
+ - "443:443"
+ - "9000:9000"
+ - "9090:8080"