Skip to content

Commit eb8d7da

Browse files
committed
add a install/configure all script
1 parent 28836df commit eb8d7da

1 file changed

Lines changed: 223 additions & 0 deletions

File tree

Lines changed: 223 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,223 @@
1+
#!/bin/sh
2+
3+
export TUTORIAL_HOME=$(pwd)/../
4+
DNS_DOMAIN=nip.io
5+
KNATIVE_EVENTING_KAFKA_VERSION=v1.8.1
6+
KNATIVE_SERVING_VERSION=v1.8.3
7+
KNATIVE_EVENTING_VERSION=v1.8.5
8+
MINIKUBE_PROFILE=knativetutorial
9+
KOURIER_VERSION=v1.8.1
10+
STRIMZI_OP_VERSION=0.32.0
11+
12+
function confirm() {
13+
read -p "press enter to proceed or 'Ctrl+c' to cancel" -n 1 -r
14+
echo
15+
}
16+
17+
echo "This script automatically install and configure: Knative, Strimzi Kafka, Kourier Ingress, Contour Ingress Controller, Nexus and Camel-K on a Minikube Environment"
18+
confirm
19+
20+
echo
21+
echo "Install Knative Serving ($KNATIVE_SERVING_VERSION) and Eventing ($KNATIVE_EVENTING_VERSION) CRDs..."
22+
confirm
23+
kubectl apply \
24+
--filename https://github.com/knative/serving/releases/download/knative-$KNATIVE_SERVING_VERSION/serving-crds.yaml \
25+
--filename https://github.com/knative/eventing/releases/download/knative-$KNATIVE_EVENTING_VERSION/eventing-crds.yaml
26+
27+
echo
28+
echo "Serving CRDs"
29+
kubectl api-resources --api-group='serving.knative.dev'
30+
echo
31+
echo "Messaging CRDs"
32+
kubectl api-resources --api-group='messaging.knative.dev'
33+
echo
34+
echo "Eventing CRDs"
35+
kubectl api-resources --api-group='eventing.knative.dev'
36+
echo
37+
echo "Sources CRDs"
38+
kubectl api-resources --api-group='sources.knative.dev'
39+
40+
echo
41+
echo "----"
42+
echo "Install Knative Serving ($KNATIVE_SERVING_VERSION)..."
43+
confirm
44+
kubectl apply \
45+
--filename https://github.com/knative/serving/releases/download/knative-$KNATIVE_SERVING_VERSION/serving-core.yaml
46+
47+
sleep 2
48+
49+
echo
50+
echo "Knative deploy status"
51+
kubectl rollout status deploy controller -n knative-serving
52+
kubectl rollout status deploy activator -n knative-serving
53+
kubectl rollout status deploy autoscaler -n knative-serving
54+
kubectl rollout status deploy webhook -n knative-serving
55+
kubectl get pods -n knative-serving
56+
57+
echo "----"
58+
echo "Install Kourier Ingress Gateway ($KOURIER_VERSION)"
59+
confirm
60+
kubectl apply \
61+
--filename https://github.com/knative/net-kourier/releases/download/knative-$KOURIER_VERSION/kourier.yaml
62+
63+
sleep 2
64+
65+
echo
66+
echo "Kourier deployment status"
67+
kubectl rollout status deploy 3scale-kourier-control -n knative-serving
68+
kubectl rollout status deploy 3scale-kourier-gateway -n kourier-system
69+
kubectl get pods --all-namespaces -l 'app in(3scale-kourier-gateway,3scale-kourier-control)'
70+
71+
echo
72+
echo "configure Knative serving to use Kourier as the ingress by patching 'configmap/config-network'"
73+
kubectl patch configmap/config-network \
74+
-n knative-serving \
75+
--type merge \
76+
-p '{"data":{"ingress.class":"kourier.ingress.networking.knative.dev"}}'
77+
78+
echo
79+
echo "----"
80+
echo "Install and Configure Contour Ingress Controller"
81+
confirm
82+
kubectl apply \
83+
--filename https://projectcontour.io/quickstart/contour.yaml
84+
85+
sleep 2
86+
kubectl get pods -n projectcontour
87+
88+
echo
89+
echo "create an Ingress to Kourier Ingress Gateway..."
90+
cat <<EOF | kubectl apply -n kourier-system -f -
91+
apiVersion: networking.k8s.io/v1
92+
kind: Ingress
93+
metadata:
94+
name: kourier-ingress
95+
namespace: kourier-system
96+
spec:
97+
rules:
98+
- http:
99+
paths:
100+
- path: /
101+
pathType: Prefix
102+
backend:
103+
service:
104+
name: kourier
105+
port:
106+
number: 80
107+
EOF
108+
109+
echo
110+
echo "Configure Knative to use the kourier-ingress Gateway"
111+
ksvc_domain="\"data\":{\""$(minikube -p $MINIKUBE_PROFILE ip)".$DNS_DOMAIN\": \"\"}"
112+
kubectl patch configmap/config-domain \
113+
-n knative-serving \
114+
--type merge \
115+
-p "{$ksvc_domain}"
116+
117+
echo
118+
echo "----"
119+
echo "Install Knative Eventing ($KNATIVE_EVENTING_VERSION) resources"
120+
confirm
121+
kubectl apply \
122+
--filename \
123+
https://github.com/knative/eventing/releases/download/knative-$KNATIVE_EVENTING_VERSION/eventing-core.yaml \
124+
--filename \
125+
https://github.com/knative/eventing/releases/download/knative-$KNATIVE_EVENTING_VERSION/in-memory-channel.yaml \
126+
--filename \
127+
https://github.com/knative/eventing/releases/download/knative-$KNATIVE_EVENTING_VERSION/mt-channel-broker.yaml
128+
129+
echo
130+
echo "Knative Eventing deploy status"
131+
kubectl rollout status deploy eventing-controller -n knative-eventing
132+
kubectl rollout status deploy eventing-webhook -n knative-eventing
133+
kubectl rollout status deploy imc-controller -n knative-eventing
134+
kubectl rollout status deploy imc-dispatcher -n knative-eventing
135+
kubectl rollout status deploy mt-broker-controller -n knative-eventing
136+
kubectl rollout status deploy mt-broker-filter -n knative-eventing
137+
kubectl rollout status deploy mt-broker-filter -n knative-eventing
138+
139+
kubectl get pods -n knative-eventing
140+
141+
sleep 3
142+
143+
echo
144+
echo "----"
145+
echo "Create Tutorial Namespace"
146+
confirm
147+
kubectl create namespace knativetutorial
148+
kubens knativetutorial
149+
150+
echo "Minikube Docker env"
151+
eval $(minikube docker-env)
152+
153+
echo
154+
echo "----"
155+
echo "Install Apache Camel K"
156+
confirm
157+
echo
158+
echo "Configure Maven Settings pointing to a local Nexus Instance to be used by the Camel-K Operator..."
159+
kubectl create configmap \
160+
-n knativetutorial my-camel-k-maven-settings \
161+
--from-file=settings.xml="$TUTORIAL_HOME/install/utils/camel-k-maven-settings.xml"
162+
163+
echo
164+
echo "Install Camel-K Operator..."
165+
kamel install \
166+
--namespace knativetutorial \
167+
--olm=false \
168+
--maven-cli-option="-e, --no-transfer-progress, -Dstyle.color=never" \
169+
--maven-settings="configmap:my-camel-k-maven-settings/settings.xml" \
170+
--wait
171+
172+
echo
173+
echo "----"
174+
echo "Deploy Nexus"
175+
confirm
176+
kubectl apply -n knativetutorial -f $TUTORIAL_HOME/install/utils/nexus.yaml
177+
178+
sleep 10
179+
kubectl get -n knativetutorial pods
180+
181+
echo
182+
echo "Get nexus Admin pwd"
183+
export NEXUS_POD=$(kubectl -n knativetutorial get pods \
184+
-lapp=nexus -ojsonpath='{.items[0].metadata.name}')
185+
kubectl exec $NEXUS_POD -- cat /nexus-data/admin.password
186+
187+
minikube -p $MINIKUBE_PROFILE service -n knativetutorial nexus
188+
189+
echo
190+
echo "----"
191+
echo "Deploy Kafka through Strimzi Operator ($STRIMZI_OP_VERSION)"
192+
confirm
193+
kubectl create namespace kafka
194+
195+
curl -L https://github.com/strimzi/strimzi-kafka-operator/releases/download/$STRIMZI_OP_VERSION/strimzi-cluster-operator-$STRIMZI_OP_VERSION.yaml \
196+
| sed 's/namespace:.*/namespace: kafka/' \
197+
| kubectl apply -n kafka -f -
198+
199+
kubectl api-resources --api-group='kafka.strimzi.io'
200+
201+
echo
202+
echo "create a Kafka Cluster"
203+
kubectl -n kafka apply -f $TUTORIAL_HOME/eventing/kafka-broker-my-cluster.yaml
204+
205+
kubectl get pods -n kafka
206+
207+
echo
208+
echo "Deploy Knative Eventing KafkaSource ($KNATIVE_EVENTING_KAFKA_VERSION)"
209+
kubectl apply -f https://github.com/knative-sandbox/eventing-kafka/releases/download/knative-$KNATIVE_EVENTING_KAFKA_VERSION/source.yaml
210+
211+
echo
212+
echo "deploy a Knative Kafka Channel"
213+
curl -L "https://github.com/knative-sandbox/eventing-kafka/releases/download/knative-$KNATIVE_EVENTING_KAFKA_VERSION/channel-consolidated.yaml" \
214+
| sed 's/REPLACE_WITH_CLUSTER_URL/my-cluster-kafka-bootstrap.kafka:9092/' \
215+
| kubectl apply --filename -
216+
217+
kubectl get pods -n knative-eventing
218+
kn source list-types
219+
220+
echo
221+
echo "----"
222+
echo "Using Kafka Channel as Default Knative Channel"
223+
kubectl apply -f $TUTORIAL_HOME/eventing/default-channel-config.yaml

0 commit comments

Comments
 (0)