blob: 1b5d6d19851c6274fb753d32ceac4715b7b3e333 [file] [log] [blame]
Roger Maitlandeb412c62018-05-31 14:09:09 -04001.. This work is licensed under a Creative Commons Attribution 4.0 International License.
2.. http://creativecommons.org/licenses/by/4.0
3.. Copyright 2018 Amdocs, Bell Canada
4
5.. Links
6.. _HELM Best Practices Guide: https://docs.helm.sh/chart_best_practices/#requirements
7.. _kubectl Cheat Sheet: https://kubernetes.io/docs/reference/kubectl/cheatsheet/
8.. _Kubernetes documentation for emptyDir: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir
9.. _Docker DevOps: https://wiki.onap.org/display/DW/Docker+DevOps#DockerDevOps-DockerBuild
10.. _http://cd.onap.info:30223/mso/logging/debug: http://cd.onap.info:30223/mso/logging/debug
11.. _Onboarding and Distributing a Vendor Software Product: https://wiki.onap.org/pages/viewpage.action?pageId=1018474
12.. _README.md: https://gerrit.onap.org/r/gitweb?p=oom.git;a=blob;f=kubernetes/README.md
13
14.. figure:: oomLogoV2-medium.png
15 :align: right
16
17.. _onap-on-kubernetes-with-rancher:
18
Mike Elliottf137b2c2019-04-30 16:28:07 -040019ONAP on HA Kubernetes Cluster
20#############################
Roger Maitlandeb412c62018-05-31 14:09:09 -040021
Mike Elliottf137b2c2019-04-30 16:28:07 -040022This guide provides instructions on how to setup a Highly-Available Kubernetes Cluster.
23For this, we are hosting our cluster on OpenStack VMs and using the Rancher Kubernetes Engine (RKE)
24to deploy and manage our Kubernetes Cluster.
Roger Maitlandeb412c62018-05-31 14:09:09 -040025
Mike Elliott474c3502019-05-09 10:56:16 -040026.. contents::
27 :depth: 1
28 :local:
29..
30
Mike Elliottf137b2c2019-04-30 16:28:07 -040031The result at the end of this tutorial will be:
Roger Maitlandeb412c62018-05-31 14:09:09 -040032
Pawel Wieczorek6278d972019-07-10 18:24:42 +020033#. Creation of a Key Pair to use with Open Stack and RKE
Roger Maitlandeb412c62018-05-31 14:09:09 -040034
Pawel Wieczorek6278d972019-07-10 18:24:42 +020035#. Creation of OpenStack VMs to host Kubernetes Control Plane
Roger Maitlandeb412c62018-05-31 14:09:09 -040036
Pawel Wieczorek6278d972019-07-10 18:24:42 +020037#. Creation of OpenStack VMs to host Kubernetes Workers
Roger Maitlandeb412c62018-05-31 14:09:09 -040038
Pawel Wieczorek6278d972019-07-10 18:24:42 +020039#. Installation and configuration of RKE to setup an HA Kubernetes
Roger Maitlandeb412c62018-05-31 14:09:09 -040040
Pawel Wieczorek6278d972019-07-10 18:24:42 +020041#. Installation and configuration of kubectl
Mike Elliottf137b2c2019-04-30 16:28:07 -040042
Pawel Wieczorek6278d972019-07-10 18:24:42 +020043#. Installation and configuration of helm
Mike Elliottf137b2c2019-04-30 16:28:07 -040044
Pawel Wieczorek6278d972019-07-10 18:24:42 +020045#. Creation of an NFS Server to be used by ONAP as shared persistance
Mike Elliottf137b2c2019-04-30 16:28:07 -040046
47There are many ways one can execute the above steps. Including automation through the use of HEAT to setup the OpenStack VMs.
48To better illustrate the steps involved, we have captured the manual creation of such an environment using the ONAP Wind River Open Lab.
49
Mike Elliottf137b2c2019-04-30 16:28:07 -040050Create Key Pair
51===============
52A Key Pair is required to access the created OpenStack VMs and will be used by
53RKE to configure the VMs for Kubernetes.
54
55Use an existing key pair, import one or create a new one to assign.
56
57.. image:: images/keys/key_pair_1.png
58
59.. Note::
60 If you're creating a new Key Pair, ensure to create a local copy of the Private Key through the use of "Copy Private Key to Clipboard".
61
62For the purpose of this guide, we will assume a new local key called "onap-key"
63has been downloaded and is copied into **~/.ssh/**, from which it can be referenced.
64
Pawel Wieczorek3fd3e272019-07-10 18:08:19 +020065Example::
66
Mike Elliott474c3502019-05-09 10:56:16 -040067 > mv onap-key ~/.ssh
Mike Elliottf137b2c2019-04-30 16:28:07 -040068
Mike Elliott474c3502019-05-09 10:56:16 -040069 > chmod 600 ~/.ssh/onap-key
Mike Elliottf137b2c2019-04-30 16:28:07 -040070
71
Sylvain Desbureaux65e5f082020-03-09 12:06:03 +010072Create Network
73==============
74
75An internal network is required in order to deploy our VMs that will host
76Kubernetes.
77
78.. image:: images/network/network_1.png
79
80.. image:: images/network/network_2.png
81
82.. image:: images/network/network_3.png
83
84.. Note::
85 It's better to have one network per deployment and obviously the name of this
86 network should be unique.
87
88Now we need to create a router to attach this network to outside:
89
90.. image:: images/network/network_4.png
91
92Create Security Group
93=====================
94
95A specific security group is also required
96
97.. image:: images/sg/sg_1.png
98
99then click on `manage rules` of the newly created security group.
100And finally click on `Add Rule` and create the following one:
101
102.. image:: images/sg/sg_2.png
103
104.. Note::
105 the security is clearly not good here and the right SG will be proposed in a
106 future version
107
Mike Elliottf137b2c2019-04-30 16:28:07 -0400108Create Kubernetes Control Plane VMs
109===================================
110
111The following instructions describe how to create 3 OpenStack VMs to host the
112Highly-Available Kubernetes Control Plane.
113ONAP workloads will not be scheduled on these Control Plane nodes.
114
115Launch new VM instances
116-----------------------
117
118.. image:: images/cp_vms/control_plane_1.png
119
120Select Ubuntu 18.04 as base image
Roger Maitlandeb412c62018-05-31 14:09:09 -0400121---------------------------------
Mike Elliottf137b2c2019-04-30 16:28:07 -0400122Select "No" for "Create New Volume"
Roger Maitlandeb412c62018-05-31 14:09:09 -0400123
Mike Elliottf137b2c2019-04-30 16:28:07 -0400124.. image:: images/cp_vms/control_plane_2.png
Roger Maitlandeb412c62018-05-31 14:09:09 -0400125
126Select Flavor
127-------------
Mike Elliottf137b2c2019-04-30 16:28:07 -0400128The recommended flavor is at least 4 vCPU and 8GB ram.
Roger Maitlandeb412c62018-05-31 14:09:09 -0400129
Mike Elliottf137b2c2019-04-30 16:28:07 -0400130.. image:: images/cp_vms/control_plane_3.png
Roger Maitlandeb412c62018-05-31 14:09:09 -0400131
132Networking
133----------
134
Sylvain Desbureaux65e5f082020-03-09 12:06:03 +0100135Use the created network:
136
Mike Elliottf137b2c2019-04-30 16:28:07 -0400137.. image:: images/cp_vms/control_plane_4.png
Roger Maitlandeb412c62018-05-31 14:09:09 -0400138
139Security Groups
140---------------
141
Sylvain Desbureaux65e5f082020-03-09 12:06:03 +0100142Use the created security group:
143
Mike Elliottf137b2c2019-04-30 16:28:07 -0400144.. image:: images/cp_vms/control_plane_5.png
Roger Maitlandeb412c62018-05-31 14:09:09 -0400145
146Key Pair
147--------
Mike Elliottf137b2c2019-04-30 16:28:07 -0400148Assign the key pair that was created/selected previously (e.g. onap_key).
Roger Maitlandeb412c62018-05-31 14:09:09 -0400149
Mike Elliottf137b2c2019-04-30 16:28:07 -0400150.. image:: images/cp_vms/control_plane_6.png
Roger Maitlandeb412c62018-05-31 14:09:09 -0400151
Mike Elliottf137b2c2019-04-30 16:28:07 -0400152Apply customization script for Control Plane VMs
153------------------------------------------------
Roger Maitlandeb412c62018-05-31 14:09:09 -0400154
Sylvain Desbureaux65e5f082020-03-09 12:06:03 +0100155Click :download:`openstack-k8s-controlnode.sh <openstack-k8s-controlnode.sh>`
Mike Elliottf137b2c2019-04-30 16:28:07 -0400156to download the script.
Roger Maitlandeb412c62018-05-31 14:09:09 -0400157
Mike Elliottf137b2c2019-04-30 16:28:07 -0400158.. literalinclude:: openstack-k8s-controlnode.sh
Roger Maitlandeb412c62018-05-31 14:09:09 -0400159 :language: bash
160
161This customization script will:
162
Mike Elliottf137b2c2019-04-30 16:28:07 -0400163* update ubuntu
Roger Maitlandeb412c62018-05-31 14:09:09 -0400164* install docker
Roger Maitlandeb412c62018-05-31 14:09:09 -0400165
Mike Elliottf137b2c2019-04-30 16:28:07 -0400166.. image:: images/cp_vms/control_plane_7.png
Roger Maitlandeb412c62018-05-31 14:09:09 -0400167
168Launch Instance
169---------------
170
Mike Elliottf137b2c2019-04-30 16:28:07 -0400171.. image:: images/cp_vms/control_plane_8.png
Roger Maitlandeb412c62018-05-31 14:09:09 -0400172
Roger Maitlandeb412c62018-05-31 14:09:09 -0400173
Roger Maitlandeb412c62018-05-31 14:09:09 -0400174
Mike Elliottf137b2c2019-04-30 16:28:07 -0400175Create Kubernetes Worker VMs
176============================
177The following instructions describe how to create OpenStack VMs to host the
178Highly-Available Kubernetes Workers. ONAP workloads will only be scheduled on these nodes.
Roger Maitlandeb412c62018-05-31 14:09:09 -0400179
Mike Elliottf137b2c2019-04-30 16:28:07 -0400180Launch new VM instances
181-----------------------
Roger Maitlandeb412c62018-05-31 14:09:09 -0400182
Sylvain Desbureaux65e5f082020-03-09 12:06:03 +0100183The number and size of Worker VMs is depenedent on the size of the ONAP deployment.
184By default, all ONAP applications are deployed. It's possible to customize the deployment
Mike Elliottf137b2c2019-04-30 16:28:07 -0400185and enable a subset of the ONAP applications. For the purpose of this guide, however,
Sylvain Desbureaux65e5f082020-03-09 12:06:03 +0100186we will deploy 12 Kubernetes Workers that have been sized to handle the entire ONAP
Mike Elliottf137b2c2019-04-30 16:28:07 -0400187application workload.
Roger Maitlandeb412c62018-05-31 14:09:09 -0400188
Mike Elliottf137b2c2019-04-30 16:28:07 -0400189.. image:: images/wk_vms/worker_1.png
Roger Maitlandeb412c62018-05-31 14:09:09 -0400190
Mike Elliottf137b2c2019-04-30 16:28:07 -0400191Select Ubuntu 18.04 as base image
Roger Maitlandeb412c62018-05-31 14:09:09 -0400192---------------------------------
193Select "No" on "Create New Volume"
194
Mike Elliottf137b2c2019-04-30 16:28:07 -0400195.. image:: images/wk_vms/worker_2.png
Roger Maitlandeb412c62018-05-31 14:09:09 -0400196
197Select Flavor
198-------------
Mike Elliottf137b2c2019-04-30 16:28:07 -0400199The size of Kubernetes hosts depend on the size of the ONAP deployment
200being installed.
Roger Maitlandeb412c62018-05-31 14:09:09 -0400201
Mike Elliottf137b2c2019-04-30 16:28:07 -0400202If a small subset of ONAP applications are being deployed
203(i.e. for testing purposes), then 16GB or 32GB may be sufficient.
Roger Maitlandeb412c62018-05-31 14:09:09 -0400204
Mike Elliottf137b2c2019-04-30 16:28:07 -0400205.. image:: images/wk_vms/worker_3.png
Roger Maitlandeb412c62018-05-31 14:09:09 -0400206
207Networking
208-----------
209
Mike Elliottf137b2c2019-04-30 16:28:07 -0400210.. image:: images/wk_vms/worker_4.png
Roger Maitlandeb412c62018-05-31 14:09:09 -0400211
212Security Group
213---------------
214
Mike Elliottf137b2c2019-04-30 16:28:07 -0400215.. image:: images/wk_vms/worker_5.png
Roger Maitlandeb412c62018-05-31 14:09:09 -0400216
217Key Pair
218--------
Mike Elliottf137b2c2019-04-30 16:28:07 -0400219Assign the key pair that was created/selected previously (e.g. onap_key).
Roger Maitlandeb412c62018-05-31 14:09:09 -0400220
Mike Elliottf137b2c2019-04-30 16:28:07 -0400221.. image:: images/wk_vms/worker_6.png
Roger Maitlandeb412c62018-05-31 14:09:09 -0400222
223Apply customization script for Kubernetes VM(s)
224-----------------------------------------------
225
Mike Elliottf137b2c2019-04-30 16:28:07 -0400226Click :download:`openstack-k8s-workernode.sh <openstack-k8s-workernode.sh>` to download the
227script.
Roger Maitlandeb412c62018-05-31 14:09:09 -0400228
Mike Elliottf137b2c2019-04-30 16:28:07 -0400229.. literalinclude:: openstack-k8s-workernode.sh
Roger Maitlandeb412c62018-05-31 14:09:09 -0400230 :language: bash
231
232This customization script will:
233
Mike Elliottf137b2c2019-04-30 16:28:07 -0400234* update ubuntu
Roger Maitlandeb412c62018-05-31 14:09:09 -0400235* install docker
Mike Elliottf137b2c2019-04-30 16:28:07 -0400236* install nfs common
Roger Maitlandeb412c62018-05-31 14:09:09 -0400237
Roger Maitlandeb412c62018-05-31 14:09:09 -0400238
239Launch Instance
240---------------
241
Mike Elliottf137b2c2019-04-30 16:28:07 -0400242.. image:: images/wk_vms/worker_7.png
Roger Maitlandeb412c62018-05-31 14:09:09 -0400243
Roger Maitlandeb412c62018-05-31 14:09:09 -0400244
Roger Maitlandeb412c62018-05-31 14:09:09 -0400245
Mike Elliottf137b2c2019-04-30 16:28:07 -0400246
247Assign Floating IP addresses
248----------------------------
249Assign Floating IPs to all Control Plane and Worker VMs.
250These addresses provide external access to the VMs and will be used by RKE
251to configure kubernetes on to the VMs.
252
253Repeat the following for each VM previously created:
254
255.. image:: images/floating_ips/floating_1.png
256
257Resulting floating IP assignments in this example.
258
259.. image:: images/floating_ips/floating_2.png
260
261
262
263
264Configure Rancher Kubernetes Engine (RKE)
265=========================================
266
267Install RKE
268-----------
269Download and install RKE on a VM, desktop or laptop.
270Binaries can be found here for Linux and Mac: https://github.com/rancher/rke/releases/tag/v0.2.1
271
272RKE requires a *cluster.yml* as input. An example file is show below that
273describes a Kubernetes cluster that will be mapped onto the OpenStack VMs
274created earlier in this guide.
275
276Example: **cluster.yml**
277
278.. image:: images/rke/rke_1.png
279
280Click :download:`cluster.yml <cluster.yml>` to download the
281configuration file.
282
283.. literalinclude:: cluster.yml
284 :language: yaml
285
286Prepare cluster.yml
287-------------------
288Before this configuration file can be used the external **address**
289and the **internal_address** must be mapped for each control and worker node
290in this file.
291
292Run RKE
293-------
Pawel Wieczorek3fd3e272019-07-10 18:08:19 +0200294From within the same directory as the cluster.yml file, simply execute::
Mike Elliottf137b2c2019-04-30 16:28:07 -0400295
Mike Elliott474c3502019-05-09 10:56:16 -0400296 > rke up
Mike Elliottf137b2c2019-04-30 16:28:07 -0400297
Pawel Wieczorek3fd3e272019-07-10 18:08:19 +0200298The output will look something like::
Mike Elliott474c3502019-05-09 10:56:16 -0400299
Mike Elliottf137b2c2019-04-30 16:28:07 -0400300 INFO[0000] Initiating Kubernetes cluster
301 INFO[0000] [certificates] Generating admin certificates and kubeconfig
302 INFO[0000] Successfully Deployed state file at [./cluster.rkestate]
303 INFO[0000] Building Kubernetes cluster
304 INFO[0000] [dialer] Setup tunnel for host [10.12.6.82]
305 INFO[0000] [dialer] Setup tunnel for host [10.12.6.249]
306 INFO[0000] [dialer] Setup tunnel for host [10.12.6.74]
307 INFO[0000] [dialer] Setup tunnel for host [10.12.6.85]
308 INFO[0000] [dialer] Setup tunnel for host [10.12.6.238]
309 INFO[0000] [dialer] Setup tunnel for host [10.12.6.89]
310 INFO[0000] [dialer] Setup tunnel for host [10.12.5.11]
311 INFO[0000] [dialer] Setup tunnel for host [10.12.6.90]
312 INFO[0000] [dialer] Setup tunnel for host [10.12.6.244]
313 INFO[0000] [dialer] Setup tunnel for host [10.12.5.165]
314 INFO[0000] [dialer] Setup tunnel for host [10.12.6.126]
315 INFO[0000] [dialer] Setup tunnel for host [10.12.6.111]
316 INFO[0000] [dialer] Setup tunnel for host [10.12.5.160]
317 INFO[0000] [dialer] Setup tunnel for host [10.12.5.191]
318 INFO[0000] [dialer] Setup tunnel for host [10.12.6.195]
319 INFO[0002] [network] Deploying port listener containers
320 INFO[0002] [network] Pulling image [nexus3.onap.org:10001/rancher/rke-tools:v0.1.27] on host [10.12.6.85]
321 INFO[0002] [network] Pulling image [nexus3.onap.org:10001/rancher/rke-tools:v0.1.27] on host [10.12.6.89]
322 INFO[0002] [network] Pulling image [nexus3.onap.org:10001/rancher/rke-tools:v0.1.27] on host [10.12.6.90]
323 INFO[0011] [network] Successfully pulled image [nexus3.onap.org:10001/rancher/rke-tools:v0.1.27] on host [10.12.6.89]
324 . . . .
325 INFO[0309] [addons] Setting up Metrics Server
326 INFO[0309] [addons] Saving ConfigMap for addon rke-metrics-addon to Kubernetes
327 INFO[0309] [addons] Successfully saved ConfigMap for addon rke-metrics-addon to Kubernetes
328 INFO[0309] [addons] Executing deploy job rke-metrics-addon
329 INFO[0315] [addons] Metrics Server deployed successfully
330 INFO[0315] [ingress] Setting up nginx ingress controller
331 INFO[0315] [addons] Saving ConfigMap for addon rke-ingress-controller to Kubernetes
332 INFO[0316] [addons] Successfully saved ConfigMap for addon rke-ingress-controller to Kubernetes
333 INFO[0316] [addons] Executing deploy job rke-ingress-controller
334 INFO[0322] [ingress] ingress controller nginx deployed successfully
335 INFO[0322] [addons] Setting up user addons
336 INFO[0322] [addons] no user addons defined
337 INFO[0322] Finished building Kubernetes cluster successfully
338
339Install Kubectl
340===============
341
342Download and install kubectl. Binaries can be found here for Linux and Mac:
343
Mike Elliotta6243a92019-10-01 13:19:31 -0400344https://storage.googleapis.com/kubernetes-release/release/v1.15.2/bin/linux/amd64/kubectl
345https://storage.googleapis.com/kubernetes-release/release/v1.15.2/bin/darwin/amd64/kubectl
Mike Elliottf137b2c2019-04-30 16:28:07 -0400346
Sylvain Desbureaux572c8472020-03-12 08:49:41 +0100347You only need to install kubectl where you'll launch kubernetes command. This
348can be any machines of the kubernetes cluster or a machine that has IP access
349to the APIs.
350Usually, we use the first controller as it has also access to internal
351Kubernetes services, which can be convenient.
352
Mike Elliottf137b2c2019-04-30 16:28:07 -0400353Validate deployment
354-------------------
Pawel Wieczorek3fd3e272019-07-10 18:08:19 +0200355
356::
357
Mike Elliott474c3502019-05-09 10:56:16 -0400358 > cp kube_config_cluster.yml ~/.kube/config.onap
Mike Elliottf137b2c2019-04-30 16:28:07 -0400359
Mike Elliott474c3502019-05-09 10:56:16 -0400360 > export KUBECONFIG=~/.kube/config.onap
Mike Elliottf137b2c2019-04-30 16:28:07 -0400361
Mike Elliott474c3502019-05-09 10:56:16 -0400362 > kubectl config use-context onap
Mike Elliottf137b2c2019-04-30 16:28:07 -0400363
Mike Elliott474c3502019-05-09 10:56:16 -0400364 > kubectl get nodes -o=wide
Mike Elliottf137b2c2019-04-30 16:28:07 -0400365
Pawel Wieczorek3fd3e272019-07-10 18:08:19 +0200366::
Mike Elliott474c3502019-05-09 10:56:16 -0400367
Mike Elliottf137b2c2019-04-30 16:28:07 -0400368 NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
Mike Elliotta6243a92019-10-01 13:19:31 -0400369 onap-control-1 Ready controlplane,etcd 3h53m v1.15.2 10.0.0.8 <none> Ubuntu 18.04 LTS 4.15.0-22-generic docker://18.9.5
370 onap-control-2 Ready controlplane,etcd 3h53m v1.15.2 10.0.0.11 <none> Ubuntu 18.04 LTS 4.15.0-22-generic docker://18.9.5
371 onap-control-3 Ready controlplane,etcd 3h53m v1.15.2 10.0.0.12 <none> Ubuntu 18.04 LTS 4.15.0-22-generic docker://18.9.5
372 onap-k8s-1 Ready worker 3h53m v1.15.2 10.0.0.14 <none> Ubuntu 18.04 LTS 4.15.0-22-generic docker://18.9.5
373 onap-k8s-10 Ready worker 3h53m v1.15.2 10.0.0.16 <none> Ubuntu 18.04 LTS 4.15.0-22-generic docker://18.9.5
374 onap-k8s-11 Ready worker 3h53m v1.15.2 10.0.0.18 <none> Ubuntu 18.04 LTS 4.15.0-22-generic docker://18.9.5
375 onap-k8s-12 Ready worker 3h53m v1.15.2 10.0.0.7 <none> Ubuntu 18.04 LTS 4.15.0-22-generic docker://18.9.5
376 onap-k8s-2 Ready worker 3h53m v1.15.2 10.0.0.26 <none> Ubuntu 18.04 LTS 4.15.0-22-generic docker://18.9.5
377 onap-k8s-3 Ready worker 3h53m v1.15.2 10.0.0.5 <none> Ubuntu 18.04 LTS 4.15.0-22-generic docker://18.9.5
378 onap-k8s-4 Ready worker 3h53m v1.15.2 10.0.0.6 <none> Ubuntu 18.04 LTS 4.15.0-22-generic docker://18.9.5
379 onap-k8s-5 Ready worker 3h53m v1.15.2 10.0.0.9 <none> Ubuntu 18.04 LTS 4.15.0-22-generic docker://18.9.5
380 onap-k8s-6 Ready worker 3h53m v1.15.2 10.0.0.17 <none> Ubuntu 18.04 LTS 4.15.0-22-generic docker://18.9.5
381 onap-k8s-7 Ready worker 3h53m v1.15.2 10.0.0.20 <none> Ubuntu 18.04 LTS 4.15.0-22-generic docker://18.9.5
382 onap-k8s-8 Ready worker 3h53m v1.15.2 10.0.0.10 <none> Ubuntu 18.04 LTS 4.15.0-22-generic docker://18.9.5
383 onap-k8s-9 Ready worker 3h53m v1.15.2 10.0.0.4 <none> Ubuntu 18.04 LTS 4.15.0-22-generic docker://18.9.5
Mike Elliottf137b2c2019-04-30 16:28:07 -0400384
385
386Install Helm
387============
388
Pawel Wieczorek3fd3e272019-07-10 18:08:19 +0200389Example Helm client install on Linux::
390
Mike Elliotta6243a92019-10-01 13:19:31 -0400391 > wget http://storage.googleapis.com/kubernetes-helm/helm-v2.14.2-linux-amd64.tar.gz
Mike Elliottf137b2c2019-04-30 16:28:07 -0400392
Mike Elliotta6243a92019-10-01 13:19:31 -0400393 > tar -zxvf helm-v2.14.2-linux-amd64.tar.gz
Mike Elliottf137b2c2019-04-30 16:28:07 -0400394
Mike Elliott474c3502019-05-09 10:56:16 -0400395 > sudo mv linux-amd64/helm /usr/local/bin/helm
Mike Elliottf137b2c2019-04-30 16:28:07 -0400396
Mike Elliott474c3502019-05-09 10:56:16 -0400397Initialize Kubernetes Cluster for use by Helm
398---------------------------------------------
Pawel Wieczorek3fd3e272019-07-10 18:08:19 +0200399
400::
401
Mike Elliott474c3502019-05-09 10:56:16 -0400402 > kubectl -n kube-system create serviceaccount tiller
403
404 > kubectl create clusterrolebinding tiller --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
405
406 > helm init --service-account tiller
407
408 > kubectl -n kube-system  rollout status deploy/tiller-deploy
Mike Elliottf137b2c2019-04-30 16:28:07 -0400409
410
Roger Maitlandeb412c62018-05-31 14:09:09 -0400411
412Setting up an NFS share for Multinode Kubernetes Clusters
413=========================================================
Roger Maitlandeb412c62018-05-31 14:09:09 -0400414Deploying applications to a Kubernetes cluster requires Kubernetes nodes to
Mike Elliottf137b2c2019-04-30 16:28:07 -0400415share a common, distributed filesystem. In this tutorial, we will setup an
416NFS Master, and configure all Worker nodes a Kubernetes cluster to play
417the role of NFS slaves.
418
419It is recommneded that a separate VM, outside of the kubernetes
420cluster, be used. This is to ensure that the NFS Master does not compete for
421resources with Kubernetes Control Plane or Worker Nodes.
422
423
424Launch new NFS Server VM instance
425---------------------------------
426.. image:: images/nfs_server/nfs_server_1.png
427
428Select Ubuntu 18.04 as base image
429---------------------------------
430Select "No" on "Create New Volume"
431
432.. image:: images/nfs_server/nfs_server_2.png
433
434Select Flavor
435-------------
436
437.. image:: images/nfs_server/nfs_server_3.png
438
439Networking
440-----------
441
442.. image:: images/nfs_server/nfs_server_4.png
443
444Security Group
445---------------
446
447.. image:: images/nfs_server/nfs_server_5.png
448
449Key Pair
450--------
451Assign the key pair that was created/selected previously (e.g. onap_key).
452
453.. image:: images/nfs_server/nfs_server_6.png
454
455Apply customization script for NFS Server VM
456--------------------------------------------
457
458Click :download:`openstack-nfs-server.sh <openstack-nfs-server.sh>` to download the
459script.
460
ksinghn24738a13612020-02-18 17:57:45 +0530461.. literalinclude:: openstack-nfs-server.sh
Mike Elliottf137b2c2019-04-30 16:28:07 -0400462 :language: bash
463
464This customization script will:
465
466* update ubuntu
467* install nfs server
468
469
470Launch Instance
471---------------
472
473.. image:: images/nfs_server/nfs_server_7.png
474
475
476
477Assign Floating IP addresses
478----------------------------
479
480.. image:: images/nfs_server/nfs_server_8.png
481
482Resulting floating IP assignments in this example.
483
484.. image:: images/nfs_server/nfs_server_9.png
485
486
487To properly set up an NFS share on Master and Slave nodes, the user can run the
488scripts below.
Roger Maitlandeb412c62018-05-31 14:09:09 -0400489
Sylvain Desbureaux7fe7b042019-01-31 17:10:12 +0100490Click :download:`master_nfs_node.sh <master_nfs_node.sh>` to download the
491script.
Roger Maitlandeb412c62018-05-31 14:09:09 -0400492
493.. literalinclude:: master_nfs_node.sh
494 :language: bash
495
496Click :download:`slave_nfs_node.sh <slave_nfs_node.sh>` to download the script.
497
498.. literalinclude:: slave_nfs_node.sh
499 :language: bash
500
501The master_nfs_node.sh script runs in the NFS Master node and needs the list of
502NFS Slave nodes as input, e.g.::
503
Mike Elliott474c3502019-05-09 10:56:16 -0400504 > sudo ./master_nfs_node.sh node1_ip node2_ip ... nodeN_ip
Roger Maitlandeb412c62018-05-31 14:09:09 -0400505
506The slave_nfs_node.sh script runs in each NFS Slave node and needs the IP of
507the NFS Master node as input, e.g.::
508
Mike Elliott474c3502019-05-09 10:56:16 -0400509 > sudo ./slave_nfs_node.sh master_node_ip
Roger Maitlandeb412c62018-05-31 14:09:09 -0400510
Roger Maitlandeb412c62018-05-31 14:09:09 -0400511
512ONAP Deployment via OOM
513=======================
514Now that kubernetes and Helm are installed and configured you can prepare to
515deploy ONAP. Follow the instructions in the README.md_ or look at the official
516documentation to get started:
517
518- :ref:`quick-start-label` - deploy ONAP on an existing cloud
519- :ref:`user-guide-label` - a guide for operators of an ONAP instance