#!/usr/bin/env bash

# 判断环境平台
if [ -z "${ARCH}" ]; then
  case $(uname -m) in
    x86_64) ARCH=amd64 ;;
    aarch64) ARCH=arm64 ;;
    *) printf "$err: 不支持该平台 $(uname -m)"; exit 1 ;;
  esac
fi

package_name="kubernetes-1.26.15-images-${ARCH}.tar.xz"
image_path="k8s_images"

# 终端颜色定义
txtbld=$(tput bold)             # Bold
bldred=${txtbld}$(tput setaf 1) # red
bldgre=${txtbld}$(tput setaf 2) # green
bldylw=${txtbld}$(tput setaf 3) # yellow
txtrst=$(tput sgr0)             # Reset
err=${bldred}ERROR${txtrst}
info=${bldgre}INFO${txtrst}
warn=${bldylw}WARNING${txtrst}

k8s_images=(
    registry.aliyuncs.com/google_containers/kube-apiserver:v1.26.15
    registry.aliyuncs.com/google_containers/kube-controller-manager:v1.26.15
    registry.aliyuncs.com/google_containers/kube-scheduler:v1.26.15
    registry.aliyuncs.com/google_containers/kube-proxy:v1.26.15
    registry.aliyuncs.com/google_containers/pause:3.9
    registry.aliyuncs.com/google_containers/etcd:3.5.10-0
    registry.aliyuncs.com/google_containers/coredns:v1.9.3
    registry.cn-shenzhen.aliyuncs.com/shuhui/cni:v3.26.4
    registry.cn-shenzhen.aliyuncs.com/shuhui/node:v3.26.4
    registry.cn-shenzhen.aliyuncs.com/shuhui/kube-controllers:v3.26.4
    registry.cn-shenzhen.aliyuncs.com/shuhui/metrics-server:v0.7.1
    registry.cn-shenzhen.aliyuncs.com/shuhui/busybox:1.36-glibc
    registry.cn-shenzhen.aliyuncs.com/shuhui/local-path-provisioner:v0.0.26
    registry.cn-shenzhen.aliyuncs.com/shuhui/nfs-subdir-external-provisioner:v4.0.2
    registry.cn-shenzhen.aliyuncs.com/shuhui/node-exporter:v1.11.1
    registry.cn-shenzhen.aliyuncs.com/shuhui/busybox:1.37.0
    registry.cn-shenzhen.aliyuncs.com/shuhui/k8s-sidecar:2.6.0
    registry.cn-shenzhen.aliyuncs.com/shuhui/grafana:12.4.2
    registry.cn-shenzhen.aliyuncs.com/shuhui/kube-state-metrics:v2.18.0
    registry.cn-shenzhen.aliyuncs.com/shuhui/prometheus-operator:v0.90.1
    registry.cn-shenzhen.aliyuncs.com/shuhui/alertmanager:v0.32.0
    registry.cn-shenzhen.aliyuncs.com/shuhui/prometheus:v3.11.1
    registry.cn-shenzhen.aliyuncs.com/shuhui/kube-webhook-certgen:1.8.0
    registry.cn-shenzhen.aliyuncs.com/shuhui/node-problem-detector:v0.8.19
    registry.cn-shenzhen.aliyuncs.com/shuhui/prometheus-config-reloader:v0.90.1
    # NFS-CSI
    registry.cn-shenzhen.aliyuncs.com/shuhui/livenessprobe:v2.15.0
    registry.cn-shenzhen.aliyuncs.com/shuhui/csi-node-driver-registrar:v2.13.0
    registry.cn-shenzhen.aliyuncs.com/shuhui/nfsplugin:v4.11.0
    registry.cn-shenzhen.aliyuncs.com/shuhui/csi-provisioner:v5.2.0
    registry.cn-shenzhen.aliyuncs.com/shuhui/csi-resizer:v1.13.1
    registry.cn-shenzhen.aliyuncs.com/shuhui/csi-snapshotter:v8.2.0
    registry.cn-shenzhen.aliyuncs.com/shuhui/livenessprobe:v2.15.0
    registry.cn-shenzhen.aliyuncs.com/shuhui/nfsplugin:v4.11.0
)

imgSuccessful=0
imgFailed=0

install -d ${image_path}
for img in ${k8s_images[@]}
do
    printf "$info: 镜像导出 [ ${bldgre}${img}${txtrst} ]"

    skopeo copy docker://${img} docker-archive:$(realpath .)/${image_path}/$(echo ${img##*/} | sed 's/:/@/').tar  >/dev/null 2>/dev/null

    if [[ "$?" -eq "0" ]]; then
        printf " | ${bldgre}√${txtrst}\n"
        let imgSuccessful=${imgSuccessful}+1
    else
        printf " | ${bldred}×${txtrst}\n"
        let imgFailed=${imgFailed}+1
    fi
done

cd $(realpath .)/${image_path}/ && XZ_OPT='-T0 -9' tar -cvJf ${package_name} *.tar  --remove-files
