3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
18 # Helm chart 1.6.0 correspondes to Airflow 2.3.0
19 AIRFLOW_HELM_VERSION
=1.6.0
20 PROMPUSHGW_HELM_VERSION
=1.18.2
22 # Install Airflow helm chart
23 function install_airflow
() {
24 [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of
function
25 # copy airflow-values.yaml to the destination folder
26 sudo mkdir
-p ${OSM_HELM_WORK_DIR}
27 sudo
cp ${OSM_DEVOPS}/installers
/helm
/values
/airflow-values.yaml
${OSM_HELM_WORK_DIR}
28 # update airflow-values.yaml to use the right tag
29 echo "Updating Helm values file helm/values/airflow-values.yaml to use defaultAirflowTag: ${OSM_DOCKER_TAG}"
30 sudo
sed -i "s#defaultAirflowTag:.*#defaultAirflowTag: ${OSM_DOCKER_TAG}#g" ${OSM_HELM_WORK_DIR}/airflow-values.yaml
31 if ! helm
-n osm status airflow
2> /dev
/null
; then
32 # if it does not exist, create secrets and install
33 kubectl
-n osm create secret generic airflow-webserver-secret
--from-literal="webserver-secret-key=$(python3 -c 'import secrets; print(secrets.token_hex(16))')"
34 helm repo add apache-airflow https
://airflow.apache.org
36 helm
-n osm
install airflow apache-airflow
/airflow
-f ${OSM_HELM_WORK_DIR}/airflow-values.yaml
--version ${AIRFLOW_HELM_VERSION}
38 # if it exists, upgrade
40 helm
-n osm upgrade airflow apache-airflow
/airflow
-f ${OSM_HELM_WORK_DIR}/airflow-values.yaml
--version ${AIRFLOW_HELM_VERSION}
42 [ -z "${DEBUG_INSTALL}" ] || DEBUG end of
function
45 # Install Prometheus Pushgateway helm chart
46 function install_prometheus_pushgateway
() {
47 [ -z "${DEBUG_INSTALL}" ] || DEBUG end of
function
48 if ! helm
-n osm status pushgateway
2> /dev
/null
; then
49 # if it does not exist, install
50 helm repo add prometheus-community https
://prometheus-community.github.io
/helm-charts
52 helm
-n osm
install pushgateway prometheus-community
/prometheus-pushgateway
--version ${PROMPUSHGW_HELM_VERSION}
54 # if it exists, upgrade
56 helm
-n osm upgrade pushgateway prometheus-community
/prometheus-pushgateway
--version ${PROMPUSHGW_HELM_VERSION}
58 [ -z "${DEBUG_INSTALL}" ] || DEBUG end of
function
63 OSM_DEVOPS
="/usr/share/osm-devops"
64 OSM_HELM_WORK_DIR
="/etc/osm/helm"
67 while getopts ":D:d:t:-: " o
; do
70 OSM_DEVOPS
="${OPTARG}"
73 OSM_HELM_WORK_DIR
="${OPTARG}"
76 OSM_DOCKER_TAG
="${OPTARG}"
79 [ "${OPTARG}" == "debug" ] && DEBUG_INSTALL
="y" && continue
80 echo -e "Invalid option: '--$OPTARG'\n" >&2
84 echo "Option -$OPTARG requires an argument" >&2
88 echo -e "Invalid option: '-$OPTARG'\n" >&2
97 source $OSM_DEVOPS/common
/logging
98 source $OSM_DEVOPS/common
/track
100 echo "DEBUG_INSTALL=$DEBUG_INSTALL"
101 echo "OSM_DEVOPS=$OSM_DEVOPS"
102 echo "OSM_DOCKER_TAG=$OSM_DOCKER_TAG"
103 echo "OSM_HELM_WORK_DIR=$OSM_HELM_WORK_DIR"
106 track deploy_osm airflow_ok
107 install_prometheus_pushgateway
108 track deploy_osm pushgateway_ok