|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
cd $(dirname $0)/..
|
|
|
|
|
|
|
|
. ./scripts/version.sh
|
|
|
|
|
|
|
|
ROOT_VERSION=v0.8.1
|
|
|
|
TRAEFIK_VERSION=9.14.2 # appVersion: 2.4.2
|
|
|
|
CHARTS_DIR=build/static/charts
|
|
|
|
|
|
|
|
mkdir -p ${CHARTS_DIR}
|
|
|
|
|
|
|
|
curl --compressed -sfL https://github.com/k3s-io/k3s-root/releases/download/${ROOT_VERSION}/k3s-root-${ARCH}.tar | tar xf -
|
|
|
|
|
|
|
|
setup_tmp() {
|
|
|
|
TMP_DIR=$(mktemp -d --tmpdir=${CHARTS_DIR})
|
|
|
|
cleanup() {
|
|
|
|
code=$?
|
|
|
|
set +e
|
|
|
|
trap - EXIT
|
|
|
|
rm -rf ${TMP_DIR}
|
|
|
|
exit $code
|
|
|
|
}
|
|
|
|
trap cleanup INT EXIT
|
|
|
|
}
|
|
|
|
|
|
|
|
download_and_package_traefik () {
|
|
|
|
echo "Downloading Traefik Helm chart from ${TRAEFIK_URL}"
|
|
|
|
curl -sfL ${TRAEFIK_URL} -o ${TMP_DIR}/${TRAEFIK_FILE}
|
|
|
|
code=$?
|
|
|
|
|
|
|
|
if [ $code -ne 0 ]; then
|
|
|
|
echo "Error: Failed to download Traefik Helm chart!"
|
|
|
|
exit $code
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo "Uncompress ${TMP_DIR}/${TRAEFIK_FILE}"
|
|
|
|
tar xf ${TMP_DIR}/${TRAEFIK_FILE} -C ${TMP_DIR}
|
|
|
|
|
|
|
|
echo "Prepare traefik CRD"
|
|
|
|
TRAEFIK_TMP_CHART=${TMP_DIR}/traefik
|
|
|
|
TRAEFIK_TMP_CRD=${TRAEFIK_TMP_CHART}-crd
|
|
|
|
|
|
|
|
# Collect information on chart
|
|
|
|
name=$(cat ${TRAEFIK_TMP_CHART}/Chart.yaml | yq r - 'name')
|
|
|
|
api_version=$(cat ${TRAEFIK_TMP_CHART}/Chart.yaml | yq r - 'apiVersion')
|
|
|
|
chart_version=$(cat ${TRAEFIK_TMP_CHART}/Chart.yaml | yq r - 'version')
|
|
|
|
|
|
|
|
# Collect information on CRDs
|
|
|
|
crd_apis=()
|
|
|
|
for crd_yaml in ${TRAEFIK_TMP_CHART}/crds/*; do
|
|
|
|
crd_group=$(yq r ${crd_yaml} 'spec.group')
|
|
|
|
crd_kind=$(yq r ${crd_yaml} 'spec.names.kind')
|
|
|
|
crd_version=$(yq r ${crd_yaml} 'spec.version')
|
|
|
|
if [[ -z "$crd_version" ]]; then
|
|
|
|
crd_version=$(yq r ${crd_yaml} 'spec.versions[0].name')
|
|
|
|
fi
|
|
|
|
crd_apis+=("${crd_group}/${crd_version}/${crd_kind}")
|
|
|
|
done
|
|
|
|
|
|
|
|
set_found_crd=$(
|
|
|
|
for crd in ${crd_apis[@]}; do
|
|
|
|
echo "# {{- set \$found \"${crd}\" false -}}"
|
|
|
|
done
|
|
|
|
)
|
|
|
|
|
|
|
|
# Copy base template and apply variables to the template
|
|
|
|
mkdir -p ${TRAEFIK_TMP_CRD}
|
|
|
|
cp -R ./scripts/chart-templates/crd-base/* ${TRAEFIK_TMP_CRD}
|
|
|
|
for template_file in $(find ${TRAEFIK_TMP_CRD} -type f); do
|
|
|
|
# Applies any environment variables currently set onto your template file
|
|
|
|
eval "echo \"$(sed 's/"/\\"/g' ${template_file})\"" > ${template_file}
|
|
|
|
done
|
|
|
|
|
|
|
|
# Move anything from ${f}/charts-crd/overlay-upstream to the main chart
|
|
|
|
cp -R ${TRAEFIK_TMP_CRD}/overlay-upstream/* ${TRAEFIK_TMP_CHART}
|
|
|
|
rm -rf ${TRAEFIK_TMP_CRD}/overlay-upstream
|
|
|
|
|
|
|
|
# Move CRDs from main chart to CRD chart
|
|
|
|
mkdir -p ${TRAEFIK_TMP_CRD}/templates
|
|
|
|
mv ${TRAEFIK_TMP_CHART}/crds/* ${TRAEFIK_TMP_CRD}/templates
|
|
|
|
rm -rf ${TRAEFIK_TMP_CHART}/crds
|
|
|
|
|
|
|
|
# Package charts
|
|
|
|
OPTS="--format gnu --sort=name --owner=0 --group=0 --numeric-owner"
|
|
|
|
GZIP=-n tar ${OPTS} --mtime='UTC 2021-01-01' -cz -f ${CHARTS_DIR}/${TRAEFIK_FILE} -C ${TMP_DIR} $(basename ${TRAEFIK_TMP_CHART})
|
|
|
|
GZIP=-n tar ${OPTS} --mtime='UTC 2021-01-01' -cz -f ${CHARTS_DIR}/${TRAEFIK_CRD_FILE} -C ${TMP_DIR} $(basename ${TRAEFIK_TMP_CRD})
|
|
|
|
}
|
|
|
|
|
|
|
|
TRAEFIK_FILE=traefik-${TRAEFIK_VERSION}.tgz
|
|
|
|
TRAEFIK_CRD_FILE=traefik-crd-${TRAEFIK_VERSION}.tgz
|
|
|
|
TRAEFIK_URL=https://helm.traefik.io/traefik/${TRAEFIK_FILE}
|
|
|
|
|
|
|
|
setup_tmp
|
|
|
|
download_and_package_traefik
|
|
|
|
|
|
|
|
cp scripts/wg-add.sh bin/aux/
|