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"
]
}