1
1
#! /bin/bash
2
2
#
3
3
# Based on:
4
- # - https://github.com/konveyor/operator/blob/main/hack/install-konveyor.sh
4
+ # - https://github.com/konveyor/operator/blob/main/hack/install-konveyor.sh **latest
5
5
# - https://github.com/konveyor/operator/blob/main/hack/install-tackle.sh
6
6
# - https://konveyor.github.io/konveyor/installation/#installing-konveyor-operator
7
+ # - https://github.com/konveyor/operator/blob/main/tackle-k8s.yaml
7
8
#
8
9
# By default, no authentication, and only use pre-built images
9
10
#
10
- set -euxo pipefail
11
+ set -eo pipefail
12
+ # set -euxo pipefail
11
13
12
14
# use kubectl if available, else fall back to `minikube kubectl --`, else error
13
15
KUBECTL=kubectl
@@ -38,6 +40,19 @@ debug() {
38
40
}
39
41
trap ' debug' ERR
40
42
43
+ function retry_command() {
44
+ local retries=$1
45
+ local sleeptime=$2
46
+ local cmd=${@: 3}
47
+
48
+ until [[ $retries -eq 0 ]] || ${cmd} & > /dev/null; do
49
+ echo " command failed, try again in ${sleeptime} s [retries: $retries ]"
50
+ sleep $sleeptime
51
+ (( retries-- ))
52
+ done
53
+ [[ $retries == 0 ]] && return 1 || return 0
54
+ }
55
+
41
56
# Inputs for setting up the operator
42
57
NAMESPACE=" ${NAMESPACE:- konveyor-tackle} "
43
58
OPERATOR_INDEX_IMAGE=" ${OPERATOR_INDEX_IMAGE:- quay.io/ konveyor/ tackle2-operator-index: latest} "
@@ -46,22 +61,23 @@ OPERATOR_INDEX_IMAGE="${OPERATOR_INDEX_IMAGE:-quay.io/konveyor/tackle2-operator-
46
61
TACKLE_CR=" ${TACKLE_CR:- } "
47
62
48
63
FEATURE_AUTH_REQUIRED=" ${FEATURE_AUTH_REQUIRED:- false} "
49
- HUB_IMAGE=" ${HUB_IMAGE:- quay.io/ konveyor/ tackle2-hub: latest} "
50
- UI_IMAGE=" ${UI_IMAGE:- quay.io/ konveyor/ tackle2-ui: latest} "
64
+ IMAGE_PULL_POLICY=" ${IMAGE_PULL_POLICY:- Always} "
51
65
UI_INGRESS_CLASS_NAME=" ${UI_INGRESS_CLASS_NAME:- nginx} "
66
+ UI_IMAGE=" ${UI_IMAGE:- quay.io/ konveyor/ tackle2-ui: latest} "
67
+ HUB_IMAGE=" ${HUB_IMAGE:- quay.io/ konveyor/ tackle2-hub: latest} "
52
68
ADDON_ANALYZER_IMAGE=" ${ADDON_ANALYZER_IMAGE:- quay.io/ konveyor/ tackle2-addon-analyzer: latest} "
53
- IMAGE_PULL_POLICY=" ${IMAGE_PULL_POLICY:- Always} "
54
69
ANALYZER_CONTAINER_REQUESTS_MEMORY=" ${ANALYZER_CONTAINER_REQUESTS_MEMORY:- 0} "
55
70
ANALYZER_CONTAINER_REQUESTS_CPU=" ${ANALYZER_CONTAINER_REQUESTS_CPU:- 0} "
56
71
57
72
install_operator () {
58
- # Create the Konveyor Namespace
59
- $KUBECTL auth can-i create namespace --all-namespaces
60
- $KUBECTL create namespace ${NAMESPACE} || true
61
-
62
- # Install the Konveyor CatalogSource, OperatorGroup, and Subscription
73
+ # Install the Konveyor Namespace, CatalogSource, OperatorGroup, and Subscription
63
74
cat << EOF | $KUBECTL apply -f -
64
75
---
76
+ apiVersion: v1
77
+ kind: Namespace
78
+ metadata:
79
+ name: ${NAMESPACE}
80
+ ---
65
81
apiVersion: operators.coreos.com/v1alpha1
66
82
kind: CatalogSource
67
83
metadata:
@@ -95,29 +111,37 @@ spec:
95
111
sourceNamespace: ${NAMESPACE}
96
112
EOF
97
113
98
- # # If on MacOS, need to install `brew install coreutils` to get `timeout`
99
- # timeout 600s bash -c "until $KUBECTL get customresourcedefinitions.apiextensions.k8s.io tackles.tackle.konveyor.io; do sleep 30; done" \
100
- # || $KUBECTL get subscription --namespace ${NAMESPACE} -o yaml konveyor-operator # Print subscription details when timed out
114
+ echo " Waiting for the Tackle CRD to exist"
115
+ retry_command 10 10 \
116
+ $KUBECTL get customresourcedefinitions.apiextensions.k8s.io tackles.tackle.konveyor.io
117
+
118
+ if [[ $? -ne 0 ]]; then
119
+ echo " Tackle CRD doesn't exist yet, cannot continue"
120
+ exit 1
121
+ fi
101
122
123
+ echo " Waiting for the Tackle CRD to become established"
102
124
$KUBECTL wait \
103
125
--namespace ${NAMESPACE} \
104
- --for=condition=established \
105
- customresourcedefinitions.apiextensions.k8s.io/tackles.tackle.konveyor.io
106
- }
126
+ --timeout=120s \
127
+ --for=condition=Established \
128
+ customresourcedefinitions.apiextensions.k8s.io tackles.tackle.konveyor.io
107
129
108
- install_tackle () {
109
- echo " Waiting for the Tackle CRD to become available"
110
- $KUBECTL wait \
130
+ echo " Waiting for the Tackle Operator to become available"
131
+ $KUBECTL rollout status \
111
132
--namespace " ${NAMESPACE} " \
112
- --for=condition=established \
113
- customresourcedefinitions.apiextensions.k8s.io/tackles.tackle.konveyor.io
114
-
115
- echo " Waiting for the Tackle Operator to exist"
116
- timeout 2m bash -c " until $KUBECTL --namespace ${NAMESPACE} get deployment/tackle-operator; do sleep 10; done"
133
+ --timeout=600s \
134
+ -w deployment/tackle-operator
135
+ }
117
136
118
- echo " Waiting for the Tackle Operator to become available"
119
- $KUBECTL rollout status --namespace " ${NAMESPACE} " -w deployment/tackle-operator --timeout=600s
137
+ install_konveyor () {
138
+ echo " Make sure the Tackle Operator is available"
139
+ $KUBECTL rollout status \
140
+ --namespace " ${NAMESPACE} " \
141
+ --timeout=600s \
142
+ -w deployment/tackle-operator
120
143
144
+ echo " Create a Tackle CR"
121
145
if [ -n " ${TACKLE_CR} " ]; then
122
146
echo " ${TACKLE_CR} " | $KUBECTL apply --namespace " ${NAMESPACE} " -f -
123
147
else
@@ -127,18 +151,18 @@ apiVersion: tackle.konveyor.io/v1alpha1
127
151
metadata:
128
152
name: tackle
129
153
spec:
154
+ image_pull_policy: ${IMAGE_PULL_POLICY}
130
155
feature_auth_required: ${FEATURE_AUTH_REQUIRED}
131
- hub_image_fqin: ${HUB_IMAGE}
132
- ui_image_fqin: ${UI_IMAGE}
133
156
ui_ingress_class_name: ${UI_INGRESS_CLASS_NAME}
157
+ ui_image_fqin: ${UI_IMAGE}
158
+ hub_image_fqin: ${HUB_IMAGE}
134
159
analyzer_fqin: ${ADDON_ANALYZER_IMAGE}
135
- image_pull_policy: ${IMAGE_PULL_POLICY}
136
160
analyzer_container_requests_memory: ${ANALYZER_CONTAINER_REQUESTS_MEMORY}
137
161
analyzer_container_requests_cpu: ${ANALYZER_CONTAINER_REQUESTS_CPU}
138
162
EOF
139
163
fi
140
164
141
- # Want to see in github logs what we just created
165
+ # Log Want to see in github logs what we just created
142
166
$KUBECTL get --namespace " ${NAMESPACE} " -o yaml tackles.tackle.konveyor.io/tackle
143
167
144
168
# Wait for reconcile to finish
157
181
deployments.apps
158
182
}
159
183
160
- $KUBECTL get customresourcedefinitions.apiextensions.k8s.io tackles.tackle.konveyor.io || install_operator
161
- install_tackle
184
+ $KUBECTL get customresourcedefinitions.apiextensions.k8s.io tackles.tackle.konveyor.io & > /dev/null || install_operator
185
+ install_konveyor
0 commit comments