[!IMPORTANT] If you discover a security vulnerability, please do the responsible thing, Privately report it to me at satyabrata.7059@gmail.com
# Install Homebrew (if not already installed)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install kind (Kubernetes in Docker)
brew install kind
# Install kubectl (Kubernetes CLI)
brew install kubectl
# Install kind
# For AMD64 / x86_64
[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.29.0/kind-linux-amd64
# For ARM64
[ $(uname -m) = aarch64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.29.0/kind-linux-arm64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
# Install kubectl (based on system architecture)
ARCH=$(uname -m)
if [ "$ARCH" = "x86_64" ]; then
KARCH=amd64
elif [ "$ARCH" = "aarch64" ]; then
KARCH=arm64
else
echo "β Unsupported architecture: $ARCH"
exit 1
fi
curl -LO "https://dl.k8s.io/release/$(curl -s https://dl.k8s.io/release/stable.txt)/bin/linux/${KARCH}/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/kubectl
Start by cloning the project to your local machine:
git clone https://github.com/batpool/kubernetes-istio-service-mesh.git
cd kubernetes-istio-service-mesh
kind create cluster --config kind/config.yaml --name dev
helm repo add istio https://istio-release.storage.googleapis.com/charts
helm install istio-base istio/base -n istio-system --create-namespace --wait
helm install istiod istio/istiod -n istio-system --wait
kubectl label ns default istio-injection=enabled --overwrite
kubectl wait pods --for=condition=Ready -l app=istiod -n istio-system
helm install istio-gateway istio/gateway -n istio-system \
--set "service.type=NodePort" \
--set "service.ports[0].name=http2" \
--set "service.ports[0].port=80" \
--set "service.ports[0].nodePort=30000" \
--set "service.ports[1].name=https" \
--set "service.ports[1].port=443" \
--set "service.ports[1].nodePort=31000" \
--set "service.ports[2].name=status-port" \
--set "service.ports[2].port=15021" \
--set "service.ports[2].targetPort=15021" \
--set "service.ports[2].nodePort=32000"
kubectl apply -f istio/servicemesh/gateway.yaml
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm install prometheus prometheus-community/prometheus -n monitoring --create-namespace
helm install kiali-server kiali-server \
--repo https://kiali.org/helm-charts \
--namespace istio-system \
--create-namespace \
--set auth.strategy="anonymous" \
--set external_services.prometheus.url="http://prometheus-server.monitoring" \
--set external_services.grafana.enabled=false
kubectl apply -f istio/kiali/kvs.yaml
helm install fastapi-auth-service ./helm-charts/fastapi-auth-service
helm install golang-profile-service ./helm-charts/golang-profile-service
# fastapi microservice
http://127.0.0.1:8080/api/docs
# kiali
http://127.0.0.1:8080/kiali/
</a>
This project is licensed under the MIT License.
β Now youβre ready to visualize your Istio Service Mesh with Kiali, Prometheus β all running on a local Kind cluster!
π Donβt forget to give a β on GitHub if you find this project helpful!