1+ #! /bin/bash
2+
3+ set -eu
4+ set -o errexit
5+
6+ export CLUSTER_NAME=${CLUSTER_NAME:- knativetutorial}
7+ CURRENT_DIR=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " && pwd ) "
8+
9+ # create registry container unless it already exists
10+ export CONTAINER_REGISTRY_NAME=' kind-registry'
11+ export CONTAINER_REGISTRY_PORT=' 5000'
12+
13+ running=" $( docker inspect -f ' {{.State.Running}}' " ${CONTAINER_REGISTRY_NAME} " 2> /dev/null || true) "
14+ if [ " ${running} " != ' true' ]; then
15+ docker run \
16+ -d --restart=always -p " ${CONTAINER_REGISTRY_PORT} :5000" --name " ${CONTAINER_REGISTRY_NAME} " \
17+ registry:2
18+ fi
19+
20+ # create a cluster with the local registry enabled in containerd
21+ envsubst < ${CURRENT_DIR} /kind-cluster-config.yaml | kind create cluster \
22+ --name=" ${CLUSTER_NAME} " --config=-
23+
24+ # connect the registry to the cluster network only for new
25+ if [ " ${running} " != ' true' ]; then
26+ docker network connect " kind" " ${CONTAINER_REGISTRY_NAME} "
27+ fi
28+
29+ # # Label nodes for using registry
30+ # tell https://tilt.dev to use the registry
31+ # https://docs.tilt.dev/choosing_clusters.html#discovering-the-registry
32+ for node in $( kind get nodes --name=" $CLUSTER_NAME " ) ; do
33+ kubectl annotate node " ${node} " \
34+ " tilt.dev/registry=localhost:${CONTAINER_REGISTRY_PORT} " \
35+ " tilt.dev/registry-from-cluster=${CONTAINER_REGISTRY_NAME} :${CONTAINER_REGISTRY_PORT} " ;
36+ done
37+
38+ # # Label worker nodes
39+ kubectl get nodes --no-headers -l ' !node-role.kubernetes.io/master' -o jsonpath=' {range .items[*]}{.metadata.name}{"\n"}' | xargs -I{} kubectl label node {} node-role.kubernetes.io/worker=' '
40+
41+ # # Setup helm
42+
43+ helm repo add stable https://kubernetes-charts.storage.googleapis.com/
44+ helm repo update
45+
46+
47+ # ##################################
48+ # Nginx Ingress
49+ # ##################################
50+
51+ # # Label Worker nodes as nginx ingress
52+ kubectl get nodes --no-headers -l ' !node-role.kubernetes.io/master' -o jsonpath=' {range .items[*]}{.metadata.name}{"\n"}' | xargs -I{} kubectl label node {} nginx=ingresshost
53+
54+ kubectl create ns ingress-nginx
55+
56+ helm install ingress-nginx stable/nginx-ingress --namespace ingress-nginx \
57+ --set controller.nodeSelector.nginx=" ingresshost" \
58+ --set rbac.create=true --set controller.image.pullPolicy=" Always" \
59+ --set controller.extraArgs.enable-ssl-passthrough=" " \
60+ --set controller.stats.enabled=true --set controller.service.type=" ClusterIP" \
61+ --set controller.kind=" DaemonSet" --set controller.daemonset.useHostPort=true
62+
63+ kubectl rollout status ds ingress-nginx-nginx-ingress-controller -n ingress-nginx
64+ kubectl rollout status deploy ingress-nginx-nginx-ingress-default-backend -n ingress-nginx
0 commit comments