From 04f9ce6f4f7d399105172ba841fefa6e376f2572 Mon Sep 17 00:00:00 2001 From: Victor Morales Date: Fri, 16 Nov 2018 08:29:07 -0800 Subject: [PATCH] Document All-in-One Bare-Metal provisioning This document describe the proces to do an All-in-One deployment in a Bare-Metal deployment, listing the Hardware and Software minimal requirements, it also uses the aio.sh bash script for reducing the number of manual steps. Vagrantfile and installer.sh has been modified to disable functional tests by default and includes the passwordless sudo verification. Change-Id: Iec7b0bb37d2a46342e6b7e60bed37dbdf2019a10 Signed-off-by: Victor Morales Issue-ID: MULTICLOUD-408 --- .gitignore | 1 + docs/bare_metal_provisioning.rst | 148 +++++++++++++++++++++++++++++++++++++++ docs/img/installer_workflow.png | Bin 0 -> 64943 bytes docs/index.rst | 5 +- vagrant/Vagrantfile | 2 +- vagrant/aio.sh | 58 +++++++++++++++ vagrant/installer.sh | 16 ++++- 7 files changed, 224 insertions(+), 6 deletions(-) create mode 100644 docs/bare_metal_provisioning.rst create mode 100644 docs/img/installer_workflow.png create mode 100755 vagrant/aio.sh diff --git a/.gitignore b/.gitignore index b32f4c13..1e570c18 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ .*.swp *.log coverage.html +docs/build # Directories pkg diff --git a/docs/bare_metal_provisioning.rst b/docs/bare_metal_provisioning.rst new file mode 100644 index 00000000..7555611c --- /dev/null +++ b/docs/bare_metal_provisioning.rst @@ -0,0 +1,148 @@ +.. Copyright 2018 Intel Corporation. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*********************** +Bare-Metal Provisioning +*********************** + +The Kubernetes Reference Deployment, aka KRD, has been designed to be consumed +by Virtual Machines as well as Bare-Metal servers. The *vagrant/aio.sh* +script contains the bash instructions for provisioning an All-in-One Kubernetes +deployment in a Bare-Metal server. This document lists the Hardware & Software +requirements and walkthrough the instructions that *vagrant/aio.sh* contains. + +Hardware Requirements +##################### + ++-----------+--------+ +| Concept | Amount | ++===========+========+ +| CPUs | 8 | ++-----------+--------+ +| Memory | 32GB | ++-----------+--------+ +| Hard Disk | 150GB | ++-----------+--------+ + +Software Requirements +##################### + +- Ubuntu Server 16.04 LTS + +vagrant/aio.sh +############## + +This bash script provides an automated process for deploying an All-in-One +Kubernetes cluster. Given that the ansible inventory file created by this +script doesn't specify any information about user and password, it's necessary +to execute this script as root user. + +The following two instructions start the provisioning process. + +.. code-block:: bash + + $ sudo su + # wget -O - https://git.onap.org/multicloud/k8s/plain/vagrant/aio.sh | bash + +In overall, this script can be summarized in three general phases: + +1. Cloning and configuring the KRD project. +2. Enabiling Nested-Virtualization. +3. Deploying KRD services. + +**Cloning and configuring the KRD project** + +KRD requires multiple files(bash scripts and ansible playbooks) to operate. +Therefore, it's necessary to clone the *ONAP multicloud/k8s* project to get +access to the *vagrant* folder. + +.. code-block:: bash + + git clone https://git.onap.org/multicloud/k8s/ + +Ansible works agains multiple systems, the way for selecting them is through the +usage of the inventory. The inventory file is a static source for determining the +target servers used for the execution of ansible tasks. The *aio.sh* script creates +an inventory file for addressing those tasks to localhost. + +.. code-block:: bash + + cat < inventory/hosts.ini + [all] + localhost + + [kube-master] + localhost + + [kube-node] + localhost + + [etcd] + localhost + + [ovn-central] + localhost + + [ovn-controller] + localhost + + [virtlet] + localhost + + [k8s-cluster:children] + kube-node + kube-master + EOL + +KRD consumes kubespray_ for provisioning a Kubernetes base deployment. As part +of the deployment process, this tool downloads and configures *kubectl* binary. +This action conflicts with *andrewrothstein.kubectl* ansible role. Therefore is +necessary to remove those instructions from all the ansible playbooks. + +.. _kubespray: https://github.com/kubernetes-incubator/kubespray + +.. code-block:: bash + + # sed -i '/andrewrothstein.kubectl/d' playbooks/configure-*.ymlb + +Ansible uses SSH protocol for executing remote instructions. The following +instructions create and register ssh keys which avoid the usage of passwords. + +.. code-block:: bash + + # echo -e "\n\n\n" | ssh-keygen -t rsa -N "" + # cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys + # chmod og-wx ~/.ssh/authorized_keys + +**Enabling Nested-Virtualization** + +KRD installs Virtlet_ Kubernetes CRI for running Virtual Machine workloads. +Nested-virtualization gives the ability of running a Virtual Machine within +another. The *node.sh* bash script contains the instructions for enabling +Nested-Virtualization. + +.. _Virtlet : https://github.com/Mirantis/virtlet + +.. code-block:: bash + + # ./node.sh + +**Deploying KRD services** + +Finally, the KRD provisioning process can be started through the use of +*installer.sh* bash script. The output of this script is collected in the +*krd_installer.log* file for future reference. + +.. code-block:: bash + + # ./installer.sh | tee krd_installer.log + +.. image:: ./img/installer_workflow.png diff --git a/docs/img/installer_workflow.png b/docs/img/installer_workflow.png new file mode 100644 index 0000000000000000000000000000000000000000..95d1bdb50dd9e4bfce3cceb73dfa44f4d0043208 GIT binary patch literal 64943 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 btJkDV$j_L - Sample Commands + KRD Project Architecture + Bare Metal All-in-One KRD deployment + Kubernetes MultiCloud API sample ommands diff --git a/vagrant/Vagrantfile b/vagrant/Vagrantfile index c4d35368..8cfa4e04 100644 --- a/vagrant/Vagrantfile +++ b/vagrant/Vagrantfile @@ -116,7 +116,7 @@ Vagrant.configure("2") do |config| installer.vm.network :private_network, :ip => "10.10.10.2", :type => :static installer.vm.synced_folder '../', '/root/go/src/k8-plugin-multicloud/', type: sync_type installer.vm.provision 'shell' do |sh| - sh.env = {'KRD_ENABLE_TESTS': 'false'} + sh.env = {'KRD_PLUGIN_ENABLED': 'true'} sh.path = "main.sh" end end diff --git a/vagrant/aio.sh b/vagrant/aio.sh new file mode 100755 index 00000000..413e4672 --- /dev/null +++ b/vagrant/aio.sh @@ -0,0 +1,58 @@ +#!/bin/bash +# SPDX-license-identifier: Apache-2.0 +############################################################################## +# Copyright (c) 2018 +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +set -o errexit +set -o nounset +set -o pipefail + +if [[ $(whoami) != 'root' ]];then + echo "This bash script must be executed as root user" + exit 1 +fi + +echo "Cloning and configuring KRD project..." +git clone https://git.onap.org/multicloud/k8s/ +cd k8s/vagrant/ +cat < inventory/hosts.ini +[all] +localhost + +[kube-master] +localhost + +[kube-node] +localhost + +[etcd] +localhost + +[ovn-central] +localhost + +[ovn-controller] +localhost + +[virtlet] +localhost + +[k8s-cluster:children] +kube-node +kube-master +EOL +sed -i '/andrewrothstein.kubectl/d' playbooks/configure-*.yml +echo -e "\n\n\n" | ssh-keygen -t rsa -N "" +cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys +chmod og-wx ~/.ssh/authorized_keys + +echo "Enabling nested-virtualization" +./node.sh + +echo "Deploying KRD project" +./installer.sh | tee krd_installer.log diff --git a/vagrant/installer.sh b/vagrant/installer.sh index b621afaa..860f63d6 100755 --- a/vagrant/installer.sh +++ b/vagrant/installer.sh @@ -158,7 +158,7 @@ function install_plugin { pushd $GOPATH/src/k8-plugin-multicloud/deployments ./build.sh - if [[ "${testing_enabled}" = "true" ]]; then + if [[ "${testing_enabled}" == "true" ]]; then docker-compose up -d pushd $krd_tests for functional_test in plugin plugin_edgex; do @@ -187,6 +187,16 @@ function _print_kubernetes_info { echo "Admin password: secret" >> $k8s_info_file } +if ! sudo -n "true"; then + echo "" + echo "passwordless sudo is needed for '$(id -nu)' user." + echo "Please fix your /etc/sudoers file. You likely want an" + echo "entry like the following one..." + echo "" + echo "$(id -nu) ALL=(ALL) NOPASSWD: ALL" + exit 1 +fi + if [[ -n "${KRD_DEBUG}" ]]; then set -o xtrace verbose="-vvv" @@ -200,7 +210,7 @@ krd_inventory=$krd_inventory_folder/hosts.ini krd_playbooks=$krd_folder/playbooks krd_tests=$krd_folder/tests k8s_info_file=$krd_folder/k8s_info.log -testing_enabled=${KRD_ENABLE_TESTS:-true} +testing_enabled=${KRD_ENABLE_TESTS:-false} mkdir -p $log_folder mkdir -p /opt/csar @@ -216,7 +226,7 @@ fi apt-get update install_k8s install_addons -if [[ "${KRD_PLUGIN_ENABLED:-true}" ]]; then +if [[ "${KRD_PLUGIN_ENABLED:-false}" ]]; then install_plugin fi _print_kubernetes_info -- 2.16.6