diff --git a/docker/osm-krm-functions/scripts/library/krm-functions.rc b/docker/osm-krm-functions/scripts/library/krm-functions.rc
index 1a3c0bd..1d45705 100644
--- a/docker/osm-krm-functions/scripts/library/krm-functions.rc
+++ b/docker/osm-krm-functions/scripts/library/krm-functions.rc
@@ -112,6 +112,179 @@
 }
 
 
+# Create remote NodeGroup in AWS
+function create_nodegroup() {
+  local NODEGROUP_NAME="$1"
+  local NODEGROUP_KUSTOMIZATION_NAME="$2"
+  local CLUSTER_NAME="$3"
+  local CLUSTER_TYPE="$4"
+  local PROVIDERCONFIG_NAME="${5:-default}"
+  local VM_SIZE="$6"
+  local NODE_COUNT="$7"
+  local CLUSTER_LOCATION="$8"
+  local CONFIGMAP_NAME="${9}"
+  local NODEGROUP_ROLE="${10}"
+  local PUBLIC_KEY_MGMT="${11:-"${PUBLIC_KEY_MGMT}"}"
+  local PUBLIC_KEY_NEW_CLUSTER="${12}"
+  local PRIVATE_KEY_NEW_CLUSTER="${13:-"${PRIVATE_KEY_NEW_CLUSTER}"}"
+  local AKS_RG_NAME="${14:-""}"
+  local GKE_PREEMPTIBLE_NODES="${15:-""}"
+  local FLEET_REPO_DIR="${16:-"${FLEET_REPO_DIR}"}"
+  local FLEET_REPO_URL="${17:-""}"
+  local SW_CATALOGS_REPO_DIR="${18:-"${SW_CATALOGS_REPO_DIR}"}"
+  local SW_CATALOGS_REPO_URL="${19:-""}"
+  local SKIP_BOOTSTRAP="${20:"false"}"
+  local MGMT_PROJECT_NAME="${21:-"osm_admin"}"
+  local MGMT_CLUSTER_NAME="${22:-"_management"}"
+  local BASE_TEMPLATES_PATH="${23:-"cloud-resources"}"
+  local TEMPLATE_MANIFEST_FILENAME="${24:-"nodegroup.yaml"}"
+  local MANIFEST_FILENAME="${25:-"${NODEGROUP_NAME}.yaml"}"
+
+  # Is the provider type supported?
+  local VALID_PROVIDERS=("eks" "aks" "gke")
+  CLUSTER_TYPE="${CLUSTER_TYPE,,}"
+  [[ ! ($(echo ${VALID_PROVIDERS[@]} | grep -w "${CLUSTER_TYPE}")) ]] && return 1
+
+  # Determines the source dir for the templates and the target folder in Fleet
+  local TEMPLATES_DIR="${SW_CATALOGS_REPO_DIR}/${BASE_TEMPLATES_PATH}/eks-nodegroup/templates"
+  local TARGET_FOLDER="${FLEET_REPO_DIR}/${MGMT_PROJECT_NAME}/managed-resources/${MGMT_CLUSTER_NAME}/${CLUSTER_NAME}"
+
+  local IS_NODEGROUP_ROLE=$([[ "${NODEGROUP_ROLE}" != "default" ]]; echo $?)
+  local IS_DEFAULT_NODEGROUP_ROLE=$([[ "${NODEGROUP_ROLE}" == "default" ]]; echo $?)
+
+  local PATCH_VALUE=""
+  local COMPONENT=()
+  if [[ "${IS_NODEGROUP_ROLE}" == "0" ]];
+  then
+    PATCH_VALUE=$(cat <<EOF
+patch: |
+  apiVersion: eks.aws.upbound.io/v1beta1
+  kind: NodeGroup
+  metadata:
+    name: \${nodegroup_name}
+  spec:
+    forProvider:
+      nodeRoleArn: \${role}
+EOF
+)
+  else
+    COMPONENT=("../role")
+  fi
+
+  # Pipeline of transformations to create the cluster resource
+  export NODEGROUP_KUSTOMIZATION_NAME
+  # export OVERLAY_FOLDER
+  folder2list \
+  "${TEMPLATES_DIR}" | \
+  replace_env_vars \
+    '${NODEGROUP_KUSTOMIZATION_NAME}' | \
+  patch_replace \
+    ".spec.postBuild.substitute.nodegroup_name" \
+    "${NODEGROUP_NAME}" \
+    "| select(.kind == \"Kustomization\") | select(.metadata.name == \"${NODEGROUP_KUSTOMIZATION_NAME}\")" | \
+  patch_replace \
+    ".spec.postBuild.substitute.cluster_name" \
+    "${CLUSTER_NAME}" \
+    "| select(.kind == \"Kustomization\") | select(.metadata.name == \"${NODEGROUP_KUSTOMIZATION_NAME}\")" | \
+  patch_replace \
+    ".spec.postBuild.substitute.cluster_location" \
+    "${CLUSTER_LOCATION}" \
+    "| select(.kind == \"Kustomization\") | select(.metadata.name == \"${NODEGROUP_KUSTOMIZATION_NAME}\")" | \
+  patch_replace \
+    ".spec.postBuild.substitute.vm_size" \
+    "${VM_SIZE}" \
+    "| select(.kind == \"Kustomization\") | select(.metadata.name == \"${NODEGROUP_KUSTOMIZATION_NAME}\")" | \
+  patch_replace \
+    ".spec.postBuild.substitute.node_count" \
+    "${NODE_COUNT}" \
+    "| select(.kind == \"Kustomization\") | select(.metadata.name == \"${NODEGROUP_KUSTOMIZATION_NAME}\")" | \
+  patch_replace \
+    ".spec.postBuild.substitute.providerconfig_name" \
+    "${PROVIDERCONFIG_NAME}" \
+    "| select(.kind == \"Kustomization\") | select(.metadata.name == \"${NODEGROUP_KUSTOMIZATION_NAME}\")" | \
+  patch_replace \
+    ".spec.postBuild.substituteFrom[0].name" \
+    "${CONFIGMAP_NAME}" \
+    "| select(.kind == \"Kustomization\") | select(.metadata.name == \"${NODEGROUP_KUSTOMIZATION_NAME}\")" | \
+  patch_replace \
+      ".spec.postBuild.substitute.role" \
+      "${NODEGROUP_ROLE}" \
+      "| select(.kind == \"Kustomization\") | select(.metadata.name == \"${NODEGROUP_KUSTOMIZATION_NAME}\")" | \
+  transform_if \
+    "${IS_NODEGROUP_ROLE}" \
+    add_patch_to_kustomization_as_list \
+      "${NODEGROUP_KUSTOMIZATION_NAME}" \
+      "${PATCH_VALUE}" | \
+  transform_if \
+    "${IS_DEFAULT_NODEGROUP_ROLE}" \
+    add_component_to_kustomization_as_list \
+      "${NODEGROUP_KUSTOMIZATION_NAME}" \
+      "${COMPONENT}" | \
+  rename_file_in_items \
+    "${TEMPLATE_MANIFEST_FILENAME}" \
+    "${MANIFEST_FILENAME}" | \
+  prepend_folder_path "${NODEGROUP_KUSTOMIZATION_NAME}/" | \
+  list2folder_cp_over \
+    "${TARGET_FOLDER}"
+}
+
+function scale_nodegroup() {
+  local NODEGROUP_NAME="$1"
+  local NODEGROUP_KUSTOMIZATION_NAME="$2"
+  local CLUSTER_NAME="$3"
+  local CLUSTER_TYPE="$4"
+  local NODE_COUNT="$5"
+  local PUBLIC_KEY_MGMT="${6:-"${PUBLIC_KEY_MGMT}"}"
+  local PUBLIC_KEY_NEW_CLUSTER="${7}"
+  local PRIVATE_KEY_NEW_CLUSTER="${8:-"${PRIVATE_KEY_NEW_CLUSTER}"}"
+  ## `FLEET_REPO_DIR` is the result of:
+  ## "{{inputs.parameters.fleet_mount_path}}/{{inputs.parameters.cloned_fleet_folder_name}}"
+  local FLEET_REPO_DIR="${9:-"${FLEET_REPO_DIR}"}"
+  local FLEET_REPO_URL="${10:-""}"
+  ## `SW_CATALOGS_REPO_DIR` is the result of:
+  ## "{{inputs.parameters.sw_catalogs_mount_path}}/{{inputs.parameters.cloned_sw_catalogs_folder_name}}"
+  local SW_CATALOGS_REPO_DIR="${11:-"${SW_CATALOGS_REPO_DIR}"}"
+  local SW_CATALOGS_REPO_URL="${12:-""}"
+  # Only change if absolutely needeed
+  local MGMT_PROJECT_NAME="${13:-"osm_admin"}"
+  local MGMT_CLUSTER_NAME="${14:-"_management"}"
+  local BASE_TEMPLATES_PATH="${15:-"cloud-resources"}"
+  local MANIFEST_FILENAME="${16:-"${NODEGROUP_NAME}"}"
+
+   # Is the provider type supported?
+  local VALID_PROVIDERS=("eks" "aks" "gke")
+  CLUSTER_TYPE="${CLUSTER_TYPE,,}"
+  [[ ! ($(echo ${VALID_PROVIDERS[@]} | grep -w "${CLUSTER_TYPE}")) ]] && return 1
+
+  # Determines the folder in Fleet
+  local TARGET_FOLDER="${FLEET_REPO_DIR}/${MGMT_PROJECT_NAME}/managed-resources/${MGMT_CLUSTER_NAME}/${CLUSTER_NAME}/${NODEGROUP_KUSTOMIZATION_NAME}"
+
+  # Pipeline of transformations to create the cluster resource
+  export NODEGROUP_KUSTOMIZATION_NAME
+  folder2list \
+    "${TARGET_FOLDER}" | \
+  patch_replace \
+    ".spec.postBuild.substitute.node_count" \
+    "${NODE_COUNT}" \
+    "| select(.kind == \"Kustomization\") | select(.metadata.name == \"${NODEGROUP_KUSTOMIZATION_NAME}\")" | \
+  list2folder_cp_over \
+    "${TARGET_FOLDER}"
+}
+
+# Delete nodegroup
+function delete_nodegroup() {
+  local NODEGROUP_KUSTOMIZATION_NAME="$1"
+  local CLUSTER_NAME="$2"
+  local PROJECT_NAME="${3:-"${MGMT_PROJECT_NAME}"}"
+  local FLEET_REPO_DIR="${4:-"${FLEET_REPO_DIR}"}"
+  local MGMT_RESOURCES_DIR="${5:-"${MGMT_RESOURCES_DIR}"}"
+
+  local NODEGROUP_DIR="${MGMT_RESOURCES_DIR}/${CLUSTER_NAME}/${NODEGROUP_KUSTOMIZATION_NAME}"
+
+  # Delete node Kustomizations
+  rm -rf "${NODEGROUP_DIR}"
+}
+
 # TODO: Deprecated
 # Create AKS cluster (without bootstrap)
 function create_cluster_aks() {
