OSM Kubernetes Support
[osm/Features.git] / Release4 / K8_Support.md
1 # OSM Kubernetes Support #
2
3 ## Proposer ##
4 - Prithiv Mohan (Intel)
5
6 ## Type ##
7 ** Feature **
8
9 ## Target MDG/TF ##
10 SO, RO, VCA, IM
11
12 ## Supported VIMs ##
13
14 1. OpenStack
15 2. VMWare
16 3. AWS
17
18 ## Description ##
19
20 Enable a container-based VNF deployment model via OSM that allows for the coexistence of container
21 and VM deployment models to coexist within a network service. Kubernetes should be enabled as the
22 container orchestration engine, but it must be done in a plugin manner that permits other container
23 orchestration engines to be added in the future.
24
25 The Kubernetes pods can be created either on a baremetal node or inside a VM. Either case, the
26 Resource Orchestrator(RO) is responsible only for the resource allocation.
27
28 For the VM based Kubernetes deployment, the VM image could have the kubelet node agent already
29 installed. In this case, RO creates a VM and VCA takes care of the configuration and the LCM of the
30 pods. If the image used by the RO to provide a VM has no kubelet installation, the VCA module will
31 handle the installation, configuration of the kubernetes. The Resource Orchestrator will not involve
32 in the installation of any kind of Kubernetes package.
33
34 The options for baremetal provisioning includes OpenStack Ironic, Canonical Metal as a Service(MaaS)
35 but not limited to that. An additional or extended plugin is required in the Resource Orchestrator
36 for the baremetal provisioning of the resources for the Kubernetes.
37
38 The proposed workflow below assumes Ironic/MaaS as the options for baremetal provisioning:
39
40         i.    User creating a descriptor with VNFD updates that indicate the deployment model for the
41               VNF (container on bare metal, container in VM, or VM deployment.
42         ii.   SO passes the request to RO.
43         iii.  RO receives the request.
44         iv a. In case of a Kubernetes deployment inside the VM, RO creates a VM with/without kubelet
45               installed in it based on the type of the image.
46            b. Alternatively, in the case of a Kubernetes baremetal deployment, RO communicates with
47               the MaaS/Ironic plugin. The plugin talks to the MaaS and/or Ironic to create the
48               Kubernetes pods.
49         v.    VCA does the installation and/or configuration of the VM for Kubernetes.
50
51 Changes in the descriptor in the IM repo is required. Expected these show up fairly seamlessly in
52 the UI due to the model driven nature of the platform.
53
54 There is an option on the preparation of the baremetal nodes or VMs for supporting Kubernetes. These
55 could be prepared beforehand, or Kubernetes could be configured on them once they have been
56 allocated.
57
58 The installation of Kubernetes and the configuration of the Kubernetes Controller will not be handled
59 by the OSM as it is out of scope for OSM. The configuration could be handled by Juju with the charms.
60
61 ## Demo or definition of done ##
62
63 * Creation of Kubernetes Pods is successful
64 * Usual lifecycle operations on a NS that includes VM-based and container-in-VM based VNFs.
65 * Supports multiple VIM environments.
66
67 Links:
68
69 1. https://kubernetes.io/
70 2. https://kubernetes.io/docs/getting-started-guides/ubuntu/installation/
71 3. https://www.ubuntu.com/kubernetes