-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathgenerate-antrea-resources.sh
executable file
·138 lines (107 loc) · 3.88 KB
/
generate-antrea-resources.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#!/bin/bash
set -eo pipefail
function echoerr {
>&2 echo "$@"
}
_usage="Usage: $0 [--version <antrea version>] [--platform[openshift|kubernetes]] [--help|-h]
Generate a YAML manifest for Antrea using Kustomize and print it to stdout.
--version Antrea version for use for manifest generation
--platform Target platform for operator yamls
--help, -h Print this message and exit
This tool uses kustomize (https://github.com/kubernetes-sigs/kustomize) to generate manifests for
Antrea. You must set the KUSTOMIZE environment variable to the path of the kustomize binary you want
us to use."
function print_usage {
echoerr "$_usage"
}
function print_help {
echoerr "Try '$0 --help' for more information."
}
ANTREA_VERSION=${ANTREA_VERSION:-"main"}
ANTREA_PLATFORM=${ANTREA_PLATFORM:-"kubernetes"}
while [[ $# -gt 0 ]]
do
key="$1"
case $key in
--version)
ANTREA_VERSION="$2"
shift 2
;;
--platform)
ANTREA_PLATFORM="$2"
shift 2
;;
-h|--help)
print_usage
exit 0
;;
*) # unknown option
echoerr "Unknown option $1"
exit 1
;;
esac
done
if [ "$ANTREA_PLATFORM" != "openshift" ] && [ "$ANTREA_PLATFORM" != "kubernetes" ]; then
print_usage
fi
THIS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
if [ -z "$KUSTOMIZE" ]; then
echoerr "KUSTOMIZE environment variable must be set"
print_help
exit 1
fi
### Get Antrea repository
ANTREA_DIR=$(mktemp -d /tmp/antrea.XXXXXXX)
if [ "$ANTREA_VERSION" == "main" ]; then
ANTREA_URL="https://github.com/antrea-io/antrea/archive/refs/heads/main.tar.gz"
ANTREA_ROOT=$ANTREA_DIR/antrea-main
else
ANTREA_URL="https://github.com/antrea-io/antrea/archive/refs/tags/v${ANTREA_VERSION}.tar.gz"
ANTREA_ROOT=$ANTREA_DIR/antrea-$ANTREA_VERSION
fi
curl -sL $ANTREA_URL | tar xz -C $ANTREA_DIR
### Generate antrea-manifest/antrea.yml
KUSTOMIZATION_DIR=$ANTREA_ROOT/build/yamls
TMP_DIR=$(mktemp -d /tmp/overlays.XXXXXXXX)
mkdir $TMP_DIR/base
pushd $TMP_DIR/base > /dev/null
# Use antrea.yml from Antrea repo as base
cp $ANTREA_ROOT/build/yamls/antrea.yml .
touch kustomization.yml
$KUSTOMIZE edit add resource antrea.yml
# do all ConfigMap edits
mkdir $TMP_DIR/configMap && cd $TMP_DIR/configMap
BASE=../base
cp $THIS_DIR/../build/yamls/configMap/* .
$KUSTOMIZE edit add base $BASE
BASE=../configMap
cd $TMP_DIR
mkdir osmft && cd osmft
cp $THIS_DIR/../build/yamls/patches/*.yml .
touch kustomization.yml
$KUSTOMIZE edit add base $BASE
$KUSTOMIZE edit add patch --path agentOcpRelease.yml
$KUSTOMIZE edit add patch --path agentImage.yml
$KUSTOMIZE edit add patch --path ovsImage.yml
$KUSTOMIZE edit add patch --path installCniImage.yml
$KUSTOMIZE edit add patch --path installCniConfDir.yml
$KUSTOMIZE edit add patch --path installCniBinDir.yml
$KUSTOMIZE edit add patch --path controllerOsRelease.yml
$KUSTOMIZE edit add patch --path controllerImage.yml
$KUSTOMIZE edit add patch --path agentImagePullPolicy.yml
$KUSTOMIZE edit add patch --path controllerImagePullPolicy.yml
$KUSTOMIZE build | sed 's/\\"\({{.*}}\)\\"/"\1"/; '"s/'\({{.*}}\)'/\1/" > $THIS_DIR/../antrea-manifest/antrea.yml
popd > /dev/null
### Generate config/rbac/role.yaml
# generate-role-yaml.py requires PyYAML, install it just in case that it's missing
pip3 -q install PyYAML
ROLE_FILES="$THIS_DIR/../config/rbac/role_base.yaml $ANTREA_ROOT/build/yamls/antrea.yml"
if [ "$ANTREA_PLATFORM" == "openshift" ]; then
ROLE_FILES+=" $THIS_DIR/../config/rbac/role_base_ocp.yaml"
fi
$THIS_DIR/generate-role-yaml.py $ROLE_FILES > $THIS_DIR/../config/rbac/role.yaml
### Generate config/samples/operator_v1_antreainstall.yaml
$THIS_DIR/generate-antrea-samples.py --platform $ANTREA_PLATFORM --version $ANTREA_VERSION \
$ANTREA_ROOT/build/yamls/antrea.yml > $THIS_DIR/../config/samples/operator_v1_antreainstall.yaml
rm -rf $TMP_DIR $ANTREA_DIR
exit 0