2020-03-30 18:22:09 +00:00
#!/bin/bash
# Copyright 2020 The Kubernetes 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.
if [ -n " $DEBUG " ] ; then
set -x
fi
2022-04-01 16:14:46 +00:00
#set -o errexit
2020-03-30 18:22:09 +00:00
set -o nounset
set -o pipefail
2022-01-17 23:28:56 +00:00
# for backwards compatibility, the default version of 1.20 is copied to the root of the variant
# with enough docs updates, this could be removed
# see # DEFAULT VERSION HANDLING
K8S_DEFAULT_VERSION = 1.20
2022-07-11 01:35:47 +00:00
K8S_TARGET_VERSIONS = ( "1.20" "1.21" "1.22" "1.23" "1.24" )
2020-03-30 18:22:09 +00:00
2022-01-17 23:28:56 +00:00
DIR = $( cd $( dirname " ${ BASH_SOURCE } " ) /.. && pwd -P)
2021-04-23 14:25:43 +00:00
2022-01-17 23:28:56 +00:00
# clean
rm -rf ${ DIR } /deploy/static/provider/*
TEMPLATE_DIR = " ${ DIR } /hack/manifest-templates "
# each helm values file `values.yaml` under `hack/manifest-templates/provider` will be generated as provider/<provider>[/variant][/kube-version]/deploy.yaml
# TARGET is provider/<provider>[/variant]
TARGETS = $( dirname $( cd $DIR /hack/manifest-templates/ && find . -type f -name "values.yaml" ) | cut -d'/' -f2-)
for K8S_VERSION in " ${ K8S_TARGET_VERSIONS [@] } "
do
for TARGET in ${ TARGETS }
do
2022-04-01 16:14:46 +00:00
echo " Running ${ K8S_VERSION } for target ${ TARGET } "
2022-01-17 23:28:56 +00:00
TARGET_DIR = " ${ TEMPLATE_DIR } / ${ TARGET } "
MANIFEST = " ${ TEMPLATE_DIR } /common/manifest.yaml " # intermediate manifest
OUTPUT_DIR = " ${ DIR } /deploy/static/ ${ TARGET } / ${ K8S_VERSION } "
echo $OUTPUT_DIR
mkdir -p ${ OUTPUT_DIR }
cd ${ TARGET_DIR }
helm template ingress-nginx ${ DIR } /charts/ingress-nginx \
--values values.yaml \
--namespace ingress-nginx \
--kube-version ${ K8S_VERSION } \
> $MANIFEST
2022-07-24 16:10:56 +00:00
sed -i.bak '/app.kubernetes.io\/managed-by: Helm/d' $MANIFEST
sed -i.bak '/helm.sh/d' $MANIFEST
2022-04-01 16:14:46 +00:00
2022-01-17 23:28:56 +00:00
kustomize --load-restrictor= LoadRestrictionsNone build . > ${ OUTPUT_DIR } /deploy.yaml
2022-07-24 16:10:56 +00:00
rm $MANIFEST $MANIFEST .bak
2022-01-17 23:28:56 +00:00
cd ~-
# automatically generate the (unsupported) kustomization.yaml for each target
sed " s_{TARGET}_ ${ TARGET } _ " $TEMPLATE_DIR /static-kustomization-template.yaml > ${ OUTPUT_DIR } /kustomization.yaml
# DEFAULT VERSION HANDLING
if [ [ ${ K8S_VERSION } = ${ K8S_DEFAULT_VERSION } ] ]
then
cp ${ OUTPUT_DIR } /*.yaml ${ OUTPUT_DIR } /../
2022-07-24 16:10:56 +00:00
sed -i.bak " s/^/#GENERATED FOR K8S ${ K8S_VERSION } \n/ " ${ OUTPUT_DIR } /../deploy.yaml && rm ${ OUTPUT_DIR } /../deploy.yaml.bak
2022-01-17 23:28:56 +00:00
fi
done
done