Add k8-odl-coe spec 21/58021/8
authorDaniel Farrell <dfarrell@redhat.com>
Tue, 5 Jun 2018 13:54:33 +0000 (09:54 -0400)
committerDaniel Farrell <dfarrell@redhat.com>
Wed, 13 Jun 2018 20:50:45 +0000 (16:50 -0400)
This spec proposes adding an XCI senerio that uses OpenDaylight COE and
NetVirt with Kubernetes for pod networking.

Change-Id: I3418542cf22df0f4d04e167903f2bb59151fa0a6
Signed-off-by: Periyasamy Palanisamy <periyasamy.palanisamy@ericsson.com>
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
docs/specs/k8-odl-coe.rst [new file with mode: 0644]

diff --git a/docs/specs/k8-odl-coe.rst b/docs/specs/k8-odl-coe.rst
new file mode 100644 (file)
index 0000000..cd29456
--- /dev/null
@@ -0,0 +1,105 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. SPDX-License-Identifier: CC-BY-4.0
+.. Copyright 2018 Ericsson AB and Others
+
+.. Links
+.. _OpenDaylight COE: https://wiki.opendaylight.org/view/COE:Main
+.. _setting-up-coe-dev-environment: https://github.com/opendaylight/coe/blob/master/docs/setting-up-coe-dev-environment.rst
+.. _ansible-opendaylight: https://git.opendaylight.org/gerrit/gitweb?p=integration/packaging/ansible-opendaylight.git;a=tree
+
+This spec proposes adding an k8-odl-coe XCI scenario for OpenDaylight as the
+networking provider for Kubernetes using the OpenDaylight COE (Container
+Orchestration Engine) and NetVirt projects.
+
+Problem Description
+===================
+
+Currently OpenDaylight's advanced networking capabilities are not leveraged
+with Kubernetes in any scenarios. This spec proposes a reference platform for
+deployments that want to use OpenDaylight as a networking backend for
+Kubernetes.
+
+Minimum Hardware Requirements
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Hardware for Kubernetes Master Node(s)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+* RAM:    16 GB (20 GB for ha flavor i.e. for OpenDaylight Clustering)
+* HD:     80 GB
+* vCores: 6
+
+Hardware for Kubernetes Worker Node(s)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+* RAM:    12 GB
+* HD:     80 GB
+* vCores: 6
+
+Supported XCI Sandbox Flavors
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This scenario will support deployments on Mini, No HA and HA XCI Sandbox Flavors.
+
+Proposed Change
+===============
+
+1. Provide Pod Descriptor Files (PDF) and IDF (Installer Descriptor Files)
+   specific to this scenario to install Kubernetes with OpenDaylight COE.
+2. Introduce a new scenario k8-odl-coe in releng-xci-scenarios repository.
+3. Reuse the role from k8-nosdn-nofeature scenario to install Kubernetes.
+   It has kube_network_plugin option to 'cloud' in k8s-cluster.yml so that
+   Kubespray doesn't configure networking between pods. This enables
+   OpenDaylight to be chosen as a networking backend in steps 4-7.
+4. Enhance upstream `ansible-opendaylight`_ role to deploy OpenDaylight with
+   COE Watcher on k8s master node(s) and CNI plugin on the k8s master and
+   worker node(s).
+5. Add the required Ansible tasks in k8-odl-coe role to direct XCI and
+   ansible-opendaylight role to configure k8s with OpenDaylight as the
+   networking backend for pod connectivity.
+6. Run the Health Check by testing the pods' connectivity.
+
+The COE Watcher binary and COE CNI plugin are built from OpenDaylight COE
+source code. The user will have flexibility to choose its SHA from XCI's
+ansible-role-requirements.yml file.
+
+Code Impact
+-----------
+
+Code specific to the k8-odl-coe scenario will be added to the xci/scenarios
+directory of the releng-xci-scenarios repository.
+
+User Guide
+----------
+
+No user guide will be provided.
+
+Implementation
+==============
+
+See the Proposed Change section.
+
+Assignee(s)
+-----------
+
+Primary assignees:
+
+* Prem Sankar G (premsa)
+* Periyasamy Palanisamy (epalper)
+* Fatih Degirmenci (fdegir)
+
+Work Items
+----------
+
+1. Enhance the akka.conf.j2 in upstream ansible-opendaylight role to work
+   with k8s deployments (i.e. run ODL cluster on k8s master nodes).
+   Currently this works only for the deployments based on Openstack-Ansible.
+2. Enhance upstream ansible-opendaylight role to install odl-netvirt-coe and
+   odl-restconf Karaf features, build COE watcher and CNI plugin binaries
+   from source.
+3. Implement configure-kubenet.yml to choose OpenDaylight COE as the
+   networking backend.
+4. Implement Health Check tests.
+
+Glossary
+--------