#!/usr/bin/env bash
# 文件：k8s-images-push-registy.sh
# 功能：将k8s集群依赖镜像推送至私有镜像仓库中心，依赖 skopeo 工具

source $(dirname $0)/../.vars.conf
 
image_prefix="base-platform"

declare -A k8s_images
k8s_images=(
    [kube-apiserver]="kube-apiserver:v1.20.15"
    [kube-controller-manager]="kube-controller-manager:v1.20.15"
    [kube-scheduler]="kube-scheduler:v1.20.15"
    [kube-proxy]="kube-proxy:v1.20.15"
    [pause]="pause:3.2"
    [etcd]="etcd:3.4.13-0"
    [coredns]="coredns:1.7.0"
    [cni]="cni:v3.19.4"
    [kube-controllers]="kube-controllers:v3.19.4"
    [node]="node:v3.19.4"
    [pod2daemon-flexvol]="pod2daemon-flexvol:v3.19.4"
    [metrics-server]="metrics-server:v0.6.2"
    [busybox]="busybox:1.36-glibc"
    [local-path-provisioner]="local-path-provisioner:v0.0.24"
    [nfs-subdir-external-provisioner]="nfs-subdir-external-provisioner:v4.0.2"
    [pilot]="pilot:1.9.6"
    [proxyv2]="proxyv2:1.9.6"
    [operator]="operator:1.9.6"
    #[ansible-docker]="ansible-docker:2.9.13"
    #[node-exporter]="node-exporter:1.6.1-debian-11-r32"
    #[kube-state-metrics]="kube-state-metrics:2.10.0-debian-11-r0"
    #[blackbox-exporter]="blackbox-exporter0.24.0-debian-11-r109"
    #[prometheus-operator]="prometheus-operator:0.68.0-debian-11-r0"
    #[alertmanager]="alertmanager:0.26.0-debian-11-r14"
    #[prometheus]="prometheus:2.47.0-debian-11-r0"
)

if [[ -e "$(realpath ..)/images/kubernetes-${k8s_version}-images.${ARCH}.tar.xz" ]]
then
    printf "$info: 镜像压缩包解压中...\n"
    tar axvf $(realpath ..)/images/kubernetes-${k8s_version}-images.${ARCH}.tar.xz -C $(realpath ..)/images  >/dev/null
else
    printf "$err: 镜像压缩包不存在...\n"
    exit 67
fi

# 安装 skopeo 工具
skopeo --version || tar axvf $(realpath ..)/files/skopeo-${skopeo_version}-${ARCH}.tar.xz -C /usr/bin

# 镜像导入
for img in $(echo ${!k8s_images[*]})
do
    printf "$info: 镜像导入 [ ${bldgre}${img}${txtrst} ]"
    skopeo copy docker-archive:$(realpath ..)/images/${img}.tar docker://${image_hub}/${image_prefix}/${k8s_images[$img]} >/dev/null 2>/dev/null || \
    skopeo copy --insecure-policy --dest-tls-verify=false docker-archive:$(realpath ..)/images/${img}.tar docker://${image_hub}/${image_prefix}/${k8s_images[$img]} >/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
