Commit b1a189bf authored by Gerardo García's avatar Gerardo García
Browse files

15-k8s-installation: k8s cluster from OSM packages

parent d37e9bcf
Loading
Loading
Loading
Loading
+90 −3
Original line number Diff line number Diff line
@@ -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 <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@<JUJU_CONTROLLER_IP_ADDRESS>
cat .kube/config
```

## Installation method 2: Local development environment

+50 KiB
Loading image diff...