From ac718300fe3cb39b59dd26fafa5b6c32d647be88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gerardo=20Garc=C3=ADa?= Date: Wed, 20 May 2020 10:50:41 +0200 Subject: [PATCH 1/5] 03-installing-osm.md: procedure to update docker-compose when installing from source code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Gerardo García --- 03-installing-osm.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/03-installing-osm.md b/03-installing-osm.md index ca33dcd..bf5700b 100644 --- a/03-installing-osm.md +++ b/03-installing-osm.md @@ -357,13 +357,13 @@ To install a previous version e.g. v6.0.3: The previous commands will do the installation and deployment of the stack, but will not make it persistent after re-deployments of the stack (or reboots). In order to make it persistent, you will have to update the file `docker-compose.yaml`. Below an example to update it to use `releaseseven-daily` tag: ```bash -sudo sed -i "s/ro\:\${TAG\:-latest}/ro\:\${TAG\:-releaseseven-daily}/" /etc/osm/docker/docker-compose.yaml -sudo sed -i "s/lcm\:\${TAG\:-latest}/lcm\:\${TAG\:-releaseseven-daily}/" /etc/osm/docker/docker-compose.yaml -sudo sed -i "s/mon\:\${TAG\:-latest}/mon\:\${TAG\:-releaseseven-daily}/" /etc/osm/docker/docker-compose.yaml -sudo sed -i "s/pol\:\${TAG\:-latest}/pol\:\${TAG\:-releaseseven-daily}/" /etc/osm/docker/docker-compose.yaml -sudo sed -i "s/nbi\:\${TAG\:-latest}/nbi\:\${TAG\:-releaseseven-daily}/" /etc/osm/docker/docker-compose.yaml -sudo sed -i "s/light-ui\:\${TAG\:-latest}/light-ui\:\${TAG\:-releaseseven-daily}/" /etc/osm/docker/docker-compose.yaml -sudo sed -i "s/keystone\:\${TAG\:-latest}/keystone\:\${TAG\:-releaseseven-daily}/" /etc/osm/docker/docker-compose.yaml +sudo sed -i "s/ro\:\${TAG\:-7}/ro\:\${TAG\:-releaseseven-daily}/" /etc/osm/docker/docker-compose.yaml +sudo sed -i "s/lcm\:\${TAG\:-7}/lcm\:\${TAG\:-releaseseven-daily}/" /etc/osm/docker/docker-compose.yaml +sudo sed -i "s/mon\:\${TAG\:-7}/mon\:\${TAG\:-releaseseven-daily}/" /etc/osm/docker/docker-compose.yaml +sudo sed -i "s/pol\:\${TAG\:-7}/pol\:\${TAG\:-releaseseven-daily}/" /etc/osm/docker/docker-compose.yaml +sudo sed -i "s/nbi\:\${TAG\:-7}/nbi\:\${TAG\:-releaseseven-daily}/" /etc/osm/docker/docker-compose.yaml +sudo sed -i "s/light-ui\:\${TAG\:-7}/light-ui\:\${TAG\:-releaseseven-daily}/" /etc/osm/docker/docker-compose.yaml +sudo sed -i "s/keystone\:\${TAG\:-7}/keystone\:\${TAG\:-releaseseven-daily}/" /etc/osm/docker/docker-compose.yaml docker stack rm osm docker stack deploy -c /etc/osm/docker/docker-compose.yaml osm ``` -- GitLab From f0efcacd43adad0c1ce7e248b83bca48b7e85343 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gerardo=20Garc=C3=ADa?= Date: Wed, 20 May 2020 10:51:20 +0200 Subject: [PATCH 2/5] 09-troubleshooting.md: minor fix for getting logs from MON MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Gerardo García --- 09-troubleshooting.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/09-troubleshooting.md b/09-troubleshooting.md index 9a88735..edaa29b 100644 --- a/09-troubleshooting.md +++ b/09-troubleshooting.md @@ -498,7 +498,7 @@ docker service update osm_nbi --force You can check the logs of any container with the following commands: ```bash -docker logs $(docker ps -aqf "name=osm_mon" -n 1) +docker logs $(docker ps -aqf "name=osm_mon.1" -n 1) docker logs $(docker ps -aqf "name=osm_pol" -n 1) docker logs $(docker ps -aqf "name=osm_lcm" -n 1) docker logs $(docker ps -aqf "name=osm_nbi" -n 1) @@ -522,7 +522,7 @@ For each container, logs can be found under: And the DOCKER_ID can be obtained this way, e.g. for MON ```bash -docker ps -aqf "name=osm_mon" -n 1 --no-trunc +docker ps -aqf "name=osm_mon.1" -n 1 --no-trunc ``` ### Changing the log level -- GitLab From ffd55069929b59005e95840b19f6e2901e120223 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gerardo=20Garc=C3=ADa?= Date: Wed, 20 May 2020 10:51:39 +0200 Subject: [PATCH 3/5] Fixed LICENSE MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Gerardo García --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 90fe0f2..8dada3e 100644 --- a/LICENSE +++ b/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2020 osm + Copyright {yyyy} {name of copyright owner} Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. -- GitLab From d37e9bcfbc0a81d04c6b6e4b988f743d9a30c8ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gerardo=20Garc=C3=ADa?= Date: Mon, 1 Jun 2020 17:08:36 +0200 Subject: [PATCH 4/5] 04-vim-setup.md: minor typo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Gerardo García --- 04-vim-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/04-vim-setup.md b/04-vim-setup.md index 78edb80..565a5d3 100644 --- a/04-vim-setup.md +++ b/04-vim-setup.md @@ -979,7 +979,7 @@ This is an example of the `port-mapping-file.yaml` content: # ... ``` -NOTE: several PCI addresses can be connected to the same swith port. This is because a physical interface has several SR-IOV virtual interfaces, each one with different PCI address. +NOTE: several PCI addresses can be connected to the same switch port. This is because a physical interface has several SR-IOV virtual interfaces, each one with different PCI address. NOTE: The optional `switch_id` provided at `--config` is taken as a default if missing in the port-mapping file. This is useful if there is only one switch. -- GitLab From b1a189bfb49d52e08c9d6856daf18053857643ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gerardo=20Garc=C3=ADa?= Date: Tue, 2 Jun 2020 01:04:03 +0200 Subject: [PATCH 5/5] 15-k8s-installation: k8s cluster from OSM packages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Gerardo García --- 15-k8s-installation.md | 93 +++++++++++++++++- .../800px-k8s-cluster-with-osm-packages.png | Bin 0 -> 51190 bytes 2 files changed, 90 insertions(+), 3 deletions(-) create mode 100644 assets/800px-k8s-cluster-with-osm-packages.png diff --git a/15-k8s-installation.md b/15-k8s-installation.md index 88ae60f..916809e 100644 --- a/15-k8s-installation.md +++ b/15-k8s-installation.md @@ -4,10 +4,14 @@ This section illustrates a safe procedure to setup a Kubernetes cluster that mee There are two modes to represent a K8s cluster in OSM. -1. Inside a VIM (single and multinet): - ![k8s-in-vim-multinet](assets/800px-k8s-in-vim-multinet.png) +1. Inside a VIM (single-net and multi-net): + ![k8s-in-vim-singlenet](assets/800px-k8s-in-vim-singlenet.png) + + ![k8s-in-vim-multinet](assets/800px-k8s-in-vim-multinet.png) + 2. Outside a VIM: + ![k8s-out-vim](assets/800px-k8s-out-vim.png) Your Kubernetes cluster needs to meet the following requirements: @@ -24,7 +28,90 @@ Here we will analyse three methods to create a Kubernetes cluster: ## Installation method 1: OSM Kubernetes cluster from an OSM Network Service -TODO: VNF and NS Packages to be made available soon. +A K8s cluster can be deployed using the following OSM packages: + +- [k8s_jujucontroller_vnf](http://osm-download.etsi.org/ftp/Packages/hackfests/k8s_jujucontroller_vnf.tar.gz) +- [k8s_jujumachine_vnf](http://osm-download.etsi.org/ftp/Packages/hackfests/k8s_jujumachine_vnf.tar.gz) +- [k8s_juju](http://osm-download.etsi.org/ftp/Packages/hackfests/k8s_juju_ns.tar.gz) + +The NS (k8s_juju) consists of 1 deployer (k8s_jujucontroller_vnf) and 4 nodes (k8s_jujumachine_vnf) connected to a single network or vld (mgmtnet). The deployer is a Kubernetes installer based on Juju: it will configure the other 4 nodes to run a Kubernetes cluster. Behind the scenes, the deployer is a Juju controller where the 4 nodes are manually added to a Juju model, then a juju bundle is deployed on that model. + +The following figure illustrates the NS. + +![k8s-cluster-with-osm-packages](assets/800px-k8s-cluster-with-osm-packages.png) + +### Onboard NF and NS packages + +```bash +wget http://osm-download.etsi.org/ftp/Packages/hackfests/k8s_jujucontroller_vnf.tar.gz +wget http://osm-download.etsi.org/ftp/Packages/hackfests/k8s_jujumachine_vnf.tar.gz +wget http://osm-download.etsi.org/ftp/Packages/hackfests/k8s_juju_ns.tar.gz +osm nfpkg-create k8s_jujumachine_vnf.tar.gz +osm nfpkg-create k8s_jujucontroller_vnf.tar.gz +osm nspkg-create k8s_juju_ns.tar.gz +``` + +### Instantiate the NS + +```bash +osm ns-create --ns_name k8s-cluster --nsd_name k8s_juju --vim_account --config_file config.yaml --ssh_keys ${HOME}/.ssh/id_rsa.pub +``` + +Instantiation parameters are controlled by `config.yaml`. The relevant parameters are the IP addresses to be assigned to each machine (in the example below, `192.168.0.X`) and the network in the VIM where all nodes will be connected (`mgmt` in the example below): + +```yaml +--- +additionalParamsForVnf: + - + member-vnf-index: k8s_juju + additionalParams: + MACHINE1: "192.168.0.161" + MACHINE2: "192.168.0.162" + MACHINE3: "192.168.0.163" + MACHINE4: "192.168.0.164" + MACHINE5: "" + MACHINE6: "" + MACHINE7: "" + MACHINE8: "" + MACHINE9: "" + MACHINE10: "" + BUNDLE: "" +vld: + - + name: mgmtnet + vim-network-name: mgmt #The network in the VIM to connect all nodes of the clusters + vnfd-connection-point-ref: + - + ip-address: "192.168.0.161" + member-vnf-index-ref: k8s_vnf1 + vnfd-connection-point-ref: mgmt + - + ip-address: "192.168.0.162" + member-vnf-index-ref: k8s_vnf2 + vnfd-connection-point-ref: mgmt + - + ip-address: "192.168.0.163" + member-vnf-index-ref: k8s_vnf3 + vnfd-connection-point-ref: mgmt + - + ip-address: "192.168.0.164" + member-vnf-index-ref: k8s_vnf4 + vnfd-connection-point-ref: mgmt + - + ip-address: "192.168.0.170" + member-vnf-index-ref: k8s_juju + vnfd-connection-point-ref: mgmt +``` + +### Get kubeconfig file + +Connect to the machine running juju and get kubeconfig file: + +```bash +osm vnf-list --ns k8s-cluster --filter vnfd-ref=k8s_jujucontroller_vnf +ssh ubuntu@ +cat .kube/config +``` ## Installation method 2: Local development environment diff --git a/assets/800px-k8s-cluster-with-osm-packages.png b/assets/800px-k8s-cluster-with-osm-packages.png new file mode 100644 index 0000000000000000000000000000000000000000..c55fa318250b65f636ff95573d5da6212e65f7e7 GIT binary patch literal 51190 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
JCX0|7}$>fNH@#e(58RpMb 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