Feature: Charm-based OSM installation
[osm/Features.git] / charm_based_osm_installation.md
1 # Installing OSM to Kubernetes using Charms #
2
3 ## Proposer(s) ##
4
5 Adam Israel (Canonical)
6 David Garcia (Canonical)
7 Dominik Fleischmann (Canonical)
8
9 ## Type ##
10
11 Feature
12
13 ## Target MDG/TF ##
14
15 Devops, Other
16
17 ## Description ##
18
19 We propose to extend the current installer to support installing OSM on top of Kubernetes using Juju and charms. 
20
21 This would be implemented as a new, optional switch to the installer. The user would be able to use the current '-c' switch to specify that they want the charmed version of OSM to be installed, rather than the default Docker Swarm.
22
23 OSM charms are an open source collection of charms, under the Apache 2.0 license, that deploy OSM on top of Juju and Kubernetes.
24
25 Each charm uses the Docker image produced by the community, so the user is getting the same OSM code, delivered via an alternative method that is designed to be modeled and operated at scale.
26
27 Additionally, we'd like to move these charms under OSM governance, into a new git repository called osm-charms. This repository will contain the charms, interfaces, and assorted scripts related to building, testing, and publishing said charms.
28
29 This is similar to how charms live upstream in OpenStack:
30 https://opendev.org/openstack?q=charm&tab=&sort=recentupdate
31
32 Lastly, we'll work with the devops community to integrate charms into Jenkins, allowing it to run through stages 1-4 the same as the Docker Swarm and Kubernetes installer options.
33
34 This will allow the charmed installation of OSM to undergo the same rigorous testing as other installer methods do in order to ensure the same quality.
35
36 We will then work with the upstream community to improve and extend the current testing, i.e., adding Robot tests and exercising use-cases of interest to commercial users of OSM.
37
38
39 ## Demo or definition of done ##
40
41 As part of the installation of OSM, the user can pass the -c switch to `install_osm.sh` to override the default behavior. 
42
43 A user running the command 'install_osm.sh -c charmed' would install a single-instance version of OSM on top of microk8s via charms.
44
45 Additional optional switches would be supported, including:
46
47 --ha: install in High Availability mode
48 --k8s_endpoint: Specify the endpoint of an existing Kubernetes to use instead of microk8s
49 --bundle: Specify a custom bundle.yaml to use to deploy OSM via charms
50 --microstack: Install and configure microstack alongside OSM