Enable Istio on IEC type2
[iec.git] / src / foundation / service_mesh / install_Istio.sh
diff --git a/src/foundation/service_mesh/install_Istio.sh b/src/foundation/service_mesh/install_Istio.sh
new file mode 100755 (executable)
index 0000000..a7feb35
--- /dev/null
@@ -0,0 +1,36 @@
+#!/bin/bash
+set -x
+
+function wait_for {
+  # Execute in a subshell to prevent local variable override during recursion
+  (
+    local total_attempts=$1; shift
+    local cmdstr=$*
+    local sleep_time=2
+    echo -e "\n[wait_for] Waiting for cmd to return success: ${cmdstr}"
+    # shellcheck disable=SC2034
+    for attempt in $(seq "${total_attempts}"); do
+      echo "[wait_for] Attempt ${attempt}/${total_attempts%.*} for: ${cmdstr}"
+      # shellcheck disable=SC2015
+      eval "${cmdstr}" && echo "[wait_for] OK: ${cmdstr}" && return 0 || true
+      sleep "${sleep_time}"
+    done
+    echo "[wait_for] ERROR: Failed after max attempts: ${cmdstr}"
+    return 1
+  )
+}
+
+
+for i in Istio/init/crd*yaml; do kubectl apply -f $i; done
+
+kubectl apply -f Istio/istio-demo-arm64.yaml
+
+# Waiting for Istio ready
+wait_for 100 'test $(kubectl get pods -n istio-system | grep -ce "Running") -eq 12'
+
+#Apply the following ConfigMap to enable injection of Dikastes alongside Envoy.(injection ConfigMap)
+kubectl apply -f Istio/istio-inject-configmap-1.1.7.yaml
+
+#Enable the default namespace auto inject
+kubectl label namespace default istio-injection=enabled --overwrite
+kubectl get namespace -L istio-injection