Feature 11055: Update cluster configuration to support the feature
Change-Id: I7a92c29a943d8767524ed40636eb204bd4ec2718
Signed-off-by: rshri <shrinithi.r@tataelxsi.co.in>
diff --git a/docker/osm-krm-functions/scripts/library/krm-functions.rc b/docker/osm-krm-functions/scripts/library/krm-functions.rc
index 61f6b69..1a3c0bd 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 @@
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 @@
CLUSTER_TYPE="${CLUSTER_TYPE,,}"
[[ ! ($(echo ${VALID_PROVIDERS[@]} | grep -w "${CLUSTER_TYPE}")) ]] && return 1
+ # 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 <<EOF
+ patch: |
+ apiVersion: eks.aws.upbound.io/v1beta1
+ kind: Cluster
+ metadata:
+ name: \${cluster_resource_name}-cluster
+ spec:
+ forProvider:
+EOF
+ )
+
+ # Append subnet block if needed
+ if [[ $PATCH_SUBNET -eq 1 ]]; then
+ PATCH_VALUE+=$(cat <<EOF
+
+ vpcConfig:
+ - endpointPrivateAccess: true
+ endpointPublicAccess: true
+ subnetIds: \${private_subnets}
+EOF
+ )
+ fi
+
+ # Append IAM role block if needed
+ if [[ $PATCH_IAM -eq 1 ]]; then
+ PATCH_VALUE+=$(cat <<EOF
+
+ roleArn: \${cluster_iam_role}
+EOF
+ )
+ fi
+ fi
+
+ # Set PATCH flag
+ if [[ "$PATCH_SUBNET" -eq 1 || "$PATCH_IAM" -eq 1 ]]; then
+ PATCH=0
+ fi
+
+ # Set CONFIG flag
+ if [[ "$CONFIGMAP_NAME" != "default" ]]; then
+ CONFIG=0
+ fi
+ fi
+
# 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_AKS=$([[ "${CLUSTER_TYPE}" == "aks" ]]; echo $?)
- local IS_GCP=$([[ "${CLUSTER_TYPE}" == "gcp" ]]; echo $?)
-
# Pipeline of transformations to create the cluster resource
export CLUSTER_KUSTOMIZATION_NAME
folder2list \
@@ -665,6 +746,10 @@
"${K8S_VERSION}" \
"| select(.kind == \"Kustomization\") | select(.metadata.name == \"${CLUSTER_KUSTOMIZATION_NAME}\")" | \
patch_replace \
+ ".spec.postBuild.substitute.cluster_iam_role" \
+ "${CLUSTER_IAM_ROLE}" \
+ "| select(.kind == \"Kustomization\") | select(.metadata.name == \"${CLUSTER_KUSTOMIZATION_NAME}\")" | \
+ patch_replace \
".spec.postBuild.substitute.providerconfig_name" \
"${PROVIDERCONFIG_NAME}" \
"| select(.kind == \"Kustomization\") | select(.metadata.name == \"${CLUSTER_KUSTOMIZATION_NAME}\")" | \
@@ -680,10 +765,24 @@
".spec.postBuild.substitute.preemptible_nodes" \
"${GKE_PREEMPTIBLE_NODES}" \
"| select(.kind == \"Kustomization\") | select(.metadata.name == \"${CLUSTER_KUSTOMIZATION_NAME}\")" | \
+ transform_if \
+ "${PATCH}" \
+ add_patch_to_kustomization_as_list \
+ "${CLUSTER_KUSTOMIZATION_NAME}" \
+ "${PATCH_VALUE}" | \
+ transform_if \
+ "${IS_EKS_AND_IAM}" \
+ add_component_to_kustomization_as_list \
+ "${CLUSTER_KUSTOMIZATION_NAME}" \
+ "${IAM_COMPONENTS[@]}" | \
+ transform_if \
+ "${CONFIG}" \
+ add_config_to_kustomization \
+ "${CLUSTER_KUSTOMIZATION_NAME}" | \
rename_file_in_items \
"${TEMPLATE_MANIFEST_FILENAME}" \
"${MANIFEST_FILENAME}" | \
- prepend_folder_path "${CLUSTER_KUSTOMIZATION_NAME}/" | \
+ prepend_folder_path "${CLUSTER_KUSTOMIZATION_NAME}/clusterbase/" | \
list2folder_cp_over \
"${TARGET_FOLDER}"