From 69a1e8166c37b93dd354509368dfe5c9952b9cda Mon Sep 17 00:00:00 2001 From: Daniel Farrell Date: Tue, 5 Jun 2018 09:54:33 -0400 Subject: Add k8-odl-coe spec 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 Signed-off-by: Daniel Farrell --- docs/specs/k8-odl-coe.rst | 105 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 docs/specs/k8-odl-coe.rst diff --git a/docs/specs/k8-odl-coe.rst b/docs/specs/k8-odl-coe.rst new file mode 100644 index 00000000..cd29456c --- /dev/null +++ b/docs/specs/k8-odl-coe.rst @@ -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 +-------- -- cgit 1.2.3-korg