Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Goal: Minimize reliance on Ansible (for building in configurations)

    • Goal would be to Dockerize as much as possible

  • Considerations:

    • Have Kube YAML files as the primary source of configuration

      • Utilize ENVIRONMENT vars

      • “bake” other configs into Docker images

      • Use shared storage via Kubernetes volumes:

        • 3rd party volumes are managed through YAML files (e.g NFS volume mounts or any persistent infrastructure mount options. see here)

      • Determine if we need to do better health checking to determine if we should start. Do not fail to run a process

  • Action Items:

    • Nginx:

      • Build Nginx with all OpenWhisk specific requirements (wsk, blackbox) pre-built into the Docker image.

      • helps generate certificates
      • create a Kube ConfigMap or Secrets Resource from those certs and a static Nginx.conf file. Where this nginx.conf file is specific to an environment
      • Have yaml file(s) for the Kube Deployment and Service which uses the generated ConfigMap
    • Controller:

      • Provide the ability for the controller to receive updates that new invoker instances are able to be used.

        • This already happens by default. Currently Kafka can receive new topics to automatically be created and used.

      • Need to make sure we use stateful sets so controller has unique names.

    • Kafka:

      • On the initial startup, Kafka should register the “health” and “command” topics.

      • Ensure that Kafka is able to receive topic creation requests from Invoker instances

    • Zookeeper:

      • None?

    • Invoker:

      • Have the Invoker register its Kafka topics by interacting with Kafka.

      • Have the Invoker register itself with the Controller:

        • The Invoker must register itself directly to the controller <or>

        • The Invoker registers all key-value pair information about itself into Consul

      • Have only one Invoker instance be deployed to a Kube node and ensure that no other Kube Pods run alongside it as well

    • CouchDB:

      • Goal: Come up with a standardized way to setup and configure CouchDB as OW’s default document store.

      • Considerations:

        • This component is somewhat unique on the OpenWhisk deployment strategy as it only has to be done once and does not have rolling updates

      • Questions:

        • How can I configure CouchDB to with seed information for OpenWhisk?

        • Can we better leverage public Docker image by wrapping it for our needs (config)?

        • How can I have the OpenWhisk components talk to CouchDB?

      • Assumptions:

        • Over time we are working towards a “pluggable” document store approach, but this is beyond short-term scope. Despite this approach we still need to “Dockerize” our init/config as the “default”.

      • Implementation:

        • Prebuilt couch DB then init script that edits the authentication for unique credentials. Also edit the entries within the database with unique credentials

...

CI and load testing of OpenWhisk on Kubernetes

  • Goal: standup testing resources at Apache and utilize for public CI and performance testing of OpenWhisk on Kubernetes
  • Needed resources:
    • A 5 worker node kubernetes cluster
      • 2 nodes for control plane: controller, kafka, nginx
      • 1 node for couchdb
      • 2 nodes for invokers

Medium Term Epics

  • E.g., Work items / issues (by component) that improve component’s Clustering or HA enablement

  • E.g., Work items that allow for “pluggability”

...