Skip to content

Instantly share code, notes, and snippets.

@unreturned
Created September 17, 2025 00:07
Show Gist options
  • Select an option

  • Save unreturned/eef19b85f852ffd8b1302018563e72d8 to your computer and use it in GitHub Desktop.

Select an option

Save unreturned/eef19b85f852ffd8b1302018563e72d8 to your computer and use it in GitHub Desktop.
ingress-nginx-sizes.sh
#!/usr/bin/env bash
set -euxo pipefail
MYVERSIONS=(
"registry.deckhouse.ru/deckhouse/ee/install:v1.71.6"
"registry.deckhouse.ru/deckhouse/ee/install:v1.72.2"
"dev-registry.deckhouse.io/sys/deckhouse-oss/install:main"
)
for MYVERSION in "${MYVERSIONS[@]}"; do
# Экспорт и извлечение данных с помощью временного файла
TMP_FILE=$(mktemp)
trap 'rm -f ${TMP_FILE}' EXIT
crane export "${MYVERSION}" | tar -xf - -O deckhouse/candi/images_digests.json > "${TMP_FILE}"
# Получение хэшей
CONTROLLER112_HASH=$(jq -r '.ingressNginx.controller112' "${TMP_FILE}")
CONTROLLER110_HASH=$(jq -r '.ingressNginx.controller110' "${TMP_FILE}")
# Формирование ссылок на манифесты
REPO=$(echo "${MYVERSION}" | cut -d'/' -f1-3)
CONTROLLER_IMAGE_112="${REPO}@${CONTROLLER112_HASH}"
CONTROLLER_IMAGE_110="${REPO}@${CONTROLLER110_HASH}"
# Получение и вычисление размеров
get_image_size() {
local image=$1
crane manifest "${image}" | jq '[.layers[].size] | add | . / 1048576' --raw-output
}
CONTROLLER_IMAGE_112_SIZE_MB=$(get_image_size "${CONTROLLER_IMAGE_112}")
CONTROLLER_IMAGE_110_SIZE_MB=$(get_image_size "${CONTROLLER_IMAGE_110}")
# Результаты
echo "For version ${MYVERSION}:"
echo " - controller110 (${CONTROLLER_IMAGE_110}) size: ${CONTROLLER_IMAGE_110_SIZE_MB} MB"
echo " - controller112 (${CONTROLLER_IMAGE_112}) size: ${CONTROLLER_IMAGE_112_SIZE_MB} MB"
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment