Skip to content

Commit 55ddccb

Browse files
authored
udpate prow script to install lbc via manifest for ADC (#3355)
* udpate prow script to install lbc via manifest for ADC * move yaml files to test dir
1 parent 5cbd0e4 commit 55ddccb

File tree

3 files changed

+18293
-13
lines changed

3 files changed

+18293
-13
lines changed

scripts/run-e2e-test.sh

Lines changed: 49 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ IAM_POLCIY_FILE="iam_policy.json"
6767
if [[ $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
7878
fi
79-
fi
79+
8080
echo "AWS_PARTITION $AWS_PARTITION"
8181
echo "IAM_POLCIY_FILE $IAM_POLCIY_FILE"
8282

@@ -107,36 +107,72 @@ EOF
107107
echo "cleanup any stale resources from previous run"
108108
cleanUp
109109

110+
PRE_REQUISITE=success
110111
echo "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

113114
echo "creating AWSLoadbalancerController IAM Policy"
114115
aws 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

121122
echo "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

124125
echo "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"
129156
if [[ $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
132163
else
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
138169
fi
139170

171+
if [[ "$PRE_REQUISITE" == fail ]]; then
172+
echo "pre-requisite failed, exit the test."
173+
exit 1
174+
fi
175+
140176
echo_time() {
141177
date +"%D %T $*"
142178
}

0 commit comments

Comments
 (0)