mirror of https://github.com/k3s-io/k3s
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
3.9 KiB
119 lines
3.9 KiB
#!/bin/bash |
|
|
|
cd $(dirname $0)/.. |
|
|
|
. ./scripts/version.sh |
|
|
|
RUNC_VERSION=v1.0.0-rc94 |
|
ROOT_VERSION=v0.8.1 |
|
TRAEFIK_VERSION=9.18.2 # appVersion: 2.4.8 |
|
CHARTS_DIR=build/static/charts |
|
DATA_DIR=build/data |
|
export TZ=UTC |
|
|
|
umask 022 |
|
mkdir -p ${CHARTS_DIR} |
|
mkdir -p ${DATA_DIR} |
|
|
|
curl --compressed -sfL https://github.com/k3s-io/k3s-root/releases/download/${ROOT_VERSION}/k3s-root-${ARCH}.tar | tar xf - |
|
|
|
git clone --depth=1 https://github.com/opencontainers/runc build/src/github.com/opencontainers/runc || true |
|
pushd build/src/github.com/opencontainers/runc |
|
git fetch --all --tags |
|
git checkout ${RUNC_VERSION} -b k3s |
|
popd |
|
|
|
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=$(yq e '.name' ${TRAEFIK_TMP_CHART}/Chart.yaml) |
|
api_version=$(yq e '.apiVersion' ${TRAEFIK_TMP_CHART}/Chart.yaml) |
|
chart_version=$(yq e '.version' ${TRAEFIK_TMP_CHART}/Chart.yaml) |
|
|
|
# Collect information on CRDs |
|
crd_apis=() |
|
for crd_yaml in $(find ${TRAEFIK_TMP_CHART}/crds -type f | sort); do |
|
echo "Processing CRD at ${crd_yaml}" |
|
crd_group=$(yq e '.spec.group' ${crd_yaml}) |
|
crd_kind=$(yq e '.spec.names.kind' ${crd_yaml}) |
|
crd_version=$(yq e '.spec.version' ${crd_yaml}) |
|
if [[ -z "$crd_version" ]]; then |
|
crd_version=$(yq e '.spec.versions[0].name' ${crd_yaml}) |
|
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 | sort); do |
|
# Applies any environment variables currently set onto your template file |
|
echo "Templating ${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 |
|
|
|
# Modify charts to support system-default-registry |
|
echo -e 'global:\n systemDefaultRegistry: ""' >> ${TRAEFIK_TMP_CHART}/values.yaml |
|
find ${TRAEFIK_TMP_CHART} -type f | xargs sed -i 's/{{ .Values.image.name }}/{{ template "system_default_registry" .}}&/g' |
|
|
|
# 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 --mode=gou-s --numeric-owner --no-acls --no-selinux --no-xattrs" |
|
tar ${OPTS} --mtime='2021-01-01 00:00:00Z' -cf - -C ${TMP_DIR} $(basename ${TRAEFIK_TMP_CHART}) | gzip -n > ${CHARTS_DIR}/${TRAEFIK_FILE} |
|
tar ${OPTS} --mtime='2021-01-01 00:00:00Z' -cf - -C ${TMP_DIR} $(basename ${TRAEFIK_TMP_CRD}) | gzip -n > ${CHARTS_DIR}/${TRAEFIK_CRD_FILE} |
|
for TAR in ${CHARTS_DIR}/${TRAEFIK_FILE} ${CHARTS_DIR}/${TRAEFIK_CRD_FILE}; do |
|
sha256sum ${TAR} |
|
stat ${TAR} |
|
tar -vtf ${TAR} |
|
done |
|
} |
|
|
|
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/
|
|
|