2023-01-26 08:35:11 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
# Params are in environment variables as PARAM_{SLUG}, e.g. PARAM_USER_ID
|
|
|
|
|
|
2024-07-01 09:36:56 +00:00
|
|
|
edition=ce
|
|
|
|
|
|
2023-01-26 08:35:11 +00:00
|
|
|
# Configure the AWS & kubectl environment
|
|
|
|
|
|
|
|
|
|
mkdir ~/.aws; touch ~/.aws/config
|
|
|
|
|
|
2024-07-01 09:36:56 +00:00
|
|
|
aws configure set aws_access_key_id "$AWS_ACCESS_KEY_ID"
|
|
|
|
|
aws configure set aws_secret_access_key "$AWS_SECRET_ACCESS_KEY"
|
2023-09-11 10:54:17 +00:00
|
|
|
|
|
|
|
|
export region=ap-south-1
|
|
|
|
|
export cluster_name=uat-cluster
|
2023-01-26 08:35:11 +00:00
|
|
|
|
|
|
|
|
echo "[default]
|
2023-09-11 10:54:17 +00:00
|
|
|
region = $region
|
|
|
|
|
output = json
|
2023-01-26 08:35:11 +00:00
|
|
|
[profile eksci]
|
2023-09-11 10:54:17 +00:00
|
|
|
role_arn = $AWS_ROLE_ARN
|
2023-01-26 08:35:11 +00:00
|
|
|
output = json
|
2023-09-11 10:54:17 +00:00
|
|
|
region = $region
|
2023-01-26 08:35:11 +00:00
|
|
|
source_profile = default" > ~/.aws/config
|
|
|
|
|
|
|
|
|
|
echo "Region: $region"
|
|
|
|
|
echo "Cluster name: $cluster_name"
|
|
|
|
|
echo "Pull Request Number: $PULL_REQUEST_NUMBER"
|
2023-08-03 15:27:47 +00:00
|
|
|
echo "DP_EFS_ID: $DP_EFS_ID"
|
2023-01-26 08:35:11 +00:00
|
|
|
|
2024-07-01 09:36:56 +00:00
|
|
|
sts_output="$(aws sts assume-role --role-arn "$AWS_ROLE_ARN" --role-session-name ekscisession)"
|
2023-09-11 10:54:17 +00:00
|
|
|
|
2024-07-01 09:36:56 +00:00
|
|
|
export AWS_ACCESS_KEY_ID="$(echo "$sts_output" | jq -r .Credentials.AccessKeyId)"
|
|
|
|
|
export AWS_SECRET_ACCESS_KEY="$(echo "$sts_output" | jq -r .Credentials.SecretAccessKey)"
|
|
|
|
|
export AWS_SESSION_TOKEN="$(echo "$sts_output" | jq -r .Credentials.SessionToken)"
|
2023-01-26 08:35:11 +00:00
|
|
|
|
2024-07-01 09:36:56 +00:00
|
|
|
export NAMESPACE="$edition$PULL_REQUEST_NUMBER"
|
|
|
|
|
export CHARTNAME="$edition$PULL_REQUEST_NUMBER"
|
|
|
|
|
export SECRET="$edition$PULL_REQUEST_NUMBER"
|
|
|
|
|
export DBNAME="$edition$PULL_REQUEST_NUMBER"
|
|
|
|
|
export DOMAINNAME="$edition-$PULL_REQUEST_NUMBER.dp.appsmith.com"
|
2023-08-03 14:53:22 +00:00
|
|
|
export HELMCHART="appsmith"
|
2023-09-11 10:54:17 +00:00
|
|
|
export HELMCHART_URL="http://helm-ee.appsmith.com"
|
2025-01-30 11:12:59 +00:00
|
|
|
export OPENAI_ASSISTANT_ID="$OPENAI_ASSISTANT_ID"
|
|
|
|
|
export OPENAI_API_KEY="$OPENAI_API_KEY"
|
|
|
|
|
export APPSMITH_CARBON_API_KEY="$APPSMITH_CARBON_API_KEY"
|
|
|
|
|
export APPSMITH_CARBON_API_BASE_PATH="$APPSMITH_CARBON_API_BASE_PATH"
|
|
|
|
|
export APPSMITH_AI_SERVER_MANAGED_HOSTING="$APPSMITH_AI_SERVER_MANAGED_HOSTING"
|
|
|
|
|
export IN_DOCKER="$IN_DOCKER"
|
2023-09-11 10:54:17 +00:00
|
|
|
|
2023-01-26 08:35:11 +00:00
|
|
|
|
2024-07-01 09:36:56 +00:00
|
|
|
aws eks update-kubeconfig --region "$region" --name "$cluster_name" --profile eksci
|
2023-01-26 08:35:11 +00:00
|
|
|
|
|
|
|
|
echo "Set the default namespace"
|
|
|
|
|
kubectl config set-context --current --namespace=default
|
|
|
|
|
|
|
|
|
|
echo "Getting the pods"
|
|
|
|
|
kubectl get pods
|
|
|
|
|
|
2023-08-03 18:10:06 +00:00
|
|
|
if [[ -n "${RECREATE-}" ]]
|
|
|
|
|
then
|
|
|
|
|
mongosh "mongodb+srv://$DB_USERNAME:$DB_PASSWORD@$DB_URL/$DBNAME?retryWrites=true&minPoolSize=1&maxPoolSize=10&maxIdleTimeMS=900000&authSource=admin" --eval 'db.dropDatabase()'
|
2024-07-01 09:36:56 +00:00
|
|
|
pod_name="$(kubectl get pods -n "$NAMESPACE" -o json | jq '.items[0].metadata.name' | tr -d '"')"
|
|
|
|
|
kubectl exec "$pod_name" -n "$NAMESPACE" -- bash -c "rm -rf /appsmith-stacks/*"
|
|
|
|
|
kubectl delete ns "$NAMESPACE" || true
|
2023-09-11 10:54:17 +00:00
|
|
|
# Placeholder to use access points more effectively
|
2024-07-01 09:36:56 +00:00
|
|
|
kubectl patch pv "$NAMESPACE-appsmith" -p '{"metadata":{"finalizers":null}}' || true
|
|
|
|
|
kubectl delete pv "$NAMESPACE-appsmith" --grace-period=0 --force || true
|
2023-09-11 10:54:17 +00:00
|
|
|
# Below lines are a placeholder to use access points more effectively
|
|
|
|
|
# echo "deleting Accessing points"
|
2024-07-01 09:36:56 +00:00
|
|
|
# ACCESS_POINT_ID=$(aws efs describe-access-points --file-system-id "$DP_EFS_ID" | jq -r '.AccessPoints[] | select(.Name=="'"$edition$PULL_REQUEST_NUMBER"'") | .AccessPointId')
|
2023-09-11 10:54:17 +00:00
|
|
|
# echo "Deleting Accessing Point $ACCESS_POINT_ID"
|
|
|
|
|
# aws efs delete-access-point --access-point-id $ACCESS_POINT_ID
|
2023-08-03 18:10:06 +00:00
|
|
|
fi
|
|
|
|
|
|
2023-09-11 10:54:17 +00:00
|
|
|
#echo "Create Access Point and Access Point ID"
|
|
|
|
|
### Use DP-EFS and create ACCESS_POINT
|
2024-07-01 09:36:56 +00:00
|
|
|
#ACCESS_POINT=$(aws efs create-access-point --file-system-id $DP_EFS_ID --tags Key=Name,Value=$edition$PULL_REQUEST_NUMBER)
|
2023-09-11 10:54:17 +00:00
|
|
|
#ACCESS_POINT_ID=$(echo $ACCESS_POINT | jq -r '.AccessPointId');
|
|
|
|
|
|
2023-01-26 08:35:11 +00:00
|
|
|
echo "Use kubernetes secret to Pull Image"
|
2024-07-01 09:36:56 +00:00
|
|
|
kubectl create ns "$NAMESPACE" || true
|
2023-04-14 10:57:17 +00:00
|
|
|
|
2024-07-01 09:36:56 +00:00
|
|
|
kubectl create secret docker-registry "$SECRET" \
|
2023-01-26 08:35:11 +00:00
|
|
|
--docker-server=https://index.docker.io/v1/ \
|
2024-07-01 09:36:56 +00:00
|
|
|
--docker-username="$DOCKER_HUB_USERNAME" \
|
|
|
|
|
--docker-password="$DOCKER_HUB_ACCESS_TOKEN" -n "$NAMESPACE"
|
2023-01-26 08:35:11 +00:00
|
|
|
|
2023-09-11 10:54:17 +00:00
|
|
|
echo "Add appsmith-ee to helm repo"
|
2024-07-01 09:36:56 +00:00
|
|
|
AWS_REGION=us-east-2 helm repo add appsmith-ee "$HELMCHART_URL"
|
|
|
|
|
helm repo update
|
|
|
|
|
helm plugin install https://github.com/helm/helm-mapkubeapis -n "$NAMESPACE"
|
2023-09-19 06:27:44 +00:00
|
|
|
helm plugin ls
|
2024-07-01 09:36:56 +00:00
|
|
|
helm mapkubeapis "$CHARTNAME" -n "$NAMESPACE"
|
2024-07-02 07:06:40 +00:00
|
|
|
helm show chart appsmith-ee/$HELMCHART
|
2023-01-26 08:35:11 +00:00
|
|
|
|
|
|
|
|
echo "Deploy appsmith helm chart"
|
2024-07-01 09:36:56 +00:00
|
|
|
helm upgrade -i "$CHARTNAME" "appsmith-ee/$HELMCHART" -n "$NAMESPACE" --create-namespace --recreate-pods \
|
|
|
|
|
--set _image.repository="$DOCKER_HUB_ORGANIZATION/appsmith-dp" --set _image.tag="$IMAGE_HASH" \
|
2023-09-11 10:54:17 +00:00
|
|
|
--set _image.pullPolicy="Always" \
|
2024-07-01 09:36:56 +00:00
|
|
|
--set image.pullSecrets="$SECRET" --set autoscaling.enabled=true --set autoscaling.minReplicas=1 \
|
2023-09-11 10:54:17 +00:00
|
|
|
--set autoscaling.maxReplicas=1 --set redis.enabled=false --set postgresql.enabled=false --set mongodb.enabled=false --set ingress.enabled=true \
|
2023-01-26 08:35:11 +00:00
|
|
|
--set "ingress.annotations.service\.beta\.kubernetes\.io/aws-load-balancer-ssl-cert=$AWS_RELEASE_CERT" \
|
|
|
|
|
--set "ingress.hosts[0].host=$DOMAINNAME, ingress.hosts[0].paths[0].path=/, ingress.hosts[0].paths[0].pathType=Prefix" \
|
2023-09-11 10:54:17 +00:00
|
|
|
--set autoupdate.enabled=false --set persistence.efs.enabled=true --set ingress.className="nginx" \
|
|
|
|
|
--set persistence.efs.driver=efs.csi.aws.com --set persistence.storageClass=efs-dp-appsmith \
|
2024-07-01 09:36:56 +00:00
|
|
|
--set persistence.efs.volumeHandle="$DP_EFS_ID:/$edition/$edition$PULL_REQUEST_NUMBER" \
|
2023-09-20 08:08:09 +00:00
|
|
|
--set resources.requests.cpu="1m" \
|
2024-12-31 12:31:48 +00:00
|
|
|
--set podDisruptionBudgets.enabled=false \
|
2024-06-13 10:37:07 +00:00
|
|
|
--set resources.requests.memory="2048Mi" \
|
2023-04-14 05:17:45 +00:00
|
|
|
--set applicationConfig.APPSMITH_SENTRY_DSN="https://abf15a075d1347969df44c746cca7eaa@o296332.ingest.sentry.io/1546547" \
|
|
|
|
|
--set applicationConfig.APPSMITH_SENTRY_ENVIRONMENT="$NAMESPACE" \
|
2024-07-01 16:06:43 +00:00
|
|
|
--set applicationConfig.APPSMITH_DB_URL="mongodb+srv://$DB_USERNAME:$DB_PASSWORD@$DB_URL/$DBNAME?retryWrites=true&minPoolSize=1&maxPoolSize=10&maxIdleTimeMS=900000&authSource=admin" \
|
2023-09-11 10:54:17 +00:00
|
|
|
--set applicationConfig.APPSMITH_DISABLE_EMBEDDED_KEYCLOAK=\"1\" \
|
2025-01-30 11:12:59 +00:00
|
|
|
--set applicationConfig.APPSMITH_OPENAI_ASSISTANT_ID="$OPENAI_ASSISTANT_ID" \
|
|
|
|
|
--set applicationConfig.APPSMITH_OPENAI_API_KEY="$OPENAI_API_KEY" \
|
|
|
|
|
--set applicationConfig.APPSMITH_CARBON_API_KEY="$APPSMITH_CARBON_API_KEY" \
|
|
|
|
|
--set applicationConfig.APPSMITH_CARBON_API_BASE_PATH="$APPSMITH_CARBON_API_BASE_PATH" \
|
|
|
|
|
--set applicationConfig.APPSMITH_AI_SERVER_MANAGED_HOSTING="$APPSMITH_AI_SERVER_MANAGED_HOSTING" \
|
2024-07-01 09:56:02 +00:00
|
|
|
--set applicationConfig.APPSMITH_CUSTOMER_PORTAL_URL="https://release-customer.appsmith.com"
|