diff options
Diffstat (limited to 'scripts/review_apps')
-rwxr-xr-x | scripts/review_apps/automated_cleanup.rb | 10 | ||||
-rw-r--r-- | scripts/review_apps/base-config.yaml | 1 | ||||
-rwxr-xr-x | scripts/review_apps/review-apps.sh | 69 |
3 files changed, 17 insertions, 63 deletions
diff --git a/scripts/review_apps/automated_cleanup.rb b/scripts/review_apps/automated_cleanup.rb index 0927481070b..5707f02d3f0 100755 --- a/scripts/review_apps/automated_cleanup.rb +++ b/scripts/review_apps/automated_cleanup.rb @@ -116,6 +116,12 @@ class AutomatedCleanup delete_helm_releases(releases_to_delete) end + def perform_stale_namespace_cleanup!(days:) + kubernetes_client = Tooling::KubernetesClient.new(namespace: nil) + + kubernetes_client.cleanup_review_app_namespaces(created_before: threshold_time(days: days), wait: false) + end + def perform_stale_pvc_cleanup!(days:) kubernetes.cleanup_by_created_at(resource_type: 'pvc', created_before: threshold_time(days: days), wait: false) end @@ -203,6 +209,10 @@ timed('Helm releases cleanup') do automated_cleanup.perform_helm_releases_cleanup!(days: 7) end +timed('Stale Namespace cleanup') do + automated_cleanup.perform_stale_namespace_cleanup!(days: 14) +end + timed('Stale PVC cleanup') do automated_cleanup.perform_stale_pvc_cleanup!(days: 30) end diff --git a/scripts/review_apps/base-config.yaml b/scripts/review_apps/base-config.yaml index bb4d5392b3b..981a8b51674 100644 --- a/scripts/review_apps/base-config.yaml +++ b/scripts/review_apps/base-config.yaml @@ -23,6 +23,7 @@ gitlab: memory: 1500M persistence: size: 10G + storageClass: ssd gitlab-exporter: enabled: false mailroom: diff --git a/scripts/review_apps/review-apps.sh b/scripts/review_apps/review-apps.sh index 6fb83e79f7f..a799f8cd925 100755 --- a/scripts/review_apps/review-apps.sh +++ b/scripts/review_apps/review-apps.sh @@ -48,7 +48,9 @@ function delete_release() { return fi - delete_k8s_release_namespace + if deploy_exists "${namespace}" "${release}"; then + helm uninstall --namespace="${namespace}" "${release}" + fi } function delete_failed_release() { @@ -66,7 +68,7 @@ function delete_failed_release() { # Cleanup and previous installs, as FAILED and PENDING_UPGRADE will cause errors with `upgrade` if previous_deploy_failed "${namespace}" "${release}" ; then echoinfo "Review App deployment in bad state, cleaning up namespace ${release}" - delete_release + delete_k8s_release_namespace else echoinfo "Review App deployment in good state" fi @@ -166,68 +168,9 @@ function label_namespace() { local label="${2}" echoinfo "Labeling the ${namespace} namespace with ${label}" true + echoinfo "We should pass the --overwrite option!" - kubectl label namespace "${namespace}" "${label}" -} - -function install_external_dns() { - local namespace="${KUBE_NAMESPACE}" - local release="dns-gitlab-review-app-helm3" - local domain - domain=$(echo "${REVIEW_APPS_DOMAIN}" | awk -F. '{printf "%s.%s", $(NF-1), $NF}') - echoinfo "Installing external DNS for domain ${domain}..." true - - if ! deploy_exists "${namespace}" "${release}" || previous_deploy_failed "${namespace}" "${release}" ; then - echoinfo "Installing external-dns Helm chart" - helm repo add bitnami https://charts.bitnami.com/bitnami - helm repo update - - # Default requested: CPU => 0, memory => 0 - helm install "${release}" bitnami/external-dns \ - --namespace "${namespace}" \ - --version '2.13.3' \ - --set provider="aws" \ - --set aws.credentials.secretKey="${REVIEW_APPS_AWS_SECRET_KEY}" \ - --set aws.credentials.accessKey="${REVIEW_APPS_AWS_ACCESS_KEY}" \ - --set aws.zoneType="public" \ - --set aws.batchChangeSize=400 \ - --set domainFilters[0]="${domain}" \ - --set txtOwnerId="${namespace}" \ - --set rbac.create="true" \ - --set policy="sync" \ - --set resources.requests.cpu=50m \ - --set resources.limits.cpu=100m \ - --set resources.requests.memory=100M \ - --set resources.limits.memory=200M - else - echoinfo "The external-dns Helm chart is already successfully deployed." - fi -} - -# This script is used to install cert-manager in the cluster -# The installation steps are documented in -# https://gitlab.com/gitlab-org/quality/team-tasks/snippets/1990286 -function install_certmanager() { - local namespace="${KUBE_NAMESPACE}" - local release="cert-manager-review-app-helm3" - - echoinfo "Installing cert-manager..." true - - if ! deploy_exists "${namespace}" "${release}" || previous_deploy_failed "${namespace}" "${release}" ; then - kubectl apply \ - -f https://raw.githubusercontent.com/jetstack/cert-manager/release-0.10/deploy/manifests/00-crds.yaml - - echoinfo "Installing cert-manager Helm chart" - helm repo add jetstack https://charts.jetstack.io - helm repo update - - helm install "${release}" jetstack/cert-manager \ - --namespace "${namespace}" \ - --version v0.15.1 \ - --set installCRDS=true - else - echoinfo "The cert-manager Helm chart is already successfully deployed." - fi + kubectl label --overwrite namespace "${namespace}" "${label}" } function create_application_secret() { |