From 4240a7d6b3a01167ba3db0ca96db5196a0455467 Mon Sep 17 00:00:00 2001 From: rshri Date: Fri, 13 Jun 2025 11:30:35 +0000 Subject: [PATCH] Feature 11055: Update cluster configuration to support the feature Change-Id: I7a92c29a943d8767524ed40636eb204bd4ec2718 Signed-off-by: rshri --- .../scripts/library/helper-functions.rc | 41 +++++ .../scripts/library/krm-functions.rc | 113 +++++++++++- .../{eks-cluster => base}/eks-cluster.yaml | 2 +- .../eks/manifests/eks-cluster/nodegroup.yaml | 56 ------ .../kustomization.yaml} | 34 +--- .../eks/manifests/iam/policy.yaml | 167 ------------------ .../manifests/iam/role-policy-attachment.yaml | 86 +-------- .../eks/manifests/iam/roles.yaml | 36 +--- .../eks/manifests/network/gateways.yaml | 2 +- .../eks/manifests/network/kustomization.yaml | 24 +++ .../eks/manifests/network/routes.yaml | 28 --- .../eks/manifests/network/subnets.yaml | 38 +--- .../eks/manifests/network/vpc.yaml | 2 +- .../cloud-resources/eks/templates/eks01.yaml | 7 +- .../cluster-management-wft.yaml | 11 +- ...-crossplane-cluster-and-bootstrap-wft.yaml | 22 ++- 16 files changed, 220 insertions(+), 449 deletions(-) rename installers/flux/templates/sw-catalogs/cloud-resources/eks/manifests/{eks-cluster => base}/eks-cluster.yaml (98%) delete mode 100644 installers/flux/templates/sw-catalogs/cloud-resources/eks/manifests/eks-cluster/nodegroup.yaml rename installers/flux/templates/sw-catalogs/cloud-resources/eks/manifests/{addons/ebs-csi-addon.yaml => iam/kustomization.yaml} (50%) delete mode 100644 installers/flux/templates/sw-catalogs/cloud-resources/eks/manifests/iam/policy.yaml create mode 100644 installers/flux/templates/sw-catalogs/cloud-resources/eks/manifests/network/kustomization.yaml diff --git a/docker/osm-krm-functions/scripts/library/helper-functions.rc b/docker/osm-krm-functions/scripts/library/helper-functions.rc index f5e4a551..03614d14 100644 --- a/docker/osm-krm-functions/scripts/library/helper-functions.rc +++ b/docker/osm-krm-functions/scripts/library/helper-functions.rc @@ -379,6 +379,47 @@ function add_patch_to_kustomization() { "| select(.kind == \"Kustomization\") | select(.metadata.name == \"${KUSTOMIZATION_NAME}\")" } +function patch_add_value_as_list() { + local KEY_PATH="$1" + local VALUE="$2" + local TARGET_FILTERS="${3:-}" + + yq "(.items[]${TARGET_FILTERS})${KEY_PATH} += [${VALUE}]" +} + +function add_patch_to_kustomization_as_list() { + local KUSTOMIZATION_NAME="$1" + local PATCH_VALUE="$2" + + local VALUE_AS_JSON=$(echo "$PATCH_VALUE" | yq -o json -I0) + + patch_add_value_as_list \ + ".spec.patches" \ + "${VALUE_AS_JSON}" \ + "| select(.kind == \"Kustomization\") | select(.metadata.name == \"${KUSTOMIZATION_NAME}\")" +} + +function add_component_to_kustomization_as_list() { + local KUSTOMIZATION_NAME="$1" + shift + local COMPONENT=("$@") + + local COMPONENT_JSON=$(printf '"%s",' "${COMPONENT[@]}" | sed 's/,$//') + + patch_add_value_as_list \ + ".spec.components" \ + "${COMPONENT_JSON}" \ + "| select(.kind == \"Kustomization\") | select(.metadata.name == \"${KUSTOMIZATION_NAME}\")" +} + +function add_config_to_kustomization() { + local KUSTOMIZATION_NAME="$1" + + yq ' + (.items[] | select(.kind == "Kustomization") | select(.metadata.name == "'"${KUSTOMIZATION_NAME}"'")) + .spec.postBuild.substituteFrom = [{"kind": "ConfigMap", "name": "'"${KUSTOMIZATION_NAME}"'-parameters"}] + ' +} # Helper function to produce a JSON Patch as specified in RFC 6902 function as_json_patch() { diff --git a/docker/osm-krm-functions/scripts/library/krm-functions.rc b/docker/osm-krm-functions/scripts/library/krm-functions.rc index 61f6b696..1a3c0bd0 100644 --- a/docker/osm-krm-functions/scripts/library/krm-functions.rc +++ b/docker/osm-krm-functions/scripts/library/krm-functions.rc @@ -621,8 +621,13 @@ function create_crossplane_cluster() { local MGMT_PROJECT_NAME="${19:-"osm_admin"}" local MGMT_CLUSTER_NAME="${20:-"_management"}" local BASE_TEMPLATES_PATH="${21:-"cloud-resources"}" - local TEMPLATE_MANIFEST_FILENAME="${22:-"${CLUSTER_TYPE,,}01.yaml"}" - local MANIFEST_FILENAME="${23:-"${CLUSTER_TYPE,,}-${CLUSTER_NAME}.yaml"}" + # EKS only + local CLUSTER_IAM_ROLE="${22}" + local CLUSTER_PRIVATE_SUBNETS_ID="${23}" + local CLUSTER_PUBLIC_SUBNETS_ID="${24}" + local CONFIGMAP_NAME="${25}" + local TEMPLATE_MANIFEST_FILENAME="${26:-"${CLUSTER_TYPE,,}01.yaml"}" + local MANIFEST_FILENAME="${27:-"${CLUSTER_TYPE,,}-${CLUSTER_NAME}.yaml"}" # Is the provider type supported? @@ -630,14 +635,90 @@ function create_crossplane_cluster() { 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}/${CLUSTER_TYPE}/templates" - local TARGET_FOLDER="${FLEET_REPO_DIR}/${MGMT_PROJECT_NAME}/managed-resources/${MGMT_CLUSTER_NAME}" - # Determine which optional steps may be needed + local IS_EKS=$([[ "${CLUSTER_TYPE}" == "eks" ]]; echo $?) local IS_AKS=$([[ "${CLUSTER_TYPE}" == "aks" ]]; echo $?) local IS_GCP=$([[ "${CLUSTER_TYPE}" == "gcp" ]]; echo $?) + local IS_EKS_AND_IAM=1 + local IAM_COMPONENTS=() + local PATCH_SUBNET=0 + local PATCH_IAM=0 + local PATCH_VALUE="" + local PATCH=1 + local CONFIG=1 + + if [[ "$IS_EKS" -eq 0 ]]; then + + # Check for subnet config + if [[ "$CLUSTER_PRIVATE_SUBNETS_ID" == "default" ]]; then + IS_EKS_AND_IAM=0 + IAM_COMPONENTS+=("../network") + else + PATCH_SUBNET=1 + fi + + # Check for IAM role config + if [[ "$CLUSTER_IAM_ROLE" == "default" ]]; then + IS_EKS_AND_IAM=0 + IAM_COMPONENTS+=("../iam") + else + PATCH_IAM=1 + fi + + # Set PATCH flag if patch is required + if [[ $PATCH_SUBNET -eq 1 || $PATCH_IAM -eq 1 ]]; then + # PATCH=1 + echo "Generating patch..." + + PATCH_VALUE=$(cat <