Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 1 | .. 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 Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 19 | ONAP on HA Kubernetes Cluster |
| 20 | ############################# |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 21 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 22 | This guide provides instructions on how to setup a Highly-Available Kubernetes Cluster. |
| 23 | For this, we are hosting our cluster on OpenStack VMs and using the Rancher Kubernetes Engine (RKE) |
| 24 | to deploy and manage our Kubernetes Cluster. |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 25 | |
Mike Elliott | 474c350 | 2019-05-09 10:56:16 -0400 | [diff] [blame] | 26 | .. contents:: |
| 27 | :depth: 1 |
| 28 | :local: |
| 29 | .. |
| 30 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 31 | The result at the end of this tutorial will be: |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 32 | |
Pawel Wieczorek | 6278d97 | 2019-07-10 18:24:42 +0200 | [diff] [blame] | 33 | #. Creation of a Key Pair to use with Open Stack and RKE |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 34 | |
Pawel Wieczorek | 6278d97 | 2019-07-10 18:24:42 +0200 | [diff] [blame] | 35 | #. Creation of OpenStack VMs to host Kubernetes Control Plane |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 36 | |
Pawel Wieczorek | 6278d97 | 2019-07-10 18:24:42 +0200 | [diff] [blame] | 37 | #. Creation of OpenStack VMs to host Kubernetes Workers |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 38 | |
Pawel Wieczorek | 6278d97 | 2019-07-10 18:24:42 +0200 | [diff] [blame] | 39 | #. Installation and configuration of RKE to setup an HA Kubernetes |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 40 | |
Pawel Wieczorek | 6278d97 | 2019-07-10 18:24:42 +0200 | [diff] [blame] | 41 | #. Installation and configuration of kubectl |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 42 | |
Pawel Wieczorek | 6278d97 | 2019-07-10 18:24:42 +0200 | [diff] [blame] | 43 | #. Installation and configuration of helm |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 44 | |
Pawel Wieczorek | 6278d97 | 2019-07-10 18:24:42 +0200 | [diff] [blame] | 45 | #. Creation of an NFS Server to be used by ONAP as shared persistance |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 46 | |
| 47 | There are many ways one can execute the above steps. Including automation through the use of HEAT to setup the OpenStack VMs. |
| 48 | To better illustrate the steps involved, we have captured the manual creation of such an environment using the ONAP Wind River Open Lab. |
| 49 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 50 | Create Key Pair |
| 51 | =============== |
| 52 | A Key Pair is required to access the created OpenStack VMs and will be used by |
| 53 | RKE to configure the VMs for Kubernetes. |
| 54 | |
| 55 | Use 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 | |
| 62 | For the purpose of this guide, we will assume a new local key called "onap-key" |
| 63 | has been downloaded and is copied into **~/.ssh/**, from which it can be referenced. |
| 64 | |
Pawel Wieczorek | 3fd3e27 | 2019-07-10 18:08:19 +0200 | [diff] [blame] | 65 | Example:: |
| 66 | |
Mike Elliott | 474c350 | 2019-05-09 10:56:16 -0400 | [diff] [blame] | 67 | > mv onap-key ~/.ssh |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 68 | |
Mike Elliott | 474c350 | 2019-05-09 10:56:16 -0400 | [diff] [blame] | 69 | > chmod 600 ~/.ssh/onap-key |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 70 | |
| 71 | |
Sylvain Desbureaux | 65e5f08 | 2020-03-09 12:06:03 +0100 | [diff] [blame] | 72 | Create Network |
| 73 | ============== |
| 74 | |
| 75 | An internal network is required in order to deploy our VMs that will host |
| 76 | Kubernetes. |
| 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 | |
| 88 | Now we need to create a router to attach this network to outside: |
| 89 | |
| 90 | .. image:: images/network/network_4.png |
| 91 | |
| 92 | Create Security Group |
| 93 | ===================== |
| 94 | |
| 95 | A specific security group is also required |
| 96 | |
| 97 | .. image:: images/sg/sg_1.png |
| 98 | |
| 99 | then click on `manage rules` of the newly created security group. |
| 100 | And 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 Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 108 | Create Kubernetes Control Plane VMs |
| 109 | =================================== |
| 110 | |
| 111 | The following instructions describe how to create 3 OpenStack VMs to host the |
| 112 | Highly-Available Kubernetes Control Plane. |
| 113 | ONAP workloads will not be scheduled on these Control Plane nodes. |
| 114 | |
| 115 | Launch new VM instances |
| 116 | ----------------------- |
| 117 | |
| 118 | .. image:: images/cp_vms/control_plane_1.png |
| 119 | |
| 120 | Select Ubuntu 18.04 as base image |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 121 | --------------------------------- |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 122 | Select "No" for "Create New Volume" |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 123 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 124 | .. image:: images/cp_vms/control_plane_2.png |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 125 | |
| 126 | Select Flavor |
| 127 | ------------- |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 128 | The recommended flavor is at least 4 vCPU and 8GB ram. |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 129 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 130 | .. image:: images/cp_vms/control_plane_3.png |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 131 | |
| 132 | Networking |
| 133 | ---------- |
| 134 | |
Sylvain Desbureaux | 65e5f08 | 2020-03-09 12:06:03 +0100 | [diff] [blame] | 135 | Use the created network: |
| 136 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 137 | .. image:: images/cp_vms/control_plane_4.png |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 138 | |
| 139 | Security Groups |
| 140 | --------------- |
| 141 | |
Sylvain Desbureaux | 65e5f08 | 2020-03-09 12:06:03 +0100 | [diff] [blame] | 142 | Use the created security group: |
| 143 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 144 | .. image:: images/cp_vms/control_plane_5.png |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 145 | |
| 146 | Key Pair |
| 147 | -------- |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 148 | Assign the key pair that was created/selected previously (e.g. onap_key). |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 149 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 150 | .. image:: images/cp_vms/control_plane_6.png |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 151 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 152 | Apply customization script for Control Plane VMs |
| 153 | ------------------------------------------------ |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 154 | |
Sylvain Desbureaux | 65e5f08 | 2020-03-09 12:06:03 +0100 | [diff] [blame] | 155 | Click :download:`openstack-k8s-controlnode.sh <openstack-k8s-controlnode.sh>` |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 156 | to download the script. |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 157 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 158 | .. literalinclude:: openstack-k8s-controlnode.sh |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 159 | :language: bash |
| 160 | |
| 161 | This customization script will: |
| 162 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 163 | * update ubuntu |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 164 | * install docker |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 165 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 166 | .. image:: images/cp_vms/control_plane_7.png |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 167 | |
| 168 | Launch Instance |
| 169 | --------------- |
| 170 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 171 | .. image:: images/cp_vms/control_plane_8.png |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 172 | |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 173 | |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 174 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 175 | Create Kubernetes Worker VMs |
| 176 | ============================ |
| 177 | The following instructions describe how to create OpenStack VMs to host the |
| 178 | Highly-Available Kubernetes Workers. ONAP workloads will only be scheduled on these nodes. |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 179 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 180 | Launch new VM instances |
| 181 | ----------------------- |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 182 | |
Sylvain Desbureaux | 65e5f08 | 2020-03-09 12:06:03 +0100 | [diff] [blame] | 183 | The number and size of Worker VMs is depenedent on the size of the ONAP deployment. |
| 184 | By default, all ONAP applications are deployed. It's possible to customize the deployment |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 185 | and enable a subset of the ONAP applications. For the purpose of this guide, however, |
Sylvain Desbureaux | 65e5f08 | 2020-03-09 12:06:03 +0100 | [diff] [blame] | 186 | we will deploy 12 Kubernetes Workers that have been sized to handle the entire ONAP |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 187 | application workload. |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 188 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 189 | .. image:: images/wk_vms/worker_1.png |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 190 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 191 | Select Ubuntu 18.04 as base image |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 192 | --------------------------------- |
| 193 | Select "No" on "Create New Volume" |
| 194 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 195 | .. image:: images/wk_vms/worker_2.png |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 196 | |
| 197 | Select Flavor |
| 198 | ------------- |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 199 | The size of Kubernetes hosts depend on the size of the ONAP deployment |
| 200 | being installed. |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 201 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 202 | If a small subset of ONAP applications are being deployed |
| 203 | (i.e. for testing purposes), then 16GB or 32GB may be sufficient. |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 204 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 205 | .. image:: images/wk_vms/worker_3.png |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 206 | |
| 207 | Networking |
| 208 | ----------- |
| 209 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 210 | .. image:: images/wk_vms/worker_4.png |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 211 | |
| 212 | Security Group |
| 213 | --------------- |
| 214 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 215 | .. image:: images/wk_vms/worker_5.png |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 216 | |
| 217 | Key Pair |
| 218 | -------- |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 219 | Assign the key pair that was created/selected previously (e.g. onap_key). |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 220 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 221 | .. image:: images/wk_vms/worker_6.png |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 222 | |
| 223 | Apply customization script for Kubernetes VM(s) |
| 224 | ----------------------------------------------- |
| 225 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 226 | Click :download:`openstack-k8s-workernode.sh <openstack-k8s-workernode.sh>` to download the |
| 227 | script. |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 228 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 229 | .. literalinclude:: openstack-k8s-workernode.sh |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 230 | :language: bash |
| 231 | |
| 232 | This customization script will: |
| 233 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 234 | * update ubuntu |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 235 | * install docker |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 236 | * install nfs common |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 237 | |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 238 | |
| 239 | Launch Instance |
| 240 | --------------- |
| 241 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 242 | .. image:: images/wk_vms/worker_7.png |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 243 | |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 244 | |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 245 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 246 | |
| 247 | Assign Floating IP addresses |
| 248 | ---------------------------- |
| 249 | Assign Floating IPs to all Control Plane and Worker VMs. |
| 250 | These addresses provide external access to the VMs and will be used by RKE |
| 251 | to configure kubernetes on to the VMs. |
| 252 | |
| 253 | Repeat the following for each VM previously created: |
| 254 | |
| 255 | .. image:: images/floating_ips/floating_1.png |
| 256 | |
| 257 | Resulting floating IP assignments in this example. |
| 258 | |
| 259 | .. image:: images/floating_ips/floating_2.png |
| 260 | |
| 261 | |
| 262 | |
| 263 | |
| 264 | Configure Rancher Kubernetes Engine (RKE) |
| 265 | ========================================= |
| 266 | |
| 267 | Install RKE |
| 268 | ----------- |
| 269 | Download and install RKE on a VM, desktop or laptop. |
Sylvain Desbureaux | cff4b65 | 2020-04-20 13:15:36 +0200 | [diff] [blame] | 270 | Binaries can be found here for Linux and Mac: https://github.com/rancher/rke/releases/tag/v1.0.6 |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 271 | |
| 272 | RKE requires a *cluster.yml* as input. An example file is show below that |
| 273 | describes a Kubernetes cluster that will be mapped onto the OpenStack VMs |
| 274 | created earlier in this guide. |
| 275 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 276 | Click :download:`cluster.yml <cluster.yml>` to download the |
| 277 | configuration file. |
| 278 | |
| 279 | .. literalinclude:: cluster.yml |
| 280 | :language: yaml |
| 281 | |
| 282 | Prepare cluster.yml |
| 283 | ------------------- |
| 284 | Before this configuration file can be used the external **address** |
| 285 | and the **internal_address** must be mapped for each control and worker node |
| 286 | in this file. |
| 287 | |
| 288 | Run RKE |
| 289 | ------- |
Pawel Wieczorek | 3fd3e27 | 2019-07-10 18:08:19 +0200 | [diff] [blame] | 290 | From within the same directory as the cluster.yml file, simply execute:: |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 291 | |
Mike Elliott | 474c350 | 2019-05-09 10:56:16 -0400 | [diff] [blame] | 292 | > rke up |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 293 | |
Pawel Wieczorek | 3fd3e27 | 2019-07-10 18:08:19 +0200 | [diff] [blame] | 294 | The output will look something like:: |
Mike Elliott | 474c350 | 2019-05-09 10:56:16 -0400 | [diff] [blame] | 295 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 296 | INFO[0000] Initiating Kubernetes cluster |
| 297 | INFO[0000] [certificates] Generating admin certificates and kubeconfig |
| 298 | INFO[0000] Successfully Deployed state file at [./cluster.rkestate] |
| 299 | INFO[0000] Building Kubernetes cluster |
| 300 | INFO[0000] [dialer] Setup tunnel for host [10.12.6.82] |
| 301 | INFO[0000] [dialer] Setup tunnel for host [10.12.6.249] |
| 302 | INFO[0000] [dialer] Setup tunnel for host [10.12.6.74] |
| 303 | INFO[0000] [dialer] Setup tunnel for host [10.12.6.85] |
| 304 | INFO[0000] [dialer] Setup tunnel for host [10.12.6.238] |
| 305 | INFO[0000] [dialer] Setup tunnel for host [10.12.6.89] |
| 306 | INFO[0000] [dialer] Setup tunnel for host [10.12.5.11] |
| 307 | INFO[0000] [dialer] Setup tunnel for host [10.12.6.90] |
| 308 | INFO[0000] [dialer] Setup tunnel for host [10.12.6.244] |
| 309 | INFO[0000] [dialer] Setup tunnel for host [10.12.5.165] |
| 310 | INFO[0000] [dialer] Setup tunnel for host [10.12.6.126] |
| 311 | INFO[0000] [dialer] Setup tunnel for host [10.12.6.111] |
| 312 | INFO[0000] [dialer] Setup tunnel for host [10.12.5.160] |
| 313 | INFO[0000] [dialer] Setup tunnel for host [10.12.5.191] |
| 314 | INFO[0000] [dialer] Setup tunnel for host [10.12.6.195] |
| 315 | INFO[0002] [network] Deploying port listener containers |
| 316 | INFO[0002] [network] Pulling image [nexus3.onap.org:10001/rancher/rke-tools:v0.1.27] on host [10.12.6.85] |
| 317 | INFO[0002] [network] Pulling image [nexus3.onap.org:10001/rancher/rke-tools:v0.1.27] on host [10.12.6.89] |
| 318 | INFO[0002] [network] Pulling image [nexus3.onap.org:10001/rancher/rke-tools:v0.1.27] on host [10.12.6.90] |
| 319 | INFO[0011] [network] Successfully pulled image [nexus3.onap.org:10001/rancher/rke-tools:v0.1.27] on host [10.12.6.89] |
| 320 | . . . . |
| 321 | INFO[0309] [addons] Setting up Metrics Server |
| 322 | INFO[0309] [addons] Saving ConfigMap for addon rke-metrics-addon to Kubernetes |
| 323 | INFO[0309] [addons] Successfully saved ConfigMap for addon rke-metrics-addon to Kubernetes |
| 324 | INFO[0309] [addons] Executing deploy job rke-metrics-addon |
| 325 | INFO[0315] [addons] Metrics Server deployed successfully |
| 326 | INFO[0315] [ingress] Setting up nginx ingress controller |
| 327 | INFO[0315] [addons] Saving ConfigMap for addon rke-ingress-controller to Kubernetes |
| 328 | INFO[0316] [addons] Successfully saved ConfigMap for addon rke-ingress-controller to Kubernetes |
| 329 | INFO[0316] [addons] Executing deploy job rke-ingress-controller |
| 330 | INFO[0322] [ingress] ingress controller nginx deployed successfully |
| 331 | INFO[0322] [addons] Setting up user addons |
| 332 | INFO[0322] [addons] no user addons defined |
| 333 | INFO[0322] Finished building Kubernetes cluster successfully |
| 334 | |
| 335 | Install Kubectl |
| 336 | =============== |
| 337 | |
| 338 | Download and install kubectl. Binaries can be found here for Linux and Mac: |
| 339 | |
Sylvain Desbureaux | cff4b65 | 2020-04-20 13:15:36 +0200 | [diff] [blame] | 340 | https://storage.googleapis.com/kubernetes-release/release/v1.15.11/bin/linux/amd64/kubectl |
| 341 | https://storage.googleapis.com/kubernetes-release/release/v1.15.11/bin/darwin/amd64/kubectl |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 342 | |
Sylvain Desbureaux | 572c847 | 2020-03-12 08:49:41 +0100 | [diff] [blame] | 343 | You only need to install kubectl where you'll launch kubernetes command. This |
| 344 | can be any machines of the kubernetes cluster or a machine that has IP access |
| 345 | to the APIs. |
| 346 | Usually, we use the first controller as it has also access to internal |
| 347 | Kubernetes services, which can be convenient. |
| 348 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 349 | Validate deployment |
| 350 | ------------------- |
Pawel Wieczorek | 3fd3e27 | 2019-07-10 18:08:19 +0200 | [diff] [blame] | 351 | |
| 352 | :: |
| 353 | |
Mike Elliott | 474c350 | 2019-05-09 10:56:16 -0400 | [diff] [blame] | 354 | > cp kube_config_cluster.yml ~/.kube/config.onap |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 355 | |
Mike Elliott | 474c350 | 2019-05-09 10:56:16 -0400 | [diff] [blame] | 356 | > export KUBECONFIG=~/.kube/config.onap |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 357 | |
Mike Elliott | 474c350 | 2019-05-09 10:56:16 -0400 | [diff] [blame] | 358 | > kubectl config use-context onap |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 359 | |
Mike Elliott | 474c350 | 2019-05-09 10:56:16 -0400 | [diff] [blame] | 360 | > kubectl get nodes -o=wide |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 361 | |
Pawel Wieczorek | 3fd3e27 | 2019-07-10 18:08:19 +0200 | [diff] [blame] | 362 | :: |
Mike Elliott | 474c350 | 2019-05-09 10:56:16 -0400 | [diff] [blame] | 363 | |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 364 | NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME |
Mike Elliott | a6243a9 | 2019-10-01 13:19:31 -0400 | [diff] [blame] | 365 | 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 |
| 366 | 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 |
| 367 | 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 |
| 368 | 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 |
| 369 | 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 |
| 370 | 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 |
| 371 | 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 |
| 372 | 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 |
| 373 | 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 |
| 374 | 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 |
| 375 | 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 |
| 376 | 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 |
| 377 | 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 |
| 378 | 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 |
| 379 | 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 Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 380 | |
| 381 | |
| 382 | Install Helm |
| 383 | ============ |
| 384 | |
Pawel Wieczorek | 3fd3e27 | 2019-07-10 18:08:19 +0200 | [diff] [blame] | 385 | Example Helm client install on Linux:: |
| 386 | |
Sylvain Desbureaux | cff4b65 | 2020-04-20 13:15:36 +0200 | [diff] [blame] | 387 | > wget https://get.helm.sh/helm-v2.16.6-linux-amd64.tar.gz |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 388 | |
Sylvain Desbureaux | cff4b65 | 2020-04-20 13:15:36 +0200 | [diff] [blame] | 389 | > tar -zxvf helm-v2.16.6-linux-amd64.tar.gz |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 390 | |
Mike Elliott | 474c350 | 2019-05-09 10:56:16 -0400 | [diff] [blame] | 391 | > sudo mv linux-amd64/helm /usr/local/bin/helm |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 392 | |
Mike Elliott | 474c350 | 2019-05-09 10:56:16 -0400 | [diff] [blame] | 393 | Initialize Kubernetes Cluster for use by Helm |
| 394 | --------------------------------------------- |
Pawel Wieczorek | 3fd3e27 | 2019-07-10 18:08:19 +0200 | [diff] [blame] | 395 | |
| 396 | :: |
| 397 | |
Mike Elliott | 474c350 | 2019-05-09 10:56:16 -0400 | [diff] [blame] | 398 | > kubectl -n kube-system create serviceaccount tiller |
| 399 | |
| 400 | > kubectl create clusterrolebinding tiller --clusterrole=cluster-admin --serviceaccount=kube-system:tiller |
| 401 | |
| 402 | > helm init --service-account tiller |
| 403 | |
| 404 | > kubectl -n kube-system rollout status deploy/tiller-deploy |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 405 | |
| 406 | |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 407 | |
| 408 | Setting up an NFS share for Multinode Kubernetes Clusters |
| 409 | ========================================================= |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 410 | Deploying applications to a Kubernetes cluster requires Kubernetes nodes to |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 411 | share a common, distributed filesystem. In this tutorial, we will setup an |
| 412 | NFS Master, and configure all Worker nodes a Kubernetes cluster to play |
| 413 | the role of NFS slaves. |
| 414 | |
| 415 | It is recommneded that a separate VM, outside of the kubernetes |
| 416 | cluster, be used. This is to ensure that the NFS Master does not compete for |
| 417 | resources with Kubernetes Control Plane or Worker Nodes. |
| 418 | |
| 419 | |
| 420 | Launch new NFS Server VM instance |
| 421 | --------------------------------- |
| 422 | .. image:: images/nfs_server/nfs_server_1.png |
| 423 | |
| 424 | Select Ubuntu 18.04 as base image |
| 425 | --------------------------------- |
| 426 | Select "No" on "Create New Volume" |
| 427 | |
| 428 | .. image:: images/nfs_server/nfs_server_2.png |
| 429 | |
| 430 | Select Flavor |
| 431 | ------------- |
| 432 | |
| 433 | .. image:: images/nfs_server/nfs_server_3.png |
| 434 | |
| 435 | Networking |
| 436 | ----------- |
| 437 | |
| 438 | .. image:: images/nfs_server/nfs_server_4.png |
| 439 | |
| 440 | Security Group |
| 441 | --------------- |
| 442 | |
| 443 | .. image:: images/nfs_server/nfs_server_5.png |
| 444 | |
| 445 | Key Pair |
| 446 | -------- |
| 447 | Assign the key pair that was created/selected previously (e.g. onap_key). |
| 448 | |
| 449 | .. image:: images/nfs_server/nfs_server_6.png |
| 450 | |
| 451 | Apply customization script for NFS Server VM |
| 452 | -------------------------------------------- |
| 453 | |
| 454 | Click :download:`openstack-nfs-server.sh <openstack-nfs-server.sh>` to download the |
| 455 | script. |
| 456 | |
ksinghn247 | 38a1361 | 2020-02-18 17:57:45 +0530 | [diff] [blame] | 457 | .. literalinclude:: openstack-nfs-server.sh |
Mike Elliott | f137b2c | 2019-04-30 16:28:07 -0400 | [diff] [blame] | 458 | :language: bash |
| 459 | |
| 460 | This customization script will: |
| 461 | |
| 462 | * update ubuntu |
| 463 | * install nfs server |
| 464 | |
| 465 | |
| 466 | Launch Instance |
| 467 | --------------- |
| 468 | |
| 469 | .. image:: images/nfs_server/nfs_server_7.png |
| 470 | |
| 471 | |
| 472 | |
| 473 | Assign Floating IP addresses |
| 474 | ---------------------------- |
| 475 | |
| 476 | .. image:: images/nfs_server/nfs_server_8.png |
| 477 | |
| 478 | Resulting floating IP assignments in this example. |
| 479 | |
| 480 | .. image:: images/nfs_server/nfs_server_9.png |
| 481 | |
| 482 | |
| 483 | To properly set up an NFS share on Master and Slave nodes, the user can run the |
| 484 | scripts below. |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 485 | |
Sylvain Desbureaux | 7fe7b04 | 2019-01-31 17:10:12 +0100 | [diff] [blame] | 486 | Click :download:`master_nfs_node.sh <master_nfs_node.sh>` to download the |
| 487 | script. |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 488 | |
| 489 | .. literalinclude:: master_nfs_node.sh |
| 490 | :language: bash |
| 491 | |
| 492 | Click :download:`slave_nfs_node.sh <slave_nfs_node.sh>` to download the script. |
| 493 | |
| 494 | .. literalinclude:: slave_nfs_node.sh |
| 495 | :language: bash |
| 496 | |
| 497 | The master_nfs_node.sh script runs in the NFS Master node and needs the list of |
| 498 | NFS Slave nodes as input, e.g.:: |
| 499 | |
Mike Elliott | 474c350 | 2019-05-09 10:56:16 -0400 | [diff] [blame] | 500 | > sudo ./master_nfs_node.sh node1_ip node2_ip ... nodeN_ip |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 501 | |
| 502 | The slave_nfs_node.sh script runs in each NFS Slave node and needs the IP of |
| 503 | the NFS Master node as input, e.g.:: |
| 504 | |
Mike Elliott | 474c350 | 2019-05-09 10:56:16 -0400 | [diff] [blame] | 505 | > sudo ./slave_nfs_node.sh master_node_ip |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 506 | |
Roger Maitland | eb412c6 | 2018-05-31 14:09:09 -0400 | [diff] [blame] | 507 | |
| 508 | ONAP Deployment via OOM |
| 509 | ======================= |
| 510 | Now that kubernetes and Helm are installed and configured you can prepare to |
| 511 | deploy ONAP. Follow the instructions in the README.md_ or look at the official |
| 512 | documentation to get started: |
| 513 | |
| 514 | - :ref:`quick-start-label` - deploy ONAP on an existing cloud |
| 515 | - :ref:`user-guide-label` - a guide for operators of an ONAP instance |