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"