Topology K8S Onboarding

In order to deploy blueprints that require K8S you will need to have a working K8S cluster in witch resources are deployed. There are basically 2 ways to add a K8S cluster in the NFVCL topology:

  • Deploy a K8s cluster on OpenStack through the K8S blueprint

  • Add an external ready cluster to the topology must be configured and working (like k8S bare metal installation or K3S installation with Rancher)

Create Kubernetes Cluster (Blueprint)

The first way will use a blueprint to deploy a cluster on a VIM belonging to the topology. The number of nodes of the new cluster can be changed in the request. For further details you can look at the dedicated page of the K8s blueprint: K8s blueprint creation

Add External Kubernetes Cluster

If you want to add an external K8s to NFVCL

  • API (POST): {{ base_url }}/v1/topology/kubernetes_external

  • Body:

{
  "name": "BareMK8S",
  "nfvo_onboard": true,
  "credentials": "CONTENT OF /etc/kubernetes/admin.conf or other enabled admin users",
	"vim_name": "OS-3",
  "k8s_version": "1.24",
  "networks": ["radio_0SJDRI"],
  "areas": [
    0
  ]
}

Credential content

To manually build the credentials field you can use Notepad++. Copy the content of /etc/kubernetes/admin.conf (in the K8s controller) inside Notepad++. Then go Edit->EOL conversion->Unix. The last step is Search->Replace and replace line end (\n) with (\\n), you should obtain a one line content to be placed in the credentials field.

The final result should look like this:

{
		"name": "r1hpgen8-test-c",
		"provided_by": "external",
		"blueprint_ref": "",
		"credentials": "apiVersion: v1\nclusters:\n- cluster:\n    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvakNDQWVhZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJek1EVXhNREE1TkRZeU9Wb1hEVE16TURVd056QTVORFl5T1Zvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3daCm5xWUYvMHdZZUYzUk1xaGU3RVpxZHJDNmFOd1kwNlcxRUE4ZjZkWWQwK0RtNEZiVnhmekV1MWJnSi9YRlU5a3YKcFZ3UFdmL09DK0JHREpzQjY1NTIraEZjM3B0dW8vTnEvZzRaaHJyMEgyNU1NNFBKT3VURFA1U0Vidkp2R1JHRApKSzlyR2xseWVKOGFGaUZ4UmZIcHk2YmJhVTJ5UW1YWUk5Sm1GM2xpcVl3TVlUTURBQW9mdStYYlE2YTd0VzNyCkx6OTI1U2QveHErNEQxeE5EWTJaQlBwZFJYWkcrTHNpVzBrOW9haTR5emUxOElJR3lPMitOTWpVclBTQXRBUlYKRTRKcG5lMXgzQ1F3Z1N5eGtpUisvWUxhZGhJc3M3TlBtR3h6UzRSRlJDWWJDT0xBbGRTZTVITmNLV21DSnJsagoxblVIbzNyZVJtUGpBUnpld2pjQ0F3RUFBYU5aTUZjd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZDSG9ldXJqZ2QxTVFXV1hBSFI4dnJvSjNmTjFNQlVHQTFVZEVRUU8KTUF5Q0NtdDFZbVZ5Ym1WMFpYTXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBQTdwQzlNRHQ0WnNKWlRQVTUxMAovanl0RWtPOWN2RlQ4UFE2eXBpUjVPVXJGSXZqUTVxekU5cS9oRmlOVldoQ3VNK01FUnVuVkhpWHpUWC94M1JqCkR6VnlCTXNCUU1zQnRVUFh5TXZ2SE9uaUUvSDlOTEJzUnJKbjhIWnBKMDJlUlNCaklLelhHQVRNV29QbEROTFgKeXBlaWdWZVBsOWdTWFRtKzNiUmU5VTN0eGRIclZsNTJHdk1aaW1kQTRjZmpKVGx6RzhFbkJWRmd3NEc3RGFMOQpnVGg0L05Ec2dHeEx6YWpUdElWUC8vdmRoL0w2dVc4VWxoU0x5VTNCUzVzbXl4YThUVnRiUGdLTDQ3VnFsQTBSCmY1elJuaVZOZGhwb2JmSjV6MStJbGV1cjVoU0c0RjJkbjR4Q2FWZVpPUVVxNkFadXB1UGRnRWhTUzdPeW1QaFQKaE5ZPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==\n    server: https://192.168.17.28:6443\n  name: kubernetes\ncontexts:\n- context:\n    cluster: kubernetes\n    user: kubernetes-admin\n  name: kubernetes-admin@kubernetes\ncurrent-context: kubernetes-admin@kubernetes\nkind: Config\npreferences: {}\nusers:\n- name: kubernetes-admin\n  user:\n    client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURJVENDQWdtZ0F3SUJBZ0lJTXNrUDVnMXc3ZlF3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TXpBMU1UQXdPVFEyTWpsYUZ3MHlOREExTURrd09UUTJNekphTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQW1sSmxhNkdoTEF3Sks1L3YKQngveEk5UU1XcnpybEVnM2p4L3BiQWRDbWg0eGI0QUdJY0hmVWFlMUM2NDF1V2hMVDc3d053L053YzFxeWhtTApqeGt0NUhGa2lIcjBmcFF1K2lTY0EwY3p0bDlzdHhMRUoyeWd6QnNMdnVTblhSTW5Xd28vczJjU1o5b1IxTnc2CkxlUU1wZXlZazdVRzRJNFF0WEVLZTJIOHZPaENpODlENEt4NTI1VGpsamhaSXRITWtqSmwrQ2Nld28wUXluWlMKY1N1SkdYK0QybmJ2cGNpTnBzSjRMaXQ0MUh1djRrWlp0Ri9FcFlWWWZ3WWk2dW9KTmFrVzZld2JpeWx2dm4xRgprRDlndDAzZWUwVDBXYkVZWFEwSG83NVRZSDlBcExtZHhuOC9RTjlCeEVoYW5JNDlubFZrdUY4SnJobEdTSnAwCkpNazJPd0lEQVFBQm8xWXdWREFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0RBWURWUjBUQVFIL0JBSXdBREFmQmdOVkhTTUVHREFXZ0JRaDZIcnE0NEhkVEVGbGx3QjBmTDY2Q2QzegpkVEFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBMjd2TS83WjJ3aXZjc3dYdHlLT0NJTkN4ZlV2Mi9Ld2htZzlQCmhkS2ZnUjRPR3dmL3dvNVFwdXdZUEtreW1ldlNYN1BjTDZGNElXMWM5eURVcUxSVnc5UWNLY1M1S0dJeENzcnQKRXNCTTFVK3RBRnMzaUdUNFhYVWRQcit0U0hjdldJYkYvZ0cxWk95WENDSTFHcGRwU3U1c2JpK0JkMm5GT0FWYgpxV25XT3hZQ2pmVUdTVmFmSU5XN21qYVk2YUxNU0hZdkY4LzBxNDAxRjhtRzY4ckdiWXJhSzR5d2NjQ2xScmQwCjZWdVVHdlI4SjRLTVg5dE84SjdCa3BILys2aGVIRGxoSDd5SWZnRGU2N3paTHpCR1VIV0N6OWZ1UFg5WGd5M1UKWkxjY1B0ckFYdEZjR1A2OFRtaUcvOFI4bUNMZ050VVBaa1UwaFpCU0VYVkRCVGNGZkE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==\n    client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBbWxKbGE2R2hMQXdKSzUvdkJ4L3hJOVFNV3J6cmxFZzNqeC9wYkFkQ21oNHhiNEFHCkljSGZVYWUxQzY0MXVXaExUNzd3TncvTndjMXF5aG1ManhrdDVIRmtpSHIwZnBRdStpU2NBMGN6dGw5c3R4TEUKSjJ5Z3pCc0x2dVNuWFJNbld3by9zMmNTWjlvUjFOdzZMZVFNcGV5WWs3VUc0STRRdFhFS2UySDh2T2hDaTg5RAo0S3g1MjVUamxqaFpJdEhNa2pKbCtDY2V3bzBReW5aU2NTdUpHWCtEMm5idnBjaU5wc0o0TGl0NDFIdXY0a1paCnRGL0VwWVZZZndZaTZ1b0pOYWtXNmV3Yml5bHZ2bjFGa0Q5Z3QwM2VlMFQwV2JFWVhRMEhvNzVUWUg5QXBMbWQKeG44L1FOOUJ4RWhhbkk0OW5sVmt1RjhKcmhsR1NKcDBKTWsyT3dJREFRQUJBb0lCQUhjemVmK2ZRMTFBbHJ6Sgp0dG9zQkJtR3ExeFRYU3lXYzhQc0JHTmJZRWluVmN3b2VaUU5xcS9wK09CaTJrQ3luS21tZE9vekhOMjhDK2E3CndKN3g5ZzdrdjZEa1NJS1ZkNHZrUjFZSTQ1clZMcVppcW4xQlhSc0xNUkZza1JKRnZ6cUZPaHNiWEk0M1ZWcTAKR1lSbENKZ0pudmxJOVZ6eW4xbG5UWTlzYXNxRzhmdmtLblVCZE1Rb0ZneThtN0FPV3VxeEYvN3JkRDlqR2lzbgpJaXlKNVdMa0dWQWhyMkVOVTBqWEVKNGdwUlhsK2trMG9vZHRtRmY2S0JqaDV2ODc1dzZ3ODRoWTlGSDlOeVRPCkNHbDNFWVp3cjZGTkQxM2VDbFRVakRmcG9Xc25FU0FrdU1aR21tU0VmaWltczBEb095NThBZWtvcTNWcDk1SkcKdWRuNno0RUNnWUVBeEpNc254YzNaOXJBTGxpd1cwaklONXBFeWswSDNuVmpJY0RlVUxEV1VGbCtTMUFYZDRPMwprYVY0Ymp0ZCtjVUFIcDhpaURCSVMwY1dQaE5WVEV0d21tV2VYa1JiSERSMURydEJmaENGRDgxTm1zUlo4anA0Ci9mNytNYUN0OVFrcEdMY2Jqa3Q4N0hFQ2JWYzZRNlpadHQ4UEJCMTRnSm5FNVQ3QXlLaXY3S0VDZ1lFQXlQbEkKS1JXb2NQOWhXRGRSV2tnbWVTT1o0N2pIYklHWlYvc2RJaEZZM1BoUUlYTGN6b0VpMVk5cGNqV2hmbGJ4c0tQOQpGN0t0VG9Scm1uTm9hK1J5MFJRN1RHMjJvNWFUOTZjeTJqa0szRUoxWlg3MmZwOXdpZ053eVZqQWhUeUFUT092Cm9sK3hubnNIejhjZUVoR0d0Q0E1TWxPcDFrK1UxT3p1clNab2VWc0NnWUVBdEFTWHU0VzJYcXhzak1UNWxFODkKMC9XNkE0MnhwQjdhVHNIaWxnQ3I4MTlSa2tUaGlMaWVOb3BUbEpkWGczSE9uenhha2wrdEJRc3ZxbDlvSVB1QgpQbFBMU1ViT0xURTQ5ZW0wbTI4amZBb21oSkpHVU5jTmtJV2hZZTlrLzE2SlBUSUswUy8rVWtWWDFLd3FGbVBVCkN1MlJRZEovVlQzOG0zZnhjcEZRc3FFQ2dZQmJqdjNxQWJ6d1pkaFNXVGxOMlNyMTYxc3puTDMxMkFFbFRQalQKeVhWampoanJkQ25XUm95NUlKSFlmMGhvaDNHcW1MczRMYVc0N0trYy8xRG1QbmgwZWpRZHVLb0pVeE5zTXhiKwp4aGdGaXAxek5PbFZmSXZIeEpPQWwxZDJHNzhUeUhMK2xYd1ZDRlhodWdRZ0ZTMzZKK2dHM29pMFl5TVo4aXMyClpSWVptd0tCZ0VieGd2bUgxcTR1RUZFYlVudWVVNm9kWkxMc3VCWE9FVHg0WnZTVXFVMHpjZEpWTjczMGhDZngKUnZFOWV5REc5Qy9lU2w5QmdKZzBOS0xzQ2RCWXVDemZycEFuSmxlbUlqQkNhYWNyd200ZDEyaGt5cEVUK2o4MApMVXlrMUlhZklHL3pza1YyczRrK29QVjIwakU5QlJQUDhGUk9Yc2JVK3l6NHRQZmRVTE5WCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==",
		"vim_name": "OS-1",
		"k8s_version": "1.24",
		"networks": [
			"radio"
		],
		"areas": [
			"0"
		]
}