You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by ra...@apache.org on 2018/01/04 23:04:40 UTC

[incubator-openwhisk-deploy-kube] branch master updated: controller/invoker configuration cleanup (#138)

This is an automated email from the ASF dual-hosted git repository.

rabbah pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk-deploy-kube.git


The following commit(s) were added to refs/heads/master by this push:
     new e7bd0b3  controller/invoker configuration cleanup (#138)
e7bd0b3 is described below

commit e7bd0b3e63c99dbb9e10f708c3b37480258808c3
Author: David Grove <dg...@users.noreply.github.com>
AuthorDate: Thu Jan 4 18:04:38 2018 -0500

    controller/invoker configuration cleanup (#138)
    
    1. get runtimesManifest from configmap
    2. specify action/trigger limits in configmap
    3. put all misc. deployment-configurable parameters
       into configmaps
    4. eliminate obsolete environment variables from invoker/controller.yml
---
 README.md                                        |   2 +-
 kubernetes/cluster-setup/README.md               |  29 +++++
 kubernetes/cluster-setup/config.env              |   5 +
 kubernetes/cluster-setup/limits.env              |   5 +
 kubernetes/cluster-setup/runtimes.json           | 111 ++++++++++++++++
 kubernetes/controller/README.md                  |  33 +++--
 kubernetes/controller/controller.env             |   2 +
 kubernetes/controller/controller.yml             | 145 ++++++++++++---------
 kubernetes/invoker/README.md                     |  17 ++-
 kubernetes/invoker/invoker.env                   |   8 ++
 kubernetes/invoker/invoker.yml                   | 154 +++++++++++------------
 kubernetes/openwhisk-catalog/install-catalog.yml |   5 +-
 kubernetes/routemgmt/install-routemgmt.yml       |  10 +-
 tools/travis/build.sh                            |   5 +
 14 files changed, 376 insertions(+), 155 deletions(-)

diff --git a/README.md b/README.md
index 770bc7e..8c61783 100644
--- a/README.md
+++ b/README.md
@@ -29,7 +29,7 @@ Several requirements must be met for OpenWhisk to deploy on Kubernetes.
 ## Using Minikube
 
 For local development and testing, we recommend using Minikube version 0.23+
-with the docker network in promiscuous mode. Our Travis CI testing using Minikube 0.23.0.
+with the docker network in promiscuous mode. Our Travis CI testing uses Minikube 0.23.0.
 Take a look at these [instructions](/docs/setting_up_minikube/README.md).
 
 ## Using a Kubernetes cluster from a cloud provider
diff --git a/kubernetes/cluster-setup/README.md b/kubernetes/cluster-setup/README.md
index d44adbf..45d27e9 100644
--- a/kubernetes/cluster-setup/README.md
+++ b/kubernetes/cluster-setup/README.md
@@ -20,6 +20,35 @@ kubectl apply -f namespace.yml
 kubectl apply -f services.yml
 ```
 
+### Configure system-wide version information and settings
+
+Edit whisk.env as needed to set the appropriate values for your
+deployment, then create the configmap whisk.config:
+
+```
+kubectl -n openwhisk create cm whisk.config --from-env-file=config.env
+```
+
+### Configure the set of supported runtimes
+
+The file runtimes.json describes the supported action runtimes for
+this installation of OpenWhisk.  The default file is identical to the
+one found in the upstream ansible/files/runtime.json.  After making
+any desired changes, install it in a configmap with
+
+```
+kubectl -n openwhisk create cm whisk.runtimes --from-file=runtimes=runtimes.json
+```
+
+### Configure limits for actions and triggers
+
+Edit limits.env as needed to set the appropriate values for your
+deployment, then create the configmap whisk.limits:
+
+```
+kubectl -n openwhisk create cm whisk.limits --from-env-file=limits.env
+```
+
 ### Create authorization secrets
 
 The command below installs the default guest and system authorization
diff --git a/kubernetes/cluster-setup/config.env b/kubernetes/cluster-setup/config.env
new file mode 100644
index 0000000..1de7a56
--- /dev/null
+++ b/kubernetes/cluster-setup/config.env
@@ -0,0 +1,5 @@
+whisk_version_name=OpenWhisk
+whisk_version_date=2018-01-01T00:00:00Z
+whisk_version_tag=latest
+whisk_cli_version_tag=latest
+whisk_system_namespace=/whisk.system
diff --git a/kubernetes/cluster-setup/limits.env b/kubernetes/cluster-setup/limits.env
new file mode 100644
index 0000000..87f319f
--- /dev/null
+++ b/kubernetes/cluster-setup/limits.env
@@ -0,0 +1,5 @@
+actions_invokes_perMinute=60
+actions_invokes_concurrent=30
+actions_invokes_concurrentInSystem=5000
+actions_sequence_maxLength=50
+triggers_fires_perMinute=60
diff --git a/kubernetes/cluster-setup/runtimes.json b/kubernetes/cluster-setup/runtimes.json
new file mode 100644
index 0000000..8030fa2
--- /dev/null
+++ b/kubernetes/cluster-setup/runtimes.json
@@ -0,0 +1,111 @@
+{
+    "bypassPullForLocalImages": false,
+    "defaultImagePrefix": "openwhisk",
+    "defaultImageTag": "latest",
+    "runtimes": {
+        "nodejs": [
+            {
+                "kind": "nodejs",
+                "image": {
+                    "name": "nodejsaction"
+                },
+                "deprecated": true
+            },
+            {
+                "kind": "nodejs:6",
+                "default": true,
+                "image": {
+                    "name": "nodejs6action"
+                },
+                "deprecated": false
+            },
+            {
+                "kind": "nodejs:8",
+                "default": false,
+                "image": {
+                    "name": "action-nodejs-v8"
+                },
+                "deprecated": false
+            }
+        ],
+        "python": [
+            {
+                "kind": "python",
+                "image": {
+                    "name": "python2action"
+                },
+                "deprecated": false
+            },
+            {
+                "kind": "python:2",
+                "default": true,
+                "image": {
+                    "name": "python2action"
+                },
+                "deprecated": false
+            },
+            {
+                "kind": "python:3",
+                "image": {
+                    "name": "python3action"
+                },
+                "deprecated": false
+            }
+        ],
+        "swift": [
+            {
+                "kind": "swift",
+                "image": {
+                    "name": "swiftaction"
+                },
+                "deprecated": true
+            },
+            {
+                "kind": "swift:3",
+                "image": {
+                    "name": "swift3action"
+                },
+                "deprecated": true
+            },
+            {
+                "kind": "swift:3.1.1",
+                "default": true,
+                "image": {
+                    "name": "action-swift-v3.1.1"
+                },
+                "deprecated": false
+            }
+        ],
+        "java": [
+            {
+                "kind": "java",
+                "default": true,
+                "image": {
+                    "name": "java8action"
+                },
+                "deprecated": false,
+                "attached": {
+                    "attachmentName": "jarfile",
+                    "attachmentType": "application/java-archive"
+                },
+                "sentinelledLogs": false,
+                "requireMain": true
+            }
+        ],
+        "php": [
+            {
+                "kind": "php:7.1",
+                "default": true,
+                "deprecated": false,
+                "image": {
+                    "name": "action-php-v7.1"
+                }
+            }
+        ]
+    },
+    "blackboxes": [
+        {
+            "name": "dockerskeleton"
+        }
+    ]
+}
diff --git a/kubernetes/controller/README.md b/kubernetes/controller/README.md
index db0505c..c4a06e8 100644
--- a/kubernetes/controller/README.md
+++ b/kubernetes/controller/README.md
@@ -3,22 +3,35 @@ Controller
 
 # Deploying
 
-When deploying the Controller, it needs to be deployed via a
-[StatefulSet][StatefulSet]. This is because each Controller
-instance needs to know which index it is. The Controller
-can be deployed with:
+## Create config map
+
+Edit controller.env as needed to set the appropriate values for your
+deployment, then create the configmap controller.config:
+
+```
+kubectl -n openwhisk create cm controller.config --from-env-file=controller.env
+```
+
+## Deploy Controller
+
+The Controller is deployed as a [StatefulSet][StatefulSet] because
+each instance needs to know which index it is and we need stable pod
+names to support Akka clustering. The Controller can be deployed with:
 
 ```
 kubectl apply -f controller.yml
 ```
 
 # Controller Deployment Changes
-## Increase Controller Count
+## Changing the Controller Count
 
-You will need to update the number of replicas for the
-Controllers [here](https://github.com/apache/incubator-openwhisk-deploy-kube/tree/master/kubernetes/controller/controller.yml#L10)
-and the value of CONTROLLER_INSTANCES [here](https://github.com/apache/incubator-openwhisk-deploy-kube/tree/master/kubernetes/controller/controller.yml#L60)
-and the value of AKKA_CLUSTER_SEED_NODES [here](https://github.com/apache/incubator-openwhisk-deploy-kube/tree/master/kubernetes/controller/controller.yml#L88)
-and redeploy.
+Changing the number of controllers currently requires a complete
+redeployment of the controller stateful set. You will need to update
+the number of replicas
+[here](https://github.com/apache/incubator-openwhisk-deploy-kube/tree/master/kubernetes/controller/controller.yml#L10)
+and the values of the various variables for controller HA and Akka
+clustering
+[here](https://github.com/apache/incubator-openwhisk-deploy-kube/tree/master/kubernetes/controller/controller.yml#L30-L39)
+and then redeploy.
 
 [StatefulSet]: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/
diff --git a/kubernetes/controller/controller.env b/kubernetes/controller/controller.env
new file mode 100644
index 0000000..4f79daa
--- /dev/null
+++ b/kubernetes/controller/controller.env
@@ -0,0 +1,2 @@
+java_opts=-Xmx2g
+controller_opts=
diff --git a/kubernetes/controller/controller.yml b/kubernetes/controller/controller.yml
index e111f2e..48dd41e 100644
--- a/kubernetes/controller/controller.yml
+++ b/kubernetes/controller/controller.yml
@@ -24,71 +24,89 @@ spec:
         ports:
         - name: controller
           containerPort: 8080
-        livenessProbe:
-          httpGet:
-            path: "/ping"
-            port: 8080
-            scheme: "HTTP"
-          initialDelaySeconds: 5
-          periodSeconds: 10
-          timeoutSeconds: 1
         env:
-        - name: "PORT"
-          value: "8080"
+        # Properties for controller HA configuration
+        # Must change these if changing number of replicas
+        - name: "CONTROLLER_LOCALBOOKKEEPING"
+          value: "FALSE"
+        - name: "CONTROLLER_HA"
+          value: "TRUE"
+        - name: "CONTROLLER_INSTANCES"
+          value: "2"
+        - name: "AKKA_CLUSTER_SEED_NODES"
+          value: "controller-0.controller.openwhisk controller-1.controller.openwhisk"
+        - name: "CONFIG_akka_actor_provider"
+          value: "cluster"
 
-        # This needs to stay up to date with the lates runtime in Ansible Groupvars
+        # extra JVM arguments
+        - name: "JAVA_OPTS"
+          valueFrom:
+            configMapKeyRef:
+              name: controller.config
+              key: java_opts
+
+        # extra controller arguments
+        - name: "CONTROLLER_OPTS"
+          valueFrom:
+            configMapKeyRef:
+              name: controller.config
+              key: controller_opts
+
+        # action runtimes
         - name: "RUNTIMES_MANIFEST"
-          value: '{ "defaultImagePrefix": "openwhisk", "defaultImageTag": "latest", "runtimes": { "nodejs": [ { "kind": "nodejs", "image": { "name": "nodejsaction" }, "deprecated": true }, { "kind": "nodejs:6", "default": true, "image": { "name": "nodejs6action" }, "deprecated": false } ], "python": [ { "kind": "python", "image": { "name": "python2action" }, "deprecated": false }, { "kind": "python:2", "default": true, "image": { "name": "python2action" }, "deprecated": false }, { "kind" [...]
+          valueFrom:
+            configMapKeyRef:
+              name: whisk.runtimes
+              key: runtimes
 
-        # this version is the day it is deployed and should be configured every time
+        # deployment version information
+        - name:  "WHISK_VERSION_NAME"
+          valueFrom:
+            configMapKeyRef:
+              name: whisk.config
+              key: whisk_version_name
         - name:  "WHISK_VERSION_DATE"
-          value: "2017-01-01T00:00:00Z"
-        # the buildno should be the docker image tag to use
+          valueFrom:
+            configMapKeyRef:
+              name: whisk.config
+              key: whisk_version_date
         - name: "WHISK_VERSION_BUILDNO"
-          value: "latest"
+          valueFrom:
+            configMapKeyRef:
+              name: whisk.config
+              key: whisk_version_tag
 
-        # Java options
-        - name: "JAVA_OPTS"
-          value: "-Xmx2g"
+        # specify limits
+        - name: "LIMITS_ACTIONS_INVOKES_PERMINUTE"
+          valueFrom:
+            configMapKeyRef:
+              name: whisk.limits
+              key: actions_invokes_perMinute
+        - name: "LIMITS_ACTIONS_INVOKES_CONCURRENT"
+          valueFrom:
+            configMapKeyRef:
+              name: whisk.limits
+              key: actions_invokes_concurrent
+        - name: "LIMITS_ACTIONS_INVOKES_CONCURRENTINSYSTEM"
+          valueFrom:
+            configMapKeyRef:
+              name: whisk.limits
+              key: actions_invokes_concurrentInSystem
+        - name: "LIMITS_TRIGGERS_FIRES_PERMINUTE"
+          valueFrom:
+            configMapKeyRef:
+              name: whisk.limits
+              key: triggers_fires_perMinute
+        - name: "LIMITS_ACTIONS_SEQUENCE_MAXLENGTH"
+          valueFrom:
+            configMapKeyRef:
+              name: whisk.limits
+              key: actions_sequence_maxLength
 
-        # Kafka properties
+        # properties for Kafka connection
         - name: "KAFKA_HOSTS"
           value: "$(KAFKA_SERVICE_HOST):$(KAFKA_SERVICE_PORT_KAFKA)"
 
-        # specific controller arguments
-        - name: "CONTROLLER_INSTANCES"
-          value: "2"
-        - name: "CONTROLLER_OPTS"
-          value: ""
-        - name: "DEFAULTLIMITS_ACTIONS_INVOKES_PERMINUTE"
-          value: "120"
-        - name: "DEFAULTLIMITS_ACTIONS_INVOKES_CONCURRENT"
-          value: "100"
-        - name: "DEFAULTLIMITS_ACTIONS_INVOKES_CONCURRENTINSYSTEM"
-          value: "500"
-        - name: "DEFAULTLIMITS_ACTIONS_SEQUENCE_MAXLENGTH"
-          value: "50"
-        - name: "DEFAULTLIMITS_TRIGGERS_FIRES_PERMINUTE"
-          value: "60"
-        - name: "LIMITS_ACTIONS_SEQUENCE_MAXLENGTH"
-          value: "50"
-        - name: "LIMITS_TRIGGERS_FIRES_PERMINUTE"
-          value: "60"
-        - name: "LIMITS_ACTIONS_INVOKES_PERMINUTE"
-          value: "60"
-        - name: "LIMITS_ACTIONS_INVOKES_CONCURRENTINSYSTEM"
-          value: "5000"
-        - name: "LIMITS_ACTIONS_INVOKES_CONCURRENT"
-          value: "30"
-        - name: "CONTROLLER_LOCALBOOKKEEPING"
-          value: "FALSE"
-        - name: "CONTROLLER_HA"
-          value: "TRUE"
-        - name: "AKKA_CLUSTER_SEED_NODES"
-          value: "controller-0.controller.openwhisk controller-1.controller.openwhisk"
-        - name: "CONFIG_akka_actor_provider"
-          value: "cluster"
-
         # properties for DB connection
         - name: "DB_USERNAME"
           valueFrom:
@@ -114,12 +132,6 @@ spec:
             configMapKeyRef:
               name: db.config
               key: db_provider
-        - name: "DB_WHISK_ACTIONS_DDOC"
-          value: "whisks.v2"
-        - name: "DB_WHISK_ACTIVATIONS_DDOC"
-          value: "whisks.v2"
-        - name: "DB_WHISK_ACTIVATIONS_FILTER_DDOC"
-          value: "whisks-filters.v2"
         - name: "DB_WHISK_ACTIVATIONS"
           valueFrom:
             configMapKeyRef:
@@ -135,3 +147,16 @@ spec:
             configMapKeyRef:
               name: db.config
               key: db_whisk_auths
+
+        # must match port used in livenessProbe below
+        - name: "PORT"
+          value: "8080"
+
+        livenessProbe:
+          httpGet:
+            path: "/ping"
+            port: 8080
+            scheme: "HTTP"
+          initialDelaySeconds: 5
+          periodSeconds: 10
+          timeoutSeconds: 1
diff --git a/kubernetes/invoker/README.md b/kubernetes/invoker/README.md
index ee1c7a7..3632b84 100644
--- a/kubernetes/invoker/README.md
+++ b/kubernetes/invoker/README.md
@@ -3,6 +3,17 @@ Invoker
 
 # Deploying
 
+## Create config map
+
+Edit invoker.env as needed to set the appropriate values for your
+deployment, then create the configmap invoker.config:
+
+```
+kubectl -n openwhisk create cm invoker.config --from-env-file=invoker.env
+```
+
+## Deploy Invoker
+
 When deploying the Invoker, it needs to be deployed via a
 [DaemonSet](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/).
 This is because there should only ever be at most 1 Invoker
@@ -53,6 +64,6 @@ Error syncing pod, skipping: failed to "StartContainer" for "Invoker" with rpc e
 ```
 
 Then you might need to modify some of the volume mounts in the
-[invoker.yml](invoker.yml). For example,
-the error above is trying to find something from the apparmor mount which makes no
-sense to CoreOS. To fix the issue, you just need to remove the mount.
+[invoker.yml](invoker.yml). For example, the error above is trying to
+find something from the apparmor mount which makes no sense to
+CoreOS. To fix the issue, you just need to remove the mount.
diff --git a/kubernetes/invoker/invoker.env b/kubernetes/invoker/invoker.env
new file mode 100644
index 0000000..0616c19
--- /dev/null
+++ b/kubernetes/invoker/invoker.env
@@ -0,0 +1,8 @@
+java_opts=-Xmx2g
+invoker_opts=
+invoker_container_network=bridge
+invoker_use_runc=false
+docker_image_prefix=openwhisk
+docker_image_tag=latest
+docker_registry=
+invoker_logs_dir=
diff --git a/kubernetes/invoker/invoker.yml b/kubernetes/invoker/invoker.yml
index bbd1956..7241eb5 100644
--- a/kubernetes/invoker/invoker.yml
+++ b/kubernetes/invoker/invoker.yml
@@ -15,15 +15,6 @@ spec:
       restartPolicy: Always
       nodeSelector:
         openwhisk: "invoker"
-      tolerations:
-        - key: "dedicated"
-          value: "invoker"
-          effect: "NoSchedule"
-          operator: "Equal"
-        - key: "dedicated"
-          value: "invoker"
-          effect: "NoExecute"
-          operator: "Equal"
 
       volumes:
       - name: cgroup
@@ -47,65 +38,106 @@ spec:
         imagePullPolicy: Always
         image: openwhisk/invoker
         command: [ "/bin/bash", "-c", "COMPONENT_NAME=$(hostname | cut -d'-' -f2) /init.sh" ]
+        ports:
+        - name: invoker
+          containerPort: 8080
+        volumeMounts:
+        - name: cgroup
+          mountPath: "/sys/fs/cgroup"
+        - name: runc
+          mountPath: "/run/runc"
+        - name: dockersock
+          mountPath: "/var/run/docker.sock"
+        - name: dockerrootdir
+          mountPath: "/containers"
+        - name: apparmor
+          mountPath: "/usr/lib/x86_64-linux-gnu/libapparmor.so.1"
+        lifecycle:
+          postStart:
+            exec:
+              command:
+              - "/bin/bash"
+              - "-c"
+              - "docker pull openwhisk/nodejsactionbase && docker pull openwhisk/nodejs6action && docker pull openwhisk/dockerskeleton && docker pull openwhisk/python2action && docker pull openwhisk/python3action && docker pull openwhisk/action-swift-v3.1.1 && docker pull openwhisk/swift3action && docker pull openwhisk/java8action"
         env:
           - name: "PORT"
             value: "8080"
-          - name: "SELF_DOCKER_ENDPOINT"
-            value: "localhost"
-          - name: "SERVICE_CHECK_HTTP"
-            value: "/ping"
-          - name: "SERVICE_CHECK_TIMEOUT"
-            value: "2s"
-          - name: "SERVICE_CHECK_INTERVAL"
-            value: "15s"
+
+          # Invoker name is name of the Kube node when using DaemonSet
+          - name: "INVOKER_NAME"
+            valueFrom:
+              fieldRef:
+                fieldPath: spec.nodeName
+
           - name: "WHISK_API_HOST_NAME"
             valueFrom:
               configMapKeyRef:
                 name: whisk.ingress
                 key: api_host
-          - name: "WHISK_VERSION_BUILDNO"
-            value: "latest"
+
+          # Docker-related options
           - name: "INVOKER_CONTAINER_NETWORK"
-            value: "bridge"
+            valueFrom:
+              configMapKeyRef:
+                name: invoker.config
+                key: invoker_container_network
           - name: "INVOKER_USE_RUNC"
-            value: "false"
-
-          # Properties for invoker image
+            valueFrom:
+              configMapKeyRef:
+                name: invoker.config
+                key: invoker_use_runc
           - name: "DOCKER_IMAGE_PREFIX"
-            value: "openwhisk"
+            valueFrom:
+              configMapKeyRef:
+                name: invoker.config
+                key: docker_image_prefix
           - name: "DOCKER_IMAGE_TAG"
-            value: "latest"
+            valueFrom:
+              configMapKeyRef:
+                name: invoker.config
+                key: docker_image_tag
           - name: "DOCKER_REGISTRY"
-            value: ""
+            valueFrom:
+              configMapKeyRef:
+                name: invoker.config
+                key: docker_registry
 
-          # Java options
+          # action runtimes
+          - name: "RUNTIMES_MANIFEST"
+            valueFrom:
+              configMapKeyRef:
+                name: whisk.runtimes
+                key: runtimes
+
+          # extra JVM arguments
           - name: "JAVA_OPTS"
-            value: "-Xmx2g"
+            valueFrom:
+              configMapKeyRef:
+                name: invoker.config
+                key: java_opts
 
-          # Invoker options
+          # extra Invoker arguments
           - name: "INVOKER_OPTS"
-            value: ""
+            valueFrom:
+              configMapKeyRef:
+                name: invoker.config
+                key: invoker_opts
 
-          # Kafka properties
+          # Recommend using "" because logs should go to stdout on kube
+          - name: "WHISK_LOGS_DIR"
+            valueFrom:
+              configMapKeyRef:
+                name: invoker.config
+                key: invoker_logs_dir
+
+          # properties for Kafka connection
           - name: "KAFKA_HOSTS"
             value: "$(KAFKA_SERVICE_HOST):$(KAFKA_SERVICE_PORT_KAFKA)"
 
-          # zookeeper info
+          # properties for zookeeper connection
           - name: "ZOOKEEPER_HOSTS"
             value: "$(ZOOKEEPER_SERVICE_HOST):$(ZOOKEEPER_SERVICE_PORT_ZOOKEEPER)"
 
-          # This property can change since it is generated via Ansible GroupVars
-          - name: "RUNTIMES_MANIFEST"
-            value: '{ "defaultImagePrefix": "openwhisk", "defaultImageTag": "latest", "runtimes": { "nodejs": [ { "kind": "nodejs", "image": { "name": "nodejsaction" }, "deprecated": true }, { "kind": "nodejs:6", "default": true, "image": { "name": "nodejs6action" }, "deprecated": false } ], "python": [ { "kind": "python", "image": { "name": "python2action" }, "deprecated": false }, { "kind": "python:2", "default": true, "image": { "name": "python2action" }, "deprecated": false }, { "kin [...]
-
-          # Default to empty logs dir. This is because logs should go to stdout on kube
-          - name: "WHISK_LOGS_DIR"
-            value: ""
-
-          # this version is the day it is deployed,
-          - name:  "WHISK_VERSION_DATE"
-            value: "2017-01-01T00:00:00Z"
-
           # properties for DB connection
           - name: "DB_USERNAME"
             valueFrom:
@@ -131,12 +163,6 @@ spec:
               configMapKeyRef:
                 name: db.config
                 key: db_provider
-          - name: "DB_WHISK_ACTIONS_DDOC"
-            value: "whisks.v2"
-          - name: "DB_WHISK_ACTIVATIONS_DDOC"
-            value: "whisks.v2"
-          - name: "DB_WHISK_ACTIVATIONS_FILTER_DDOC"
-            value: "whisks-filters.v2"
           - name: "DB_WHISK_ACTIVATIONS"
             valueFrom:
               configMapKeyRef:
@@ -152,31 +178,3 @@ spec:
               configMapKeyRef:
                 name: db.config
                 key: db_whisk_auths
-
-          # Name for the pod can be the hostname of the Kube node
-          - name: "INVOKER_NAME"
-            valueFrom:
-              fieldRef:
-                fieldPath: spec.nodeName
-        ports:
-        - name: invoker
-          containerPort: 8080
-        volumeMounts:
-        - name: cgroup
-          mountPath: "/sys/fs/cgroup"
-        - name: runc
-          mountPath: "/run/runc"
-        - name: dockersock
-          mountPath: "/var/run/docker.sock"
-        - name: dockerrootdir
-          mountPath: "/containers"
-        - name: apparmor
-          mountPath: "/usr/lib/x86_64-linux-gnu/libapparmor.so.1"
-        lifecycle:
-          postStart:
-            exec:
-              command:
-              - "/bin/bash"
-              - "-c"
-              - "docker pull openwhisk/nodejsactionbase && docker pull openwhisk/nodejs6action && docker pull openwhisk/dockerskeleton && docker pull openwhisk/python2action && docker pull openwhisk/python3action && docker pull openwhisk/action-swift-v3.1.1 && docker pull openwhisk/swift3action && docker pull openwhisk/java8action"
-
diff --git a/kubernetes/openwhisk-catalog/install-catalog.yml b/kubernetes/openwhisk-catalog/install-catalog.yml
index c959aee..0037bd0 100644
--- a/kubernetes/openwhisk-catalog/install-catalog.yml
+++ b/kubernetes/openwhisk-catalog/install-catalog.yml
@@ -14,7 +14,10 @@ spec:
         image: openwhisk/kube-openwhisk-catalog
         env:
           - name: "WHISK_CLI_VERSION"
-            value: "latest"
+            valueFrom:
+              configMapKeyRef:
+                name: whisk.config
+                key: whisk_cli_version_tag
           - name: "WHISK_AUTH"
             valueFrom:
               secretKeyRef:
diff --git a/kubernetes/routemgmt/install-routemgmt.yml b/kubernetes/routemgmt/install-routemgmt.yml
index 8aebd2b..1ad9d87 100644
--- a/kubernetes/routemgmt/install-routemgmt.yml
+++ b/kubernetes/routemgmt/install-routemgmt.yml
@@ -14,7 +14,10 @@ spec:
         image: openwhisk/kube-routemgmt
         env:
           - name: "WHISK_CLI_VERSION"
-            value: "latest"
+            valueFrom:
+              configMapKeyRef:
+                name: whisk.config
+                key: whisk_cli_version_tag
           - name: "WHISK_AUTH"
             valueFrom:
               secretKeyRef:
@@ -26,7 +29,10 @@ spec:
                 name: whisk.ingress
                 key: api_host
           - name: "WHISK_NAMESPACE"
-            value: "/whisk.system"
+            valueFrom:
+              configMapKeyRef:
+                name: whisk.config
+                key: whisk_system_namespace
           - name: "WHISK_API_GATEWAY_HOST_V2"
             value: "http://$(APIGATEWAY_SERVICE_HOST):$(APIGATEWAY_SERVICE_PORT_API)/v2"
 
diff --git a/tools/travis/build.sh b/tools/travis/build.sh
index 4915fdb..0fb229d 100755
--- a/tools/travis/build.sh
+++ b/tools/travis/build.sh
@@ -147,6 +147,9 @@ echo "Performing steps from cluster-setup"
 pushd kubernetes/cluster-setup
   kubectl apply -f namespace.yml
   kubectl apply -f services.yml
+  kubectl -n openwhisk create cm whisk.config --from-env-file=config.env
+  kubectl -n openwhisk create cm whisk.runtimes --from-file=runtimes=runtimes.json
+  kubectl -n openwhisk create cm whisk.limits --from-env-file=limits.env
   kubectl -n openwhisk create secret generic whisk.auth --from-file=system=auth.whisk.system --from-file=guest=auth.guest
 popd
 
@@ -197,6 +200,7 @@ popd
 # setup the controller
 echo "Deploying controller"
 pushd kubernetes/controller
+  kubectl -n openwhisk create cm controller.config --from-env-file=controller.env
   kubectl apply -f controller.yml
 
   statefulsetHealthCheck "controller"
@@ -205,6 +209,7 @@ popd
 # setup the invoker
 echo "Deploying invoker"
 pushd kubernetes/invoker
+  kubectl -n openwhisk create cm invoker.config --from-env-file=invoker.env
   kubectl apply -f invoker.yml
 
   # wait until the invoker is ready

-- 
To stop receiving notification emails like this one, please contact
['"commits@openwhisk.apache.org" <co...@openwhisk.apache.org>'].