164 lines
6.2 KiB
Bash
Executable File
164 lines
6.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
#
|
|
# Copyright 2021 The Volcano Authors.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
|
|
set -o errexit
|
|
set -o nounset
|
|
set -o pipefail
|
|
|
|
VK_ROOT=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/..
|
|
export HELM_BIN_DIR=${VK_ROOT}/${BIN_DIR}
|
|
export RELEASE_FOLDER=${VK_ROOT}/${RELEASE_DIR}
|
|
|
|
export HELM_VER=${HELM_VER:-v3.6.3}
|
|
export VOLCANO_IMAGE_TAG=${TAG:-"latest"}
|
|
export YAML_FILENAME=volcano-${VOLCANO_IMAGE_TAG}.yaml
|
|
export MONITOR_YAML_FILENAME=volcano-monitoring-${VOLCANO_IMAGE_TAG}.yaml
|
|
export AGENT_YAML_FILENAME=volcano-agent-${VOLCANO_IMAGE_TAG}.yaml
|
|
|
|
export CRD_VERSION=${CRD_VERSION:-v1}
|
|
|
|
case $CRD_VERSION in
|
|
bases)
|
|
;;
|
|
v1)
|
|
CRD_VERSION="bases"
|
|
;;
|
|
v1beta1)
|
|
;;
|
|
*)
|
|
echo Invalid CRD_VERSION $CRD_VERSION !!!
|
|
echo CRD_VERSION only support \"bases\", \"v1\" and \"v1beta1\"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
LOCAL_OS=${OSTYPE}
|
|
case $LOCAL_OS in
|
|
"linux"*)
|
|
LOCAL_OS='linux'
|
|
;;
|
|
"darwin"*)
|
|
LOCAL_OS='darwin'
|
|
;;
|
|
*)
|
|
echo "This system's OS ${LOCAL_OS} isn't recognized/supported"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
ARCH=$(go env GOARCH)
|
|
|
|
# Step1. install helm binary
|
|
if [[ ! -f "${HELM_BIN_DIR}/version.helm.${HELM_VER}" ]] || [[ ! -f "${HELM_BIN_DIR}/helm" ]] ; then
|
|
TD=$(mktemp -d)
|
|
cd "${TD}" && \
|
|
curl -Lo "${TD}/helm.tgz" "https://get.helm.sh/helm-${HELM_VER}-${LOCAL_OS}-${ARCH}.tar.gz" && \
|
|
tar xfz helm.tgz && \
|
|
mv ${LOCAL_OS}-${ARCH}/helm "${HELM_BIN_DIR}/helm-${HELM_VER}" && \
|
|
cp "${HELM_BIN_DIR}/helm-${HELM_VER}" "${HELM_BIN_DIR}/helm" && \
|
|
chmod +x ${HELM_BIN_DIR}/helm
|
|
rm -rf "${TD}"
|
|
|
|
if [[ ! -f "${HELM_BIN_DIR}/version.helm.${HELM_VER}" ]] ; then
|
|
touch "${HELM_BIN_DIR}/version.helm.${HELM_VER}"
|
|
fi
|
|
fi
|
|
|
|
# Step2. update helm templates from config dir
|
|
HELM_TEMPLATES_DIR=${VK_ROOT}/installer/helm/chart/volcano/templates
|
|
HELM_VOLCANO_CRD_DIR=${VK_ROOT}/installer/helm/chart/volcano/crd
|
|
HELM_JOBFLOW_CRD_DIR=${VK_ROOT}/installer/helm/chart/volcano/charts/jobflow/crd
|
|
VOLCANO_CRD_DIR=${VK_ROOT}/config/crd/volcano
|
|
JOBFLOW_CRD_DIR=${VK_ROOT}/config/crd/jobflow
|
|
echo Updating templates in $HELM_TEMPLATES_DIR
|
|
# use tail because we should skip top two line
|
|
# sync volcano bases
|
|
tail -n +2 ${VOLCANO_CRD_DIR}/bases/batch.volcano.sh_jobs.yaml > ${HELM_VOLCANO_CRD_DIR}/bases/batch.volcano.sh_jobs.yaml
|
|
tail -n +2 ${VOLCANO_CRD_DIR}/bases/bus.volcano.sh_commands.yaml > ${HELM_VOLCANO_CRD_DIR}/bases/bus.volcano.sh_commands.yaml
|
|
tail -n +2 ${VOLCANO_CRD_DIR}/bases/scheduling.volcano.sh_podgroups.yaml > ${HELM_VOLCANO_CRD_DIR}/bases/scheduling.volcano.sh_podgroups.yaml
|
|
tail -n +2 ${VOLCANO_CRD_DIR}/bases/scheduling.volcano.sh_queues.yaml > ${HELM_VOLCANO_CRD_DIR}/bases/scheduling.volcano.sh_queues.yaml
|
|
tail -n +2 ${VOLCANO_CRD_DIR}/bases/nodeinfo.volcano.sh_numatopologies.yaml > ${HELM_VOLCANO_CRD_DIR}/bases/nodeinfo.volcano.sh_numatopologies.yaml
|
|
tail -n +2 ${VOLCANO_CRD_DIR}/bases/topology.volcano.sh_hypernodes.yaml > ${HELM_VOLCANO_CRD_DIR}/bases/topology.volcano.sh_hypernodes.yaml
|
|
|
|
# sync jobflow bases
|
|
tail -n +2 ${JOBFLOW_CRD_DIR}/bases/flow.volcano.sh_jobflows.yaml > ${HELM_JOBFLOW_CRD_DIR}/bases/flow.volcano.sh_jobflows.yaml
|
|
tail -n +2 ${JOBFLOW_CRD_DIR}/bases/flow.volcano.sh_jobtemplates.yaml > ${HELM_JOBFLOW_CRD_DIR}/bases/flow.volcano.sh_jobtemplates.yaml
|
|
|
|
# Step3. generate yaml in folder
|
|
if [[ ! -d ${RELEASE_FOLDER} ]];then
|
|
mkdir ${RELEASE_FOLDER}
|
|
fi
|
|
|
|
DEPLOYMENT_FILE=${RELEASE_FOLDER}/${YAML_FILENAME}
|
|
MONITOR_DEPLOYMENT_YAML_FILENAME=${RELEASE_FOLDER}/${MONITOR_YAML_FILENAME}
|
|
AGENT_DEPLOYMENT_YAML_FILENAME=${RELEASE_FOLDER}/${AGENT_YAML_FILENAME}
|
|
|
|
echo "Generating volcano yaml file into ${DEPLOYMENT_FILE}"
|
|
|
|
if [[ -f ${DEPLOYMENT_FILE} ]];then
|
|
rm ${DEPLOYMENT_FILE}
|
|
fi
|
|
|
|
if [[ -f ${MONITOR_DEPLOYMENT_YAML_FILENAME} ]];then
|
|
rm ${MONITOR_DEPLOYMENT_YAML_FILENAME}
|
|
fi
|
|
|
|
if [[ -f ${AGENT_DEPLOYMENT_YAML_FILENAME} ]];then
|
|
rm "${AGENT_DEPLOYMENT_YAML_FILENAME}"
|
|
fi
|
|
|
|
# Namespace
|
|
cat ${VK_ROOT}/installer/namespace.yaml > ${DEPLOYMENT_FILE}
|
|
|
|
# Volcano
|
|
${HELM_BIN_DIR}/helm template ${VK_ROOT}/installer/helm/chart/volcano --namespace volcano-system \
|
|
--name-template volcano --set basic.image_tag_version=${VOLCANO_IMAGE_TAG} --set basic.crd_version=${CRD_VERSION}\
|
|
-s templates/admission.yaml \
|
|
-s templates/admission-init.yaml \
|
|
-s templates/batch_v1alpha1_job.yaml \
|
|
-s templates/bus_v1alpha1_command.yaml \
|
|
-s templates/controllers.yaml \
|
|
-s templates/scheduler.yaml \
|
|
-s templates/scheduling_v1beta1_podgroup.yaml \
|
|
-s templates/scheduling_v1beta1_queue.yaml \
|
|
-s templates/nodeinfo_v1alpha1_numatopologies.yaml \
|
|
-s templates/topology_v1alpha1_hypernodes.yaml \
|
|
-s templates/webhooks.yaml \
|
|
>> ${DEPLOYMENT_FILE}
|
|
|
|
# JobFlow
|
|
${HELM_BIN_DIR}/helm template ${VK_ROOT}/installer/helm/chart/volcano/charts/jobflow --namespace volcano-system \
|
|
--name-template volcano --set basic.image_tag_version=${VOLCANO_IMAGE_TAG} --set basic.crd_version=${CRD_VERSION}\
|
|
-s templates/flow_v1alpha1_jobflows.yaml \
|
|
-s templates/flow_v1alpha1_jobtemplates.yaml \
|
|
>> ${DEPLOYMENT_FILE}
|
|
|
|
# Monitoring
|
|
${HELM_BIN_DIR}/helm template ${VK_ROOT}/installer/helm/chart/volcano --namespace volcano-monitoring \
|
|
--name-template volcano --set basic.image_tag_version=${VOLCANO_IMAGE_TAG} --set custom.metrics_enable=true \
|
|
-s templates/prometheus.yaml \
|
|
-s templates/kubestatemetrics.yaml \
|
|
-s templates/grafana.yaml \
|
|
>> ${MONITOR_DEPLOYMENT_YAML_FILENAME}
|
|
|
|
# Agent
|
|
${HELM_BIN_DIR}/helm template ${VK_ROOT}/installer/helm/chart/volcano --namespace volcano-system \
|
|
--name-template volcano --set basic.image_tag_version=${VOLCANO_IMAGE_TAG} --set custom.colocation_enable=true \
|
|
-s templates/agent.yaml \
|
|
>> ${AGENT_DEPLOYMENT_YAML_FILENAME}
|