@@ -67,7 +67,7 @@ IAM_POLCIY_FILE="iam_policy.json"
6767if [[ $REGION == " cn-north-1" || $REGION == " cn-northwest-1" ]]; then
6868 AWS_PARTITION=" aws-cn"
6969 IAM_POLCIY_FILE=" iam_policy_cn.json"
70- else if [[ $ADC_REGIONS == * " $REGION " * ]]; then
70+ elif [[ $ADC_REGIONS == * " $REGION " * ]]; then
7171 if [[ $REGION == " us-isob-east-1" ]]; then
7272 AWS_PARTITION=" aws-iso-b"
7373 IAM_POLCIY_FILE=" iam_policy_isob.json"
@@ -76,7 +76,7 @@ else if [[ $ADC_REGIONS == *"$REGION"* ]]; then
7676 IAM_POLCIY_FILE=" iam_policy_iso.json"
7777 fi
7878fi
79- fi
79+
8080echo " AWS_PARTITION $AWS_PARTITION "
8181echo " IAM_POLCIY_FILE $IAM_POLCIY_FILE "
8282
@@ -107,36 +107,72 @@ EOF
107107echo " cleanup any stale resources from previous run"
108108cleanUp
109109
110+ PRE_REQUISITE=success
110111echo " create Role with above policy document"
111- aws iam create-role --role-name $ROLE_NAME --assume-role-policy-document file://trust.json --description " IAM Role to be used by aws-load-balancer-controller SA" || true
112+ aws iam create-role --role-name $ROLE_NAME --assume-role-policy-document file://trust.json --description " IAM Role to be used by aws-load-balancer-controller SA" || PRE_REQUISITE=fail
112113
113114echo " creating AWSLoadbalancerController IAM Policy"
114115aws iam create-policy \
115116 --policy-name AWSLoadBalancerControllerIAMPolicy \
116- --policy-document file://" $SCRIPT_DIR " /../docs/install/${IAM_POLCIY_FILE} || true
117+ --policy-document file://" $SCRIPT_DIR " /../docs/install/${IAM_POLCIY_FILE} || PRE_REQUISITE=fail
117118
118- echo " attaching AWSLoadbalancerController IAM Policy to $ROLE_NAME "
119- aws iam attach-role-policy --policy-arn arn:${AWS_PARTITION} :iam::$ACCOUNT_ID :policy/AWSLoadBalancerControllerIAMPolicy --role-name $ROLE_NAME || true
119+ echo " attaching AWSLoadBalancerController IAM Policy to $ROLE_NAME "
120+ aws iam attach-role-policy --policy-arn arn:${AWS_PARTITION} :iam::$ACCOUNT_ID :policy/AWSLoadBalancerControllerIAMPolicy --role-name $ROLE_NAME || PRE_REQUISITE=fail
120121
121122echo " create service account"
122- kubectl create serviceaccount aws-load-balancer-controller -n kube-system || true
123+ kubectl create serviceaccount aws-load-balancer-controller -n kube-system || PRE_REQUISITE=fail
123124
124125echo " annotate service account with $ROLE_NAME "
125- kubectl annotate serviceaccount -n kube-system aws-load-balancer-controller eks.amazonaws.com/role-arn=arn:${AWS_PARTITION} :iam::" $ACCOUNT_ID " :role/" $ROLE_NAME " --overwrite=true || true
126+ kubectl annotate serviceaccount -n kube-system aws-load-balancer-controller eks.amazonaws.com/role-arn=arn:${AWS_PARTITION} :iam::" $ACCOUNT_ID " :role/" $ROLE_NAME " --overwrite=true || PRE_REQUISITE=fail
127+
128+ function install_controller_for_adc_regions() {
129+ echo " install cert-manager"
130+ cert_manager_yaml=" ./test/prow/cert_manager.yaml"
131+
132+ # replace the url to the test images registry in ADC regions
133+ declare -A url_mapping
134+ url_mapping[" quay.io/jetstack/cert-manager-cainjector" ]=" $TEST_IMAGE_REGISTRY /networking-e2e-test-images/cert-manager-cainjector"
135+ url_mapping[" quay.io/jetstack/cert-manager-controller" ]=" $TEST_IMAGE_REGISTRY /networking-e2e-test-images/cert-manager-controller"
136+ url_mapping[" quay.io/jetstack/cert-manager-webhook" ]=" $TEST_IMAGE_REGISTRY /networking-e2e-test-images/cert-manager-webhook"
137+ # Iterate through the mapping and perform the replacements
138+ for default_url in " ${! url_mapping[@]} " ; do
139+ adc_url=" ${url_mapping[$default_url]} "
140+ sed -i " " " s#$default_url #$adc_url #g" " $cert_manager_yaml "
141+ done
142+ echo " Image URLs in $cert_manager_yaml have been updated to use the ADC registry"
143+ kubectl apply -f $cert_manager_yaml || PRE_REQUISITE=fail
144+
145+ echo " install the controller via yaml"
146+ controller_yaml=" ./test/prow/v2_6_0_adc.yaml"
147+ default_controller_image=" public.ecr.aws/eks/aws-load-balancer-controller"
148+ sed -i " " " s#$default_controller_image #$IMAGE #g" " $controller_yaml "
149+ echo " Image URL in $controller_yaml has been updated to $IMAGE "
150+ sed -i " " " s#your-cluster-name#$CLUSTER_NAME #g" " $controller_yaml "
151+ echo " cluster name in $controller_yaml has been update to $CLUSTER_NAME "
152+ kubectl apply -f $controller_yaml || PRE_REQUISITE=fail
153+ }
126154
127- echo " update helm repo eks"
128- # for ADC regions, install chart from local path
155+ echo " installing AWS load balancer controller"
129156if [[ $ADC_REGIONS == * " $REGION " * ]]; then
130- echo " Helm install from local chart path"
131- helm upgrade -i aws-load-balancer-controller ../helm/aws-load-balancer-controller -n kube-system --set clusterName=$CLUSTER_NAME --set serviceAccount.create=false --set serviceAccount.name=aws-load-balancer-controller --set region=$REGION --set vpcId=$VPC_ID --set image.repository=$IMAGE
157+ echo " for ADC regions, install via manifest"
158+ install_controller_for_adc_regions
159+ echo " disable NLB Security Group as it's not supported in ADC yet"
160+ kubectl patch deployment aws-load-balancer-controller -n kube-system \
161+ --type=json \
162+ -p=' [{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--feature-gates=NLBSecurityGroup=false"}]' || PRE_REQUISITE=fail
132163else
133- echo " Update helm repo from github"
164+ echo " install via helm repo, update helm repo from github"
134165 helm repo add eks https://aws.github.io/eks-charts
135166 helm repo update
136167 echo " Install aws-load-balancer-controller"
137168 helm upgrade -i aws-load-balancer-controller eks/aws-load-balancer-controller -n kube-system --set clusterName=$CLUSTER_NAME --set serviceAccount.create=false --set serviceAccount.name=aws-load-balancer-controller --set region=$REGION --set vpcId=$VPC_ID --set image.repository=$IMAGE
138169fi
139170
171+ if [[ " $PRE_REQUISITE " == fail ]]; then
172+ echo " pre-requisite failed, exit the test."
173+ exit 1
174+ fi
175+
140176echo_time () {
141177 date +" %D %T $* "
142178}
0 commit comments