#!/bin/bash
#***************************************************************#
# ScriptName: c3k8sconfig.sh
# Author: xhy
# Create Date: 2025-03-29 13:01
# Modify Author: xhy
# Modify Date: 2025-12-21 23:33
# Version: v1
#***************************************************************#

#######################################
# 全局变量配置区
#######################################
echo -e "\n\033[33m[INFO] 开始定义全局参数...\033[0m"
sleep 1

declare -A NODES=(
    [master01]="172.24.8.11"
)

# 公共参数
K8SHA_VERSION=v1.34.3
K8SHA_PORT="6443"
K8SHA_AUTH="ilovek8s"
K8SHA_PODCIDR="10.10.0.0/16"
K8SHA_SVCCIDR="10.20.0.0/16"
K8SHA_DNSIP="10.20.0.10"
K8SHA_NETINF="eth0"

echo -e "\n\033[32m[SUCCESS] 全局参数定义已完成...\033[0m"

set -euo pipefail  # 启用严格模式

#######################################
# 函数定义区
#######################################
# 创建目录结构
init_dirs() {
    echo -e "\n\033[33m[INFO] 开始创建目录结构...\033[0m"
    sleep 1

    mkdir -p k8sdir/init

    echo -e "\n\033[32m[SUCCESS] 目录结构创建已完成...\033[0m"
}

# 下载基础配置文件
download_templates() {
    echo -e "\n\033[33m[INFO] 开始下载模板文件...\033[0m"
    sleep 1

    # k8s配置模板
    wget -qcP k8sdir/init/ http://down.linuxsb.com/mydeploy/k8s/${K8SHA_VERSION}/c3kubeadm-config.yaml.tpl

    echo -e "\n\033[32m[SUCCESS] 模板文件下载已完成...\033[0m"
}

# 生成k8s配置文件
gen_k8s_config() {
    echo -e "\n\033[33m[INFO] 开始生成 K8S 配置...\033[0m"
    sleep 1

    # 生成动态 SAN 条目到临时文件
    tmp_sans=$(mktemp)
    {
        # 添加所有节点名称和 IP
        for node in "${!NODES[@]}"; do
            echo "    - $node"
            echo "    - ${NODES[$node]}"
        done
    } > "$tmp_sans"    # 生成动态 SAN 条目到临时文件

    for node in "${!NODES[@]}"; do
        sed -e "
            s|K8SHA_SVCCIDR|${K8SHA_SVCCIDR}|g
            s|K8SHA_PODCIDR|${K8SHA_PODCIDR}|g
            s|K8SHA_VERSION|${K8SHA_VERSION}|g
            s|MASTERONE|${NODES[master01]}|g
            /#DYNAMIC_SANS#/ {
                r $tmp_sans
                d
        }
        " k8sdir/init/c3kubeadm-config.yaml.tpl > "k8sdir/init/kubeadm-config.yaml"
    done

    rm -rf ${tmp_sans}

    echo -e "\n\033[32m[SUCCESS] K8S 配置已完成...\033[0m"
}

#######################################
# 主执行流程
#######################################
main() {
    init_dirs
    download_templates
    gen_k8s_config

    # 设置执行权限
    chmod u+x *.sh
    echo -e "\n\033[32m[SUCCESS] 所有配置已完成...\033[0m"
    sleep 1
}

main "$@"
