summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/Access_Rancher_server_via_web_browser.jpegbin0 -> 135026 bytes
-rw-r--r--docs/Add_Kubernetes_Environment_to_Rancher.pngbin0 -> 49242 bytes
-rw-r--r--docs/Apply_customization_script_for_the_Rancher_VM.jpegbin0 -> 153028 bytes
-rw-r--r--docs/Click_create.jpegbin0 -> 131952 bytes
-rw-r--r--docs/Click_on_CLI_and_then_click_on_Generate_Config.jpegbin0 -> 91262 bytes
-rw-r--r--docs/Click_on_Close_button.jpegbin0 -> 158513 bytes
-rw-r--r--docs/Click_on_Copy_to_Clipboard-wait_until_you_see_a_token-do_not_copy_user+password-the_server_is_not_ready_at_that_point.jpegbin0 -> 92239 bytes
-rw-r--r--docs/K8s-Assign_Floating_IP_for_external_access.jpegbin0 -> 64999 bytes
-rw-r--r--docs/K8s-Key_Pair.jpegbin0 -> 87469 bytes
-rw-r--r--docs/K8s-Launch_Instance.jpegbin0 -> 53520 bytes
-rw-r--r--docs/K8s-Launch_new_VM_instance_to_create_a_Kubernetes_single_host_or_cluster.jpegbin0 -> 84468 bytes
-rw-r--r--docs/K8s-Manage_Floating_IP_Associations.jpegbin0 -> 33961 bytes
-rw-r--r--docs/K8s-Networking.jpegbin0 -> 96431 bytes
-rw-r--r--docs/K8s-Security_Group.jpegbin0 -> 73732 bytes
-rw-r--r--docs/K8s-Select_Flavor.jpegbin0 -> 148973 bytes
-rw-r--r--docs/K8s-Select_Ubuntu_16.04_as_base_image.jpegbin0 -> 136070 bytes
-rw-r--r--docs/Rancher-Allocate_Floating_IP.jpegbin0 -> 32404 bytes
-rw-r--r--docs/Rancher-Key_Pair.jpegbin0 -> 90739 bytes
-rw-r--r--docs/Rancher-Launch_Instance.jpegbin0 -> 51541 bytes
-rw-r--r--docs/Rancher-Launch_new_VM_instance_to_host_the_Rancher_Server.jpegbin0 -> 448601 bytes
-rw-r--r--docs/Rancher-Manage_Floating_IP_Associations.jpegbin0 -> 33712 bytes
-rw-r--r--docs/Rancher-Networking.jpegbin0 -> 93256 bytes
-rw-r--r--docs/Rancher-Security_Groups.jpegbin0 -> 77292 bytes
-rw-r--r--docs/Rancher-Select_Flavor.jpegbin0 -> 142727 bytes
-rw-r--r--docs/Rancher-Select_Ubuntu_16.04_as_base_image.jpegbin0 -> 139303 bytes
-rw-r--r--docs/Return_to_Rancher_environment_eg_SB4_and_wait_for_services_to_complete_10-15_mins.jpegbin0 -> 60818 bytes
-rw-r--r--docs/Select_Add_Environment.pngbin0 -> 38073 bytes
-rw-r--r--docs/and_click_on_Save_accept_defaults.jpegbin0 -> 77083 bytes
-rw-r--r--docs/index.rst1
-rw-r--r--docs/k8s-topology.jpgbin0 -> 57806 bytes
-rw-r--r--docs/master_nfs_node.sh32
-rw-r--r--docs/oom_cloud_setup_guide.rst49
-rw-r--r--docs/oom_setup_kubernetes_rancher.rst478
-rw-r--r--docs/openstack-k8s-node.sh46
-rw-r--r--docs/openstack-rancher.sh51
-rw-r--r--docs/otherwise_select_INFRASTRUCTURE_Hosts_and_click_on_Add_Host.jpgbin0 -> 46511 bytes
-rw-r--r--docs/slave_nfs_node.sh25
37 files changed, 664 insertions, 18 deletions
diff --git a/docs/Access_Rancher_server_via_web_browser.jpeg b/docs/Access_Rancher_server_via_web_browser.jpeg
new file mode 100644
index 0000000000..103fc2731f
--- /dev/null
+++ b/docs/Access_Rancher_server_via_web_browser.jpeg
Binary files differ
diff --git a/docs/Add_Kubernetes_Environment_to_Rancher.png b/docs/Add_Kubernetes_Environment_to_Rancher.png
new file mode 100644
index 0000000000..0d60f156fb
--- /dev/null
+++ b/docs/Add_Kubernetes_Environment_to_Rancher.png
Binary files differ
diff --git a/docs/Apply_customization_script_for_the_Rancher_VM.jpeg b/docs/Apply_customization_script_for_the_Rancher_VM.jpeg
new file mode 100644
index 0000000000..832dda3404
--- /dev/null
+++ b/docs/Apply_customization_script_for_the_Rancher_VM.jpeg
Binary files differ
diff --git a/docs/Click_create.jpeg b/docs/Click_create.jpeg
new file mode 100644
index 0000000000..fad185674c
--- /dev/null
+++ b/docs/Click_create.jpeg
Binary files differ
diff --git a/docs/Click_on_CLI_and_then_click_on_Generate_Config.jpeg b/docs/Click_on_CLI_and_then_click_on_Generate_Config.jpeg
new file mode 100644
index 0000000000..fec6a35433
--- /dev/null
+++ b/docs/Click_on_CLI_and_then_click_on_Generate_Config.jpeg
Binary files differ
diff --git a/docs/Click_on_Close_button.jpeg b/docs/Click_on_Close_button.jpeg
new file mode 100644
index 0000000000..cb02480923
--- /dev/null
+++ b/docs/Click_on_Close_button.jpeg
Binary files differ
diff --git a/docs/Click_on_Copy_to_Clipboard-wait_until_you_see_a_token-do_not_copy_user+password-the_server_is_not_ready_at_that_point.jpeg b/docs/Click_on_Copy_to_Clipboard-wait_until_you_see_a_token-do_not_copy_user+password-the_server_is_not_ready_at_that_point.jpeg
new file mode 100644
index 0000000000..bb0f60c4eb
--- /dev/null
+++ b/docs/Click_on_Copy_to_Clipboard-wait_until_you_see_a_token-do_not_copy_user+password-the_server_is_not_ready_at_that_point.jpeg
Binary files differ
diff --git a/docs/K8s-Assign_Floating_IP_for_external_access.jpeg b/docs/K8s-Assign_Floating_IP_for_external_access.jpeg
new file mode 100644
index 0000000000..fe84d11707
--- /dev/null
+++ b/docs/K8s-Assign_Floating_IP_for_external_access.jpeg
Binary files differ
diff --git a/docs/K8s-Key_Pair.jpeg b/docs/K8s-Key_Pair.jpeg
new file mode 100644
index 0000000000..1e335d36a6
--- /dev/null
+++ b/docs/K8s-Key_Pair.jpeg
Binary files differ
diff --git a/docs/K8s-Launch_Instance.jpeg b/docs/K8s-Launch_Instance.jpeg
new file mode 100644
index 0000000000..7e2122c429
--- /dev/null
+++ b/docs/K8s-Launch_Instance.jpeg
Binary files differ
diff --git a/docs/K8s-Launch_new_VM_instance_to_create_a_Kubernetes_single_host_or_cluster.jpeg b/docs/K8s-Launch_new_VM_instance_to_create_a_Kubernetes_single_host_or_cluster.jpeg
new file mode 100644
index 0000000000..8d154d4a2d
--- /dev/null
+++ b/docs/K8s-Launch_new_VM_instance_to_create_a_Kubernetes_single_host_or_cluster.jpeg
Binary files differ
diff --git a/docs/K8s-Manage_Floating_IP_Associations.jpeg b/docs/K8s-Manage_Floating_IP_Associations.jpeg
new file mode 100644
index 0000000000..f15e5e34c7
--- /dev/null
+++ b/docs/K8s-Manage_Floating_IP_Associations.jpeg
Binary files differ
diff --git a/docs/K8s-Networking.jpeg b/docs/K8s-Networking.jpeg
new file mode 100644
index 0000000000..ee4cafca54
--- /dev/null
+++ b/docs/K8s-Networking.jpeg
Binary files differ
diff --git a/docs/K8s-Security_Group.jpeg b/docs/K8s-Security_Group.jpeg
new file mode 100644
index 0000000000..5e852185b2
--- /dev/null
+++ b/docs/K8s-Security_Group.jpeg
Binary files differ
diff --git a/docs/K8s-Select_Flavor.jpeg b/docs/K8s-Select_Flavor.jpeg
new file mode 100644
index 0000000000..c3cf4b2c83
--- /dev/null
+++ b/docs/K8s-Select_Flavor.jpeg
Binary files differ
diff --git a/docs/K8s-Select_Ubuntu_16.04_as_base_image.jpeg b/docs/K8s-Select_Ubuntu_16.04_as_base_image.jpeg
new file mode 100644
index 0000000000..e9a03e782c
--- /dev/null
+++ b/docs/K8s-Select_Ubuntu_16.04_as_base_image.jpeg
Binary files differ
diff --git a/docs/Rancher-Allocate_Floating_IP.jpeg b/docs/Rancher-Allocate_Floating_IP.jpeg
new file mode 100644
index 0000000000..9d6ff3ff95
--- /dev/null
+++ b/docs/Rancher-Allocate_Floating_IP.jpeg
Binary files differ
diff --git a/docs/Rancher-Key_Pair.jpeg b/docs/Rancher-Key_Pair.jpeg
new file mode 100644
index 0000000000..1bcb6b6eb7
--- /dev/null
+++ b/docs/Rancher-Key_Pair.jpeg
Binary files differ
diff --git a/docs/Rancher-Launch_Instance.jpeg b/docs/Rancher-Launch_Instance.jpeg
new file mode 100644
index 0000000000..38943699e6
--- /dev/null
+++ b/docs/Rancher-Launch_Instance.jpeg
Binary files differ
diff --git a/docs/Rancher-Launch_new_VM_instance_to_host_the_Rancher_Server.jpeg b/docs/Rancher-Launch_new_VM_instance_to_host_the_Rancher_Server.jpeg
new file mode 100644
index 0000000000..2b3fde3fb7
--- /dev/null
+++ b/docs/Rancher-Launch_new_VM_instance_to_host_the_Rancher_Server.jpeg
Binary files differ
diff --git a/docs/Rancher-Manage_Floating_IP_Associations.jpeg b/docs/Rancher-Manage_Floating_IP_Associations.jpeg
new file mode 100644
index 0000000000..ae062c1d39
--- /dev/null
+++ b/docs/Rancher-Manage_Floating_IP_Associations.jpeg
Binary files differ
diff --git a/docs/Rancher-Networking.jpeg b/docs/Rancher-Networking.jpeg
new file mode 100644
index 0000000000..16ef380ef5
--- /dev/null
+++ b/docs/Rancher-Networking.jpeg
Binary files differ
diff --git a/docs/Rancher-Security_Groups.jpeg b/docs/Rancher-Security_Groups.jpeg
new file mode 100644
index 0000000000..c8ff2e8d76
--- /dev/null
+++ b/docs/Rancher-Security_Groups.jpeg
Binary files differ
diff --git a/docs/Rancher-Select_Flavor.jpeg b/docs/Rancher-Select_Flavor.jpeg
new file mode 100644
index 0000000000..a3f35b53ce
--- /dev/null
+++ b/docs/Rancher-Select_Flavor.jpeg
Binary files differ
diff --git a/docs/Rancher-Select_Ubuntu_16.04_as_base_image.jpeg b/docs/Rancher-Select_Ubuntu_16.04_as_base_image.jpeg
new file mode 100644
index 0000000000..b80fae4a5c
--- /dev/null
+++ b/docs/Rancher-Select_Ubuntu_16.04_as_base_image.jpeg
Binary files differ
diff --git a/docs/Return_to_Rancher_environment_eg_SB4_and_wait_for_services_to_complete_10-15_mins.jpeg b/docs/Return_to_Rancher_environment_eg_SB4_and_wait_for_services_to_complete_10-15_mins.jpeg
new file mode 100644
index 0000000000..6d62b99f55
--- /dev/null
+++ b/docs/Return_to_Rancher_environment_eg_SB4_and_wait_for_services_to_complete_10-15_mins.jpeg
Binary files differ
diff --git a/docs/Select_Add_Environment.png b/docs/Select_Add_Environment.png
new file mode 100644
index 0000000000..48fffa41bd
--- /dev/null
+++ b/docs/Select_Add_Environment.png
Binary files differ
diff --git a/docs/and_click_on_Save_accept_defaults.jpeg b/docs/and_click_on_Save_accept_defaults.jpeg
new file mode 100644
index 0000000000..9b57927aac
--- /dev/null
+++ b/docs/and_click_on_Save_accept_defaults.jpeg
Binary files differ
diff --git a/docs/index.rst b/docs/index.rst
index 712802d619..340b43be67 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -14,3 +14,4 @@ OOM Documentation Repository
oom_developer_guide.rst
oom_cloud_setup_guide.rst
release-notes.rst
+ oom_setup_kubernetes_rancher.rst
diff --git a/docs/k8s-topology.jpg b/docs/k8s-topology.jpg
new file mode 100644
index 0000000000..eba8e72b68
--- /dev/null
+++ b/docs/k8s-topology.jpg
Binary files differ
diff --git a/docs/master_nfs_node.sh b/docs/master_nfs_node.sh
new file mode 100644
index 0000000000..4a7a8dbc12
--- /dev/null
+++ b/docs/master_nfs_node.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+usage () {
+ echo "Usage:"
+ echo " ./$(basename $0) node1_ip node2_ip ... nodeN_ip"
+ exit 1
+}
+
+if [ "$#" -lt 1 ]; then
+ echo "Missing NFS slave nodes"
+ usage
+fi
+
+#Install NFS kernel
+sudo apt-get update
+sudo apt-get install -y nfs-kernel-server
+
+#Create /dockerdata-nfs and set permissions
+sudo mkdir -p /dockerdata-nfs
+sudo chmod 777 -R /dockerdata-nfs
+sudo chown nobody:nogroup /dockerdata-nfs/
+
+#Update the /etc/exports
+NFS_EXP=""
+for i in $@; do
+ NFS_EXP+="$i(rw,sync,no_root_squash,no_subtree_check) "
+done
+echo "/dockerdata-nfs "$NFS_EXP | sudo tee -a /etc/exports
+
+#Restart the NFS service
+sudo exportfs -a
+sudo systemctl restart nfs-kernel-server
diff --git a/docs/oom_cloud_setup_guide.rst b/docs/oom_cloud_setup_guide.rst
index 7582a4a03d..73509669e8 100644
--- a/docs/oom_cloud_setup_guide.rst
+++ b/docs/oom_cloud_setup_guide.rst
@@ -12,6 +12,7 @@
.. _Setting Up Kubernetes with Rancher: https://wiki.onap.org/display/DW/ONAP+on+Kubernetes+on+Rancher
.. _Setting Up Kubernetes with Kubeadm: https://wiki.onap.org/display/DW/Deploying+Kubernetes+Cluster+with+kubeadm
.. _Setting Up Kubernetes with Cloudify: https://wiki.onap.org/display/DW/ONAP+on+Kubernetes+on+Cloudify
+.. _ONAP on Kubernetes Wiki: https://wiki.onap.org/display/DW/ONAP+on+Kubernetes
.. figure:: oomLogoV2-medium.png
:align: right
@@ -63,26 +64,38 @@ least three if not six nodes to ensure there is no single point of failure.
===== ===== ====== ====================
RAM HD vCores Ports
===== ===== ====== ====================
- 128GB 160GB 16 0.0.0.0/0 (all open)
+ 128GB 160GB 32 0.0.0.0/0 (all open)
===== ===== ====== ====================
+.. note::
+ Kubernetes supports a maximum of 110 pods per node which forces one to use at
+ least two nodes to deploy all of ONAP although at least three are recommended
+ (for example 4x32GB - 8 vCores each). Subsets of ONAP may still be deployed
+ on a single node.
+
Cloud Installation
==================
-#. OOM supports deployment on major public clouds. The following guides
- provide instructions on how to deploy ONAP on these clouds:
-
- - `Microsoft Azure`_,
- - `Amazon AWS`_,
- - `Google GCE`_,
- - `VMware VIO`_,
- - IBM, and
- - `Openstack`_.
-
-#. Alternatively, OOM can be deployed on a private set of physical hosts or VMs
- (or even a combination of the two). The following guides describe how to
- create a Kubernetes cluster with popular tools:
-
- - `Setting up Kubernetes with Rancher`_ (recommended)
- - `Setting up Kubernetes with Kubeadm`_
- - `Setting up Kubernetes with Cloudify`_
+.. #. OOM supports deployment on major public clouds. The following guides
+.. provide instructions on how to deploy ONAP on these clouds:
+..
+.. - `Microsoft Azure`_,
+.. - `Amazon AWS`_,
+.. - `Google GCE`_,
+.. - `VMware VIO`_,
+.. - IBM, and
+.. - `Openstack`_.
+..
+.. #. Alternatively, OOM can be deployed on a private set of physical hosts or VMs
+.. (or even a combination of the two). The following guides describe how to
+.. create a Kubernetes cluster with popular tools:
+..
+.. - `Setting up Kubernetes with Rancher`_ (recommended)
+.. - `Setting up Kubernetes with Kubeadm`_
+.. - `Setting up Kubernetes with Cloudify`_
+
+OOM can be deployed on a private set of physical hosts or VMs (or even a
+combination of the two). The following guide describe the recommended method to
+setup a Kubernetes cluster: :ref:`onap-on-kubernetes-with-rancher`.
+
+There are alternative deployment methods described on the `ONAP on Kubernetes Wiki`_
diff --git a/docs/oom_setup_kubernetes_rancher.rst b/docs/oom_setup_kubernetes_rancher.rst
new file mode 100644
index 0000000000..8e55bf1b66
--- /dev/null
+++ b/docs/oom_setup_kubernetes_rancher.rst
@@ -0,0 +1,478 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2018 Amdocs, Bell Canada
+
+.. Links
+.. _HELM Best Practices Guide: https://docs.helm.sh/chart_best_practices/#requirements
+.. _kubectl Cheat Sheet: https://kubernetes.io/docs/reference/kubectl/cheatsheet/
+.. _Kubernetes documentation for emptyDir: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir
+.. _Docker DevOps: https://wiki.onap.org/display/DW/Docker+DevOps#DockerDevOps-DockerBuild
+.. _http://cd.onap.info:30223/mso/logging/debug: http://cd.onap.info:30223/mso/logging/debug
+.. _Onboarding and Distributing a Vendor Software Product: https://wiki.onap.org/pages/viewpage.action?pageId=1018474
+.. _README.md: https://gerrit.onap.org/r/gitweb?p=oom.git;a=blob;f=kubernetes/README.md
+
+.. figure:: oomLogoV2-medium.png
+ :align: right
+
+.. _onap-on-kubernetes-with-rancher:
+
+ONAP on Kubernetes with Rancher
+###############################
+
+The following instructions will step you through the installation of Kubernetes
+on an OpenStack environment with Rancher. The development lab used for this
+installation is the ONAP Windriver lab.
+
+This guide does not cover all of the steps required to setup your OpenStack
+environment: e.g. OAM networks and security groups but there is a wealth of
+OpenStack information on the web.
+
+Rancher Installation
+====================
+
+The following instructions describe how to create an Openstack VM running
+Rancher. This node will not be used to host ONAP itself, it will be used
+exclusively by Rancher.
+
+Launch new VM instance to host the Rancher Server
+-------------------------------------------------
+
+.. image:: Rancher-Launch_new_VM_instance_to_host_the_Rancher_Server.jpeg
+
+Select Ubuntu 16.04 as base image
+---------------------------------
+Select "No" on "Create New Volume"
+
+.. image:: Rancher-Select_Ubuntu_16.04_as_base_image.jpeg
+
+Select Flavor
+-------------
+Known issues exist if flavor is too small for Rancher. Please select a flavor
+with at least 4 vCPU and 8GB ram.
+
+.. image:: Rancher-Select_Flavor.jpeg
+
+Networking
+----------
+
+.. image:: Rancher-Networking.jpeg
+
+Security Groups
+---------------
+
+.. image:: Rancher-Security_Groups.jpeg
+
+Key Pair
+--------
+Use an existing key pair (e.g. onap_key), import an existing one or create a
+new one to assign.
+
+.. image:: Rancher-Key_Pair.jpeg
+
+Apply customization script for the Rancher VM
+---------------------------------------------
+
+Click :download:`openstack-rancher.sh <openstack-rancher.sh>` to download the script.
+
+.. literalinclude:: openstack-rancher.sh
+ :language: bash
+
+This customization script will:
+
+* setup root access to the VM (comment out if you wish to disable this
+ capability and restrict access to ssh access only)
+* install docker
+* install rancher
+* install kubectl
+* install helm
+* install nfs server
+
+.. note::
+ The Beijing release of OOM only supports Helm 2.8.2 not the 2.7.2 shown in
+ the screen capture below. The supported versions of all the software components
+ are listed in the :ref:`cloud-setup-guide-label`.
+
+.. image:: Apply_customization_script_for_the_Rancher_VM.jpeg
+
+Launch Instance
+---------------
+
+.. image:: Rancher-Launch_Instance.jpeg
+
+Assign Floating IP for external access
+--------------------------------------
+
+.. image:: Rancher-Allocate_Floating_IP.jpeg
+
+.. image:: Rancher-Manage_Floating_IP_Associations.jpeg
+
+.. image:: Rancher-Launch_Instance.jpeg
+
+Kubernetes Installation
+=======================
+
+Launch new VM instance(s) to create a Kubernetes single host or cluster
+-----------------------------------------------------------------------
+
+To create a cluster:
+
+.. note::
+ #. do not append a '-1' suffix (e.g. sb4-k8s)
+ #. increase count to the # of of kubernetes worker nodes you want (eg. 3)
+
+.. image:: K8s-Launch_new_VM_instance_to_create_a_Kubernetes_single_host_or_cluster.jpeg
+
+Select Ubuntu 16.04 as base image
+---------------------------------
+Select "No" on "Create New Volume"
+
+.. image:: K8s-Select_Ubuntu_16.04_as_base_image.jpeg
+
+Select Flavor
+-------------
+The size of a Kubernetes host depends on the size of the ONAP deployment that
+will be installed.
+
+As of the Beijing release a minimum of 3 x 32GB hosts will be needed to run a
+full ONAP deployment (all components).
+
+If a small subset of ONAP components are being deployed for testing purposes,
+then a single 16GB or 32GB host should suffice.
+
+.. image:: K8s-Select_Flavor.jpeg
+
+Networking
+-----------
+
+.. image:: K8s-Networking.jpeg
+
+Security Group
+---------------
+
+.. image:: K8s-Security_Group.jpeg
+
+Key Pair
+--------
+Use an existing key pair (e.g. onap_key), import an existing one or create a
+new one to assign.
+
+.. image:: K8s-Key_Pair.jpeg
+
+Apply customization script for Kubernetes VM(s)
+-----------------------------------------------
+
+Click :download:`openstack-k8s-node.sh <openstack-k8s-node.sh>` to
+download the script.
+
+.. literalinclude:: openstack-k8s-node.sh
+ :language: bash
+
+This customization script will:
+
+* setup root access to the VM (comment out if you wish to disable this
+ capability and restrict access to ssh access only)
+* install docker
+* install kubectl
+* install helm
+* install nfs common (see configuration step here)
+
+.. note::
+ Ensure you are using the correct versions as described in the
+ :ref:`cloud-setup-guide-label`
+
+Launch Instance
+---------------
+
+.. image:: K8s-Launch_Instance.jpeg
+
+Assign Floating IP for external access
+--------------------------------------
+
+.. image:: K8s-Assign_Floating_IP_for_external_access.jpeg
+
+.. image:: K8s-Manage_Floating_IP_Associations.jpeg
+
+.. image:: K8s-Launch_Instance.jpeg
+
+Setting up an NFS share for Multinode Kubernetes Clusters
+=========================================================
+The figure below illustrates a possible topology of a multinode Kubernetes
+cluster.
+
+.. image:: k8s-topology.jpg
+
+One node, the Master Node, runs Rancher and Helm clients and connects to all
+the Kubernetes nodes in the cluster. Kubernetes nodes, in turn, run Rancher,
+Kubernetes and Tiller (Helm) agents, which receive, execute, and respond to
+commands issued by the Master Node (e.g. kubectl or helm operations). Note that
+the Master Node can be either a remote machine that the user can log in to or a
+local machine (e.g. laptop, desktop) that has access to the Kubernetes cluster.
+
+Deploying applications to a Kubernetes cluster requires Kubernetes nodes to
+share a common, distributed filesystem. One node in the cluster plays the role
+of NFS Master (not to confuse with the Master Node that runs Rancher and Helm
+clients, which is located outside the cluster), while all the other cluster
+nodes play the role of NFS slaves. In the figure above, the left-most cluster
+node plays the role of NFS Master (indicated by the crown symbol). To properly
+set up an NFS share on Master and Slave nodes, the user can run the scripts
+below.
+
+Click :download:`master_nfs_node.sh <master_nfs_node.sh>` to download the script.
+
+.. literalinclude:: master_nfs_node.sh
+ :language: bash
+
+Click :download:`slave_nfs_node.sh <slave_nfs_node.sh>` to download the script.
+
+.. literalinclude:: slave_nfs_node.sh
+ :language: bash
+
+The master_nfs_node.sh script runs in the NFS Master node and needs the list of
+NFS Slave nodes as input, e.g.::
+
+ > sudo ./master_nfs_node.sh node1_ip node2_ip ... nodeN_ip
+
+The slave_nfs_node.sh script runs in each NFS Slave node and needs the IP of
+the NFS Master node as input, e.g.::
+
+ > sudo ./slave_nfs_node.sh master_node_ip
+
+Configuration (Rancher and Kubernetes)
+======================================
+
+Access Rancher server via web browser
+-------------------------------------
+(e.g. http://10.12.6.16:8080/env/1a5/apps/stacks)
+
+.. image:: Access_Rancher_server_via_web_browser.jpeg
+
+Add Kubernetes Environment to Rancher
+-------------------------------------
+
+1. Select “Manage Environments”
+
+.. image:: Add_Kubernetes_Environment_to_Rancher.png
+
+2. Select “Add Environment”
+
+.. image:: Select_Add_Environment.png
+
+3. Add unique name for your new Rancher environment
+
+4. Select the Kubernetes template
+
+5. Click "create"
+
+.. image:: Click_create.jpeg
+
+6. Select the new named environment (ie. SB4) from the dropdown list (top left).
+
+Rancher is now waiting for a Kubernetes Host to be added.
+
+.. image:: K8s-Assign_Floating_IP_for_external_access.jpeg
+
+Add Kubernetes Host
+-------------------
+
+1. If this is the first (or only) host being added - click on the "Add a host" link
+
+.. image:: K8s-Assign_Floating_IP_for_external_access.jpeg
+
+and click on "Save" (accept defaults).
+
+.. image:: and_click_on_Save_accept_defaults.jpeg
+
+otherwise select INFRASTRUCTURE→ Hosts and click on "Add Host"
+
+.. image:: otherwise_select_INFRASTRUCTURE_Hosts_and_click_on_Add_Host.jpg
+
+2. Enter the management IP for the k8s VM (e.g. 10.0.0.4) that was just created.
+
+3. Click on “Copy to Clipboard” button
+
+4. Click on “Close” button
+
+.. image:: Click_on_Close_button.jpeg
+
+Without the 10.0.0.4 IP - the CATTLE_AGENT will be derived on the host - but it
+may not be a routable IP.
+
+Configure Kubernetes Host
+-------------------------
+
+1. Login to the new Kubernetes Host::
+
+ > ssh -i ~/oom-key.pem ubuntu@10.12.5.1
+ The authenticity of host '10.12.5.172 (10.12.5.172)' can't be established.
+ ECDSA key fingerprint is SHA256:tqxayN58nCJKOJcWrEZzImkc0qKQHDDfUTHqk4WMcEI.
+ Are you sure you want to continue connecting (yes/no)? yes
+ Warning: Permanently added '10.12.5.172' (ECDSA) to the list of known hosts.
+ Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-64-generic x86_64)
+
+ * Documentation: https://help.ubuntu.com
+ * Management: https://landscape.canonical.com
+ * Support: https://ubuntu.com/advantage
+
+ Get cloud support with Ubuntu Advantage Cloud Guest:
+ http://www.ubuntu.com/business/services/cloud
+
+ 180 packages can be updated.
+ 100 updates are security updates.
+
+ The programs included with the Ubuntu system are free software;
+ the exact distribution terms for each program are described in the
+ individual files in /usr/share/doc/*/copyright.
+
+ Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
+ applicable law.
+
+ To run a command as administrator (user "root"), use "sudo <command>".
+ See "man sudo_root" for details.
+
+ ubuntu@sb4-k8s-1:~$
+
+
+2. Paste Clipboard content and hit enter to install Rancher Agent::
+
+ ubuntu@sb4-k8s-1:~$ sudo docker run -e CATTLE_AGENT_IP="10.0.0.4“ --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.9 http://10.12.6.16:8080/v1/scripts/5D757C68BD0A2125602A:1514678400000:yKW9xHGJDLvq6drz2eDzR2mjato
+ Unable to find image 'rancher/agent:v1.2.9' locally
+ v1.2.9: Pulling From rancher/agent
+ b3e1c725a85f: Pull complete
+ 6071086409fc: Pull complete
+ d0ac3b234321: Pull complete
+ 87f567b5cf58: Pull complete
+ a63e24b217c4: Pull complete
+ d0a3f58caef0: Pull complete
+ 16914729cfd3: Pull complete
+ dc5c21984c5b: Pull complete
+ d7e8f9784b20: Pull complete
+ Digest: sha256:c21255ac4d94ffbc7b523F870F20ea5189b68Fa3d642800adb4774aab4748e66
+ Status: Downloaded newer image for rancher/agent:v1.2.9
+
+ INFO: Running Agent Registration Process, CATTLE_URL=http://10.12.6.16:8080/v1
+ INFO: Attempting to connect to: http://10.12.6.16:8080/v1
+ INFO: http://10.12.6.16:8080/v1 is accessible
+ INFO: Inspecting host capabilities
+ INFO: Boot2Docker: false
+ INFO: Host writable: true
+ INFO: Token: xxxxxxxx
+ INFO: Running registration
+ INFO: Printing Environment
+ INFO: ENV: CATTLE_ACCESS_KEY=98B35AC484FBF820E0AD
+ INFO: ENV: CATTLE_AGENT_IP=10.0.9.4
+ INFO: ENV: CATTLE_HOME=/var/lib/cattle
+ INFO: ENV: CATTLE_REGISTRATION_ACCESS_KEY=registrationToken
+ INFO: ENV: CATTLE_REGISTRATION_SECRET_KEY=xxxxxxx
+ INFO: ENV: CATTLE_SECRET_KEY=xxxxxxx
+ INFO: ENV: CATTLE_URL=http://10.12.6.16:8080/v1
+ INFO: ENV: DETECTED_CATTLE_AGENT_IP=10.12.5.172
+ INFO: ENV: RANCHER_AGENT_IMAGE=rancher/agent:v1.2.9
+ INFO: Launched Rancher Agent: c27ee0f3dc4c783b0db647ea1f73c35b3843a4b8d60b96375b1a05aa77d83136
+ ubuntu@sb4-k8s-1:~$
+
+3. Return to Rancher environment (e.g. SB4) and wait for services to complete
+ (~ 10-15 mins)
+
+.. image:: Return_to_Rancher_environment_eg_SB4_and_wait_for_services_to_complete_10-15_mins.jpeg
+
+Configure kubectl and helm
+==========================
+In this example we are configuring kubectl and helm that have been installed
+(as a convenience) onto the rancher and kubernetes hosts. Typically you would
+install them both on your PC and remotely connect to the cluster. The following
+procedure would remain the same.
+
+1. Click on CLI and then click on “Generate Config”
+
+.. image:: Click_on_CLI_and_then_click_on_Generate_Config.jpeg
+
+2. Click on “Copy to Clipboard” - wait until you see a "token" - do not copy
+ user+password - the server is not ready at that point
+
+.. image:: Click_on_Copy_to_Clipboard-wait_until_you_see_a_token-do_not_copy_user+password-the_server_is_not_ready_at_that_point.jpeg
+
+3. Create a .kube directory in user directory (if one does not exist)::
+
+ ubuntu@sb4-kSs-1:~$ mkdir .kube
+ ubuntu@sb4-kSs-1:~$ vi .kube/config
+
+4. Paste contents of Clipboard into a file called “config” and save the file::
+
+ apiVersion: v1
+ kind : Config
+ clusters:
+ - cluster:
+ api-version: v1
+ insecure-skip-tls-verify: true
+ server: "https://10.12.6.16:8080/r/projects/1a7/kubernetes:6443"
+ name: "SB4"
+ contexts:
+ - context:
+ cluster: "SB4"
+ user: "SB4"
+ name: "SB4"
+ current-context: "SB4"
+ users:
+ - name: "SB4"
+ user:
+ token: "QmFzaWMgTlRBd01qZzBOemc)TkRrMk1UWkNOMFpDTlVFNlExcHdSa1JhVZreE5XSm1TRGhWU2t0Vk1sQjVhalZaY0dWaFVtZGFVMHQzWW1WWVJtVmpSQT09"
+ ~
+ ~
+ ~
+ - INSERT --
+
+5. Validate that kubectl is able to connect to the kubernetes cluster::
+
+ ubuntu@sb4-k8s-1:~$ kubectl config get-contexts
+ CURRENT NAME CLUSTER AUTHINFO NAMESPACE
+ * SB4 SB4 SB4
+ ubuntu@sb4-kSs-1:~$
+
+and show running pods::
+
+ ubuntu@sb4-k8s-1:~$ kubectl get pods --all-namespaces -o=wide
+ NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE
+ kube-system heapster—7Gb8cd7b5 -q7p42 1/1 Running 0 13m 10.42.213.49 sb4-k8s-1
+ kube-system kube-dns-5d7bM87c9-c6f67 3/3 Running 0 13m 10.42.181.110 sb4-k8s-1
+ kube-system kubernetes-dashboard-f9577fffd-kswjg 1/1 Running 0 13m 10.42.105.113 sb4-k8s-1
+ kube-system monitoring-grafana-997796fcf-vg9h9 1/1 Running 0 13m 10.42,141.58 sb4-k8s-1
+ kube-system monitoring-influxdb-56chd96b-hk66b 1/1 Running 0 13m 10.4Z.246.90 sb4-k8s-1
+ kube-system tiller-deploy-cc96d4f6b-v29k9 1/1 Running 0 13m 10.42.147.248 sb4-k8s-1
+ ubuntu@sb4-k8s-1:~$
+
+6. Validate helm is running at the right version. If not, an error like this
+ will be displayed::
+
+ ubuntu@sb4-k8s-1:~$ helm list
+ Error: incompatible versions c1ient[v2.8.2] server[v2.6.1]
+ ubuntu@sb4-k8s-1:~$
+
+7. Upgrade the server-side component of helm (tiller) via `helm init --upgrade`::
+
+ ubuntu@sb4-k8s-1:~$ helm init --upgrade
+ Creating /home/ubuntu/.helm
+ Creating /home/ubuntu/.helm/repository
+ Creating /home/ubuntu/.helm/repository/cache
+ Creating /home/ubuntu/.helm/repository/local
+ Creating /home/ubuntu/.helm/plugins
+ Creating /home/ubuntu/.helm/starters
+ Creating /home/ubuntu/.helm/cache/archive
+ Creating /home/ubuntu/.helm/repository/repositories.yaml
+ Adding stable repo with URL: https://kubernetes-charts.storage.googleapis.com
+ Adding local repo with URL: http://127.0.0.1:8879/charts
+ $HELM_HOME has been configured at /home/ubuntu/.helm.
+
+ Tiller (the Helm server-side component) has been upgraded to the current version.
+ Happy Helming!
+ ubuntu@sb4-k8s-1:~$
+
+ONAP Deployment via OOM
+=======================
+Now that kubernetes and Helm are installed and configured you can prepare to
+deploy ONAP. Follow the instructions in the README.md_ or look at the official
+documentation to get started:
+
+- :ref:`quick-start-label` - deploy ONAP on an existing cloud
+- :ref:`user-guide-label` - a guide for operators of an ONAP instance
+
+
diff --git a/docs/openstack-k8s-node.sh b/docs/openstack-k8s-node.sh
new file mode 100644
index 0000000000..7d49ad5033
--- /dev/null
+++ b/docs/openstack-k8s-node.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+DOCKER_VERSION=17.03
+KUBECTL_VERSION=1.8.10
+HELM_VERSION=2.8.2
+
+# setup root access - default login: oom/oom - comment out to restrict access too ssh key only
+sed -i 's/PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config
+sed -i 's/PasswordAuthentication.*/PasswordAuthentication yes/' /etc/ssh/sshd_config
+service sshd restart
+echo -e "oom\noom" | passwd root
+
+apt-get update
+curl https://releases.rancher.com/install-docker/$DOCKER_VERSION.sh | sh
+mkdir -p /etc/systemd/system/docker.service.d/
+cat > /etc/systemd/system/docker.service.d/docker.conf << EOF
+[Service]
+ExecStart=
+ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry=nexus3.onap.org:10001
+EOF
+systemctl daemon-reload
+systemctl restart docker
+apt-mark hold docker-ce
+
+IP_ADDY=`ip address |grep ens|grep inet|awk '{print $2}'| awk -F / '{print $1}'`
+HOSTNAME=`hostname`
+
+echo "$IP_ADDY $HOSTNAME" >> /etc/hosts
+
+docker login -u docker -p docker nexus3.onap.org:10001
+
+sudo apt-get install make -y
+
+sudo curl -LO https://storage.googleapis.com/kubernetes-release/release/v$KUBECTL_VERSION/bin/linux/amd64/kubectl
+sudo chmod +x ./kubectl
+sudo mv ./kubectl /usr/local/bin/kubectl
+sudo mkdir ~/.kube
+wget http://storage.googleapis.com/kubernetes-helm/helm-v${HELM_VERSION}-linux-amd64.tar.gz
+sudo tar -zxvf helm-v${HELM_VERSION}-linux-amd64.tar.gz
+sudo mv linux-amd64/helm /usr/local/bin/helm
+
+# install nfs
+sudo apt-get install nfs-common -y
+
+
+exit 0
diff --git a/docs/openstack-rancher.sh b/docs/openstack-rancher.sh
new file mode 100644
index 0000000000..d51abe4d68
--- /dev/null
+++ b/docs/openstack-rancher.sh
@@ -0,0 +1,51 @@
+#!/bin/bash
+
+DOCKER_VERSION=17.03
+RANCHER_VERSION=1.6.14
+KUBECTL_VERSION=1.8.10
+HELM_VERSION=2.8.2
+
+# setup root access - default login: oom/oom - comment out to restrict access too ssh key only
+sed -i 's/PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config
+sed -i 's/PasswordAuthentication.*/PasswordAuthentication yes/' /etc/ssh/sshd_config
+service sshd restart
+echo -e "oom\noom" | passwd root
+
+apt-get update
+curl https://releases.rancher.com/install-docker/$DOCKER_VERSION.sh | sh
+mkdir -p /etc/systemd/system/docker.service.d/
+cat > /etc/systemd/system/docker.service.d/docker.conf << EOF
+[Service]
+ExecStart=
+ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry=nexus3.onap.org:10001
+EOF
+systemctl daemon-reload
+systemctl restart docker
+apt-mark hold docker-ce
+
+IP_ADDY=`ip address |grep ens|grep inet|awk '{print $2}'| awk -F / '{print $1}'`
+HOSTNAME=`hostname`
+
+echo "$IP_ADDY $HOSTNAME" >> /etc/hosts
+
+docker login -u docker -p docker nexus3.onap.org:10001
+
+sudo apt-get install make -y
+
+sudo docker run -d --restart=unless-stopped -p 8080:8080 --name rancher_server rancher/server:v$RANCHER_VERSION
+sudo curl -LO https://storage.googleapis.com/kubernetes-release/release/v$KUBECTL_VERSION/bin/linux/amd64/kubectl
+sudo chmod +x ./kubectl
+sudo mv ./kubectl /usr/local/bin/kubectl
+sudo mkdir ~/.kube
+wget http://storage.googleapis.com/kubernetes-helm/helm-v${HELM_VERSION}-linux-amd64.tar.gz
+sudo tar -zxvf helm-v${HELM_VERSION}-linux-amd64.tar.gz
+sudo mv linux-amd64/helm /usr/local/bin/helm
+
+# nfs server
+sudo apt-get install nfs-kernel-server -y
+
+sudo mkdir -p /nfs_share
+sudo chown nobody:nogroup /nfs_share/
+
+
+exit 0
diff --git a/docs/otherwise_select_INFRASTRUCTURE_Hosts_and_click_on_Add_Host.jpg b/docs/otherwise_select_INFRASTRUCTURE_Hosts_and_click_on_Add_Host.jpg
new file mode 100644
index 0000000000..18af758a0d
--- /dev/null
+++ b/docs/otherwise_select_INFRASTRUCTURE_Hosts_and_click_on_Add_Host.jpg
Binary files differ
diff --git a/docs/slave_nfs_node.sh b/docs/slave_nfs_node.sh
new file mode 100644
index 0000000000..5cb164ccac
--- /dev/null
+++ b/docs/slave_nfs_node.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+usage () {
+ echo "Usage:"
+ echo " ./$(basename $0) nfs_master_ip"
+ exit 1
+}
+
+if [ "$#" -ne 1 ]; then
+ echo "Missing NFS mater node"
+ usage
+fi
+
+MASTER_IP=$1
+
+#Install NFS common
+sudo apt-get update
+sudo apt-get install -y nfs-common
+
+#Create NFS directory
+sudo mkdir -p /dockerdata-nfs
+
+#Mount the remote NFS directory to the local one
+sudo mount $MASTER_IP:/dockerdata-nfs /dockerdata-nfs/
+echo "$MASTER_IP:/dockerdata-nfs /dockerdata-nfs nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0" | sudo tee -a /etc/fstab