--- /dev/null
+.. 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 <<EOL > 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
--- /dev/null
+#!/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 <<EOL > 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
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
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"
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
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