# KRD
.vagrant/
-vagrant/inventory/hosts.ini
-vagrant/inventory/artifacts
-vagrant/inventory/group_vars/all.yml
-vagrant/config/pdf.yml
-vagrant/sources.list
+kud/hosting_providers/vagrant/inventory/hosts.ini
+kud/hosting_providers/vagrant/inventory/artifacts
+kud/hosting_providers/vagrant/inventory/group_vars/all.yml
+kud/hosting_providers/vagrant/config/pdf.yml
+kud/hosting_providers/vagrant/sources.list
*.retry
*.vdi
-# Kubernetes Reference Deployment
+# Kubernetes Deployment
## Summary
-This project offers a reference for deploying a Kubernetes cluster
+This project offers a means for deploying a Kubernetes cluster
that satisfies the requirements of [ONAP multicloud/k8s plugin][1]. Its
-ansible playbooks allow to provision a deployment on Bare-metal or
-Virtual Machines.
+ansible playbooks allow to provision a deployment on Virtual Machines and on Baremetal.
-
+
# Components
| Name | Description | Source | Status |
|:--------------:|:----------------------------------------------|:----------------------------------|:------:|
| Kubernetes | Base Kubernetes deployment | [kubespray][2] | Done |
-| ovn-kubernetes | Integrates Opensource Virtual Networking | [configure-ovn-kubernetes.yml][3] | Tested |
+| ovn4nfv | Integrates Opensource Virtual Networking | [configure-ovn4nfv.yml][3] | Tested |
| Virtlet | Allows to run VMs | [configure-virtlet.yml][4] | Tested |
| Multus | Provides Multiple Network support in a pod | [configure-multus.yml][5] | Tested |
-| NFD | Node feature discovery | [configure-nfd.yml][7] | Tested |
-| Istio | Service Mesh platform | [configure-istio.yml][8] | Tested |
+| NFD | Node feature discovery | [configure-nfd.yml][6] | Tested |
+| Istio | Service Mesh platform | [configure-istio.yml][7] | Tested |
## Deployment
The [installer](installer.sh) bash script contains the minimal
Ubuntu instructions required for running this project.
-### Virtual Machines
-
-This project uses [Vagrant tool][6] for provisioning Virtual Machines
-automatically. The [setup](setup.sh) bash script contains the
-Linux instructions to install dependencies and plugins required for
-its usage. This script supports two Virtualization technologies
-(Libvirt and VirtualBox).
-
- $ ./setup.sh -p libvirt
-
-Once Vagrant is installed, it's possible to provision a cluster using
-the following instructions:
-
- $ vagrant up && vagrant up installer
-
## License
Apache-2.0
[1]: https://git.onap.org/multicloud/k8s
[2]: https://github.com/kubernetes-incubator/kubespray
-[3]: playbooks/configure-ovn-kubernetes.yml
+[3]: playbooks/configure-ovn4nfv.yml
[4]: playbooks/configure-virtlet.yml
[5]: playbooks/configure-multus.yml
-[6]: https://www.vagrantup.com/
-[7]: playbooks/configure-nfd.yml
-[8]: playbooks/configure-istio.yml
+[6]: playbooks/configure-nfd.yml
+[7]: playbooks/configure-istio.yml
- hosts: localhost
pre_tasks:
- - name: Load krd variables
+ - name: Load kud variables
include_vars:
- file: krd-vars.yml
+ file: kud-vars.yml
roles:
- role: andrewrothstein.kubectl
kubectl_ver: "v{{ kubectl_version }}"
tasks:
- name: copy admin.conf file to kube-nodes
copy:
- src: "{{ lookup('env','krd_inventory_folder') }}/artifacts/admin.conf"
+ src: "{{ lookup('env','kud_inventory_folder') }}/artifacts/admin.conf"
dest: "/etc/kubernetes/admin.conf"
- hosts: kube-node
become: yes
pre_tasks:
- - name: Load krd variables
+ - name: Load kud variables
include_vars:
- file: krd-vars.yml
+ file: kud-vars.yml
roles:
- role: andrewrothstein.go
go_ver: "{{ go_version }}"
- hosts: localhost
pre_tasks:
- - name: Load krd variables
+ - name: Load kud variables
include_vars:
- file: krd-vars.yml
+ file: kud-vars.yml
roles:
- role: andrewrothstein.kubectl
kubectl_ver: "v{{ kubectl_version }}"
- hosts: kube-node
tasks:
- - name: Load krd variables
+ - name: Load kud variables
include_vars:
- file: krd-vars.yml
+ file: kud-vars.yml
- name: clone NFD repo
git:
repo: "{{ nfd_url }}"
- hosts: localhost
pre_tasks:
- - name: Load krd variables
+ - name: Load kud variables
include_vars:
- file: krd-vars.yml
+ file: kud-vars.yml
roles:
- role: andrewrothstein.kubectl
kubectl_ver: "v{{ kubectl_version }}"
environment:
PATH: "{{ ansible_env.PATH }}:/usr/local/go/bin/"
pre_tasks:
- - name: Load krd variables
+ - name: Load kud variables
include_vars:
- file: krd-vars.yml
+ file: kud-vars.yml
roles:
- role: andrewrothstein.go
go_ver: "{{ go_version }}"
tasks:
- - name: Load krd variables
+ - name: Load kud variables
include_vars:
- file: krd-vars.yml
+ file: kud-vars.yml
- name: clone ovn-kubernetes repo
git:
repo: "{{ ovn_kubernetes_url }}"
roles:
- role: andrewrothstein.go
tasks:
- - name: Load krd variables
+ - name: Load kud variables
include_vars:
- file: krd-vars.yml
+ file: kud-vars.yml
- name: clone ovn4nfv-k8s-plugin repo
git:
repo: "{{ ovn4nfv_url }}"
PATH: "{{ ansible_env.PATH }}:/usr/local/go/bin/"
become: yes
tasks:
- - name: Load krd variables
+ - name: Load kud variables
include_vars:
- file: krd-vars.yml
+ file: kud-vars.yml
- name: build ovn4nfvk8s
make:
chdir: "{{ ovn4nfv_dest }}"
vars:
images_file: /tmp/images.yaml
pre_tasks:
- - name: Load krd variables
+ - name: Load kud variables
include_vars:
- file: krd-vars.yml
+ file: kud-vars.yml
roles:
- role: andrewrothstein.kubectl
kubectl_ver: "v{{ kubectl_version }}"
- hosts: virtlet
tasks:
- - name: Load krd variables
+ - name: Load kud variables
include_vars:
- file: krd-vars.yml
+ file: kud-vars.yml
- name: create CRIProxy binary folder
file:
state: directory
--- /dev/null
+# Kubernetes Deployment
+
+## Summary
+
+This project offers a means for deploying a Kubernetes cluster
+that satisfies the requirements of [ONAP multicloud/k8s plugin][1]. Its
+ansible playbooks allow to provision a deployment on Baremetal.
+
+
+
+
+
+## Deployment
+
+The [installer](installer.sh) bash script contains the minimal
+Ubuntu instructions required for running this project.
+
+## License
+
+Apache-2.0
+
+[1]: https://git.onap.org/multicloud/k8s
--- /dev/null
+# Kubernetes Deployment
+
+## Summary
+
+This project offers a means for deploying a Kubernetes cluster
+that satisfies the requirements of [ONAP multicloud/k8s plugin][1]. Its
+ansible playbooks allow to provision a deployment on Virtual Machines.
+
+
+
+## Deployment
+
+The [installer](installer.sh) bash script contains the minimal
+Ubuntu instructions required for running this project.
+
+### Virtual Machines
+
+This project uses [Vagrant tool][2] for provisioning Virtual Machines
+automatically. The [setup](setup.sh) bash script contains the
+Linux instructions to install dependencies and plugins required for
+its usage. This script supports two Virtualization technologies
+(Libvirt and VirtualBox).
+
+ $ ./setup.sh -p libvirt
+
+Once Vagrant is installed, it's possible to provision a cluster using
+the following instructions:
+
+ $ vagrant up && vagrant up installer
+
+## License
+
+Apache-2.0
+
+[1]: https://git.onap.org/multicloud/k8s
+[2]: https://www.vagrantup.com/
config.vm.define :installer, primary: true, autostart: false do |installer|
installer.vm.hostname = "multicloud"
installer.vm.network :private_network, :ip => "10.10.10.2", :type => :static
- installer.vm.synced_folder '../', '/home/vagrant/multicloud-k8s/', type: sync_type
+ installer.vm.synced_folder '../../../', '/home/vagrant/multicloud-k8s/', type: sync_type
installer.vm.provision 'shell', privileged: false do |sh|
- sh.env = {'KRD_PLUGIN_ENABLED': 'true'}
+ sh.env = {'KUD_PLUGIN_ENABLED': 'true'}
sh.inline = <<-SHELL
cp /vagrant/insecure_keys/key.pub /home/vagrant/.ssh/id_rsa.pub
cp /vagrant/insecure_keys/key /home/vagrant/.ssh/id_rsa
chown vagrant /home/vagrant/.ssh/id_rsa
chmod 400 /home/vagrant/.ssh/id_rsa
- cd /home/vagrant/multicloud-k8s/vagrant/ && ./installer.sh | tee krd_installer.log
+ cd /home/vagrant/multicloud-k8s/kud/hosting_providers/vagrant/ && ./installer.sh | tee kud_installer.log
SHELL
end
end
exit 1
fi
-echo "Cloning and configuring KRD project..."
+echo "Cloning and configuring KUD project..."
git clone https://git.onap.org/multicloud/k8s/
-cd k8s/vagrant/
+cd k8s/kud/hosting_providers/baremetal/
cat <<EOL > inventory/hosts.ini
[all]
localhost
kube-node
kube-master
EOL
-sed -i '/andrewrothstein.kubectl/d' playbooks/configure-*.yml
+sed -i '/andrewrothstein.kubectl/d' ../../deployment_infra/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
./node.sh
echo "Deploying KRD project"
-./installer.sh | tee krd_installer.log
+./installer.sh | tee kud_installer.log
#!/bin/bash
-# SPDX-license-identifier: Apache-2.0
+#SPDX-license-identifier: Apache-2.0
##############################################################################
# Copyright (c) 2018
# All rights reserved. This program and the accompanying materials
# _install_go() - Install GoLang package
function _install_go {
- version=$(grep "go_version" ${krd_playbooks}/krd-vars.yml | awk -F "'" '{print $2}')
+ version=$(grep "go_version" ${kud_playbooks}/kud-vars.yml | awk -F "'" '{print $2}')
local tarball=go$version.linux-amd64.tar.gz
if $(go version &>/dev/null); then
}
function _set_environment_file {
- ansible_ifconfig=$(ansible ovn-central[0] -i $krd_inventory -m shell -a "ifconfig eth1 |grep \"inet addr\" |awk '{print \$2}' |awk -F: '{print \$2}'")
+ ansible_ifconfig=$(ansible ovn-central[0] -i $kud_inventory -m shell -a "ifconfig eth1 |grep \"inet addr\" |awk '{print \$2}' |awk -F: '{print \$2}'")
if [[ $ansible_ifconfig != *CHANGED* ]]; then
echo "Fail to get the OVN central IP address from eth1 nic"
exit
function install_k8s {
echo "Deploying kubernetes"
local dest_folder=/opt
- version=$(grep "kubespray_version" ${krd_playbooks}/krd-vars.yml | awk -F ': ' '{print $2}')
- local_release_dir=$(grep "local_release_dir" $krd_inventory_folder/group_vars/k8s-cluster.yml | awk -F "\"" '{print $2}')
+ version=$(grep "kubespray_version" ${kud_playbooks}/kud-vars.yml | awk -F ': ' '{print $2}')
+ local_release_dir=$(grep "local_release_dir" $kud_inventory_folder/group_vars/k8s-cluster.yml | awk -F "\"" '{print $2}')
local tarball=v$version.tar.gz
-
sudo apt-get install -y sshpass
_install_docker
_install_ansible
rm $tarball
sudo -E pip install -r $dest_folder/kubespray-$version/requirements.txt
- rm -f $krd_inventory_folder/group_vars/all.yml 2> /dev/null
+ rm -f $kud_inventory_folder/group_vars/all.yml 2> /dev/null
if [[ -n "${verbose}" ]]; then
- echo "kube_log_level: 5" | tee $krd_inventory_folder/group_vars/all.yml
+ echo "kube_log_level: 5" | tee $kud_inventory_folder/group_vars/all.yml
else
- echo "kube_log_level: 2" | tee $krd_inventory_folder/group_vars/all.yml
+ echo "kube_log_level: 2" | tee $kud_inventory_folder/group_vars/all.yml
fi
- echo "kubeadm_enabled: true" | tee --append $krd_inventory_folder/group_vars/all.yml
+ echo "kubeadm_enabled: true" | tee --append $kud_inventory_folder/group_vars/all.yml
if [[ -n "${http_proxy}" ]]; then
- echo "http_proxy: \"$http_proxy\"" | tee --append $krd_inventory_folder/group_vars/all.yml
+ echo "http_proxy: \"$http_proxy\"" | tee --append $kud_inventory_folder/group_vars/all.yml
fi
if [[ -n "${https_proxy}" ]]; then
- echo "https_proxy: \"$https_proxy\"" | tee --append $krd_inventory_folder/group_vars/all.yml
+ echo "https_proxy: \"$https_proxy\"" | tee --append $kud_inventory_folder/group_vars/all.yml
fi
- ansible-playbook $verbose -i $krd_inventory $dest_folder/kubespray-$version/cluster.yml --become --become-user=root | sudo tee $log_folder/setup-kubernetes.log
+ ansible-playbook $verbose -i $kud_inventory $dest_folder/kubespray-$version/cluster.yml --become --become-user=root | sudo tee $log_folder/setup-kubernetes.log
# Configure environment
mkdir -p $HOME/.kube
- cp $krd_inventory_folder/artifacts/admin.conf $HOME/.kube/config
+ cp $kud_inventory_folder/artifacts/admin.conf $HOME/.kube/config
}
# install_addons() - Install Kubenertes AddOns
function install_addons {
echo "Installing Kubernetes AddOns"
_install_ansible
- sudo ansible-galaxy install $verbose -r $krd_folder/galaxy-requirements.yml --ignore-errors
+ sudo ansible-galaxy install $verbose -r $kud_infra_folder/galaxy-requirements.yml --ignore-errors
- ansible-playbook $verbose -i $krd_inventory $krd_playbooks/configure-krd.yml | sudo tee $log_folder/setup-krd.log
+ ansible-playbook $verbose -i $kud_inventory $kud_playbooks/configure-kud.yml | sudo tee $log_folder/setup-kud.log
for addon in ${KRD_ADDONS:-virtlet ovn4nfv}; do
echo "Deploying $addon using configure-$addon.yml playbook.."
- ansible-playbook $verbose -i $krd_inventory $krd_playbooks/configure-${addon}.yml | sudo tee $log_folder/setup-${addon}.log
+ ansible-playbook $verbose -i $kud_inventory $kud_playbooks/configure-${addon}.yml | sudo tee $log_folder/setup-${addon}.log
if [[ "${testing_enabled}" == "true" ]]; then
- pushd $krd_tests
+ pushd $kud_tests
bash ${addon}.sh
popd
fi
sudo -E pip install docker-compose
sudo mkdir -p /opt/{kubeconfig,consul/config}
- sudo cp $HOME/.kube/config /opt/kubeconfig/krd
+ sudo cp $HOME/.kube/config /opt/kubeconfig/kud
_set_environment_file
source /etc/environment
- pushd $krd_folder/../deployments
+ pushd $kud_folder/../../../deployments
sudo ./build.sh
if [[ "${testing_enabled}" == "true" ]]; then
docker-compose up -d
- pushd $krd_tests
+ pushd $kud_tests
for functional_test in plugin plugin_edgex; do
bash ${functional_test}.sh
done
exit 1
fi
-if [[ -n "${KRD_DEBUG}" ]]; then
+if [[ -n "${KUD_DEBUG}" ]]; then
set -o xtrace
verbose="-vvv"
fi
# Configuration values
-log_folder=/var/log/krd
-krd_folder=$(pwd)
-export krd_inventory_folder=$krd_folder/inventory
-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:-false}
+log_folder=/var/log/kud
+kud_folder=$(pwd)
+kud_infra_folder=$kud_folder/../../deployment_infra
+export kud_inventory_folder=$kud_folder/inventory
+kud_inventory=$kud_inventory_folder/hosts.ini
+kud_playbooks=$kud_infra_folder/playbooks
+kud_tests=$kud_folder/tests
+k8s_info_file=$kud_folder/k8s_info.log
+testing_enabled=${KUD_ENABLE_TESTS:-false}
sudo mkdir -p $log_folder
sudo mkdir -p /opt/csar
# Install dependencies
# Setup proxy variables
-if [ -f $krd_folder/sources.list ]; then
+if [ -f $kud_folder/sources.list ]; then
sudo mv /etc/apt/sources.list /etc/apt/sources.list.backup
- sudo cp $krd_folder/sources.list /etc/apt/sources.list
+ sudo cp $kud_folder/sources.list /etc/apt/sources.list
fi
sudo apt-get update
install_k8s
install_addons
-if [[ "${KRD_PLUGIN_ENABLED:-false}" ]]; then
+if [[ "${KUD_PLUGIN_ENABLED:-false}" ]]; then
install_plugin
fi
_print_kubernetes_info
}
function _get_ovn_central_address {
- ansible_ifconfig=$(ansible ovn-central[0] -i $test_folder/../inventory/hosts.ini -m shell -a "ifconfig eth1 |grep \"inet addr\" |awk '{print \$2}' |awk -F: '{print \$2}'")
+ ansible_ifconfig=$(ansible ovn-central[0] -i $test_folder/../hosting_providers/vagrant/inventory/hosts.ini -m shell -a "ifconfig eth1 |grep \"inet addr\" |awk '{print \$2}' |awk -F: '{print \$2}'")
if [[ $ansible_ifconfig != *CHANGED* ]]; then
echo "Fail to get the OVN central IP address from eth1 nic"
exit
csar_id=ac39959e-e82c-11e8-9133-525400912638
-base_dest=$(grep "base_dest:" $test_folder/../playbooks/krd-vars.yml | awk -F ': ' '{print $2}')
-istio_dest=$(grep "istio_dest:" $test_folder/../playbooks/krd-vars.yml | awk -F ': ' '{print $2}' | sed "s|{{ base_dest }}|$base_dest|g;s|\"||g")
-istio_version=$(grep "istio_version:" $test_folder/../playbooks/krd-vars.yml | awk -F ': ' '{print $2}')
+base_dest=$(grep "base_dest:" $test_folder/../deployment_infra/playbooks/kud-vars.yml | awk -F ': ' '{print $2}')
+istio_dest=$(grep "istio_dest:" $test_folder/../deployment_infra/playbooks/kud-vars.yml | awk -F ': ' '{print $2}' | sed "s|{{ base_dest }}|$base_dest|g;s|\"||g")
+istio_version=$(grep "istio_version:" $test_folder/../deployment_infra/playbooks/kud-vars.yml | awk -F ': ' '{print $2}')
if ! $(istioctl version &>/dev/null); then
echo "This funtional test requires istioctl client"
source _functions.sh
base_url="http://localhost:8081"
-cloud_region_id="krd"
+cloud_region_id="kud"
namespace="default"
csar_id="94e414f6-9ca4-11e8-bb6a-52540067263b"
rbd_csar_id="7eb09e38-4363-9942-1234-3beb2e95fd85"
source _functions.sh
base_url="http://localhost:8081/v1/vnf_instances/"
-cloud_region_id="krd"
+cloud_region_id="kud"
namespace="default"
csar_id=cb009bfe-bbee-11e8-9766-525400435678