๐ก Istio Service Mesh Helm Deployment: istiod โ Executive Summary
Technical architectural analysis, practical configuration manifests, and deployment instructions for Istio Service Mesh Helm Deployment: istiod.
Install
bash
helm repo add istio https://istio-release.storage.googleapis.com/charts
helm repo update
kubectl create namespace istio-system
helm pull istio/base --untar
helm pull istio/istiod --untar
cd base
helm install -n istio-system base .
cd ../istiod
helm install -n istio-system istiod --wait .
helm ls -n istio-system
helm status istiod -n istio-system
kubectl get deployments -n istio-system --output wide
# ์ค์น๋ ๋ฆฌ์์ค ํ์ธ
helm get all istiod -n istio-system | grep "kind:"
#์ฌ์ด๋์นด ์ฃผ์
ํ ns
kubectl label ns $ns istio-injection=enabled
Deploy Ingress Gateway Engine
References and Guidelines (NOTE)
When distributing istio-ingress, be sure to distribute the istio=ingressgateway label. (Select from gateway to label)
bash
#kubernetes Gateway api ํ์ฑํ
#kubectl get crd gateways.gateway.networking.k8s.io &> /dev/null || \
{ kubectl kustomize "github.com/kubernetes-sigs/gateway-api/config/crd?ref=444631bfe06f3bcca5d0eadf1857eac1d369421d" | kubectl apply -f -; }
helm pull istio/gateway --untar
cd ../gateway
kubectl create namespace istio-ingress
helm install -n istio-ingress gateway --wait .
Register Ingress Gateway resource
References and Guidelines (NOTE)
The TLScredentialName to be registered in the https gateway must exist in the namespace where istio-ingressgateway is deployed.
bash
kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: httpbin-gateway
spec:
# The selector matches the ingress gateway pod labels.
# If you installed Istio using Helm following the standard documentation, this would be "istio=ingress"
selector:
istio: ingressgateway
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "httpbin.example.com"
EOF
kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: httpbin
spec:
hosts:
- "httpbin.example.com"
gateways:
- httpbin-gateway
http:
- match:
- uri:
prefix: /status
- uri:
prefix: /delay
route:
- destination:
port:
number: 8000
host: httpbin
EOF
gateway validation
bash
istioctl analyze -n $ns
Prometheus Install
bash
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.21/samples/addons/prometheus.yaml
Kiali Install
bash
helm repo add kiali https://kiali.org/helm-charts
helm pull kiali/kiali-server --untar
helm install -n istio-system kiali-server .
Jaeger Install
bash
helm pull bitnami/jaeger --untar
helm install -n monitoring jaeger .
kubectl apply -f - << EOF
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: jaeger
namespace: monitoring
annotations:
cert-manager.io/cluster-issuer: ca-issuer
nginx.ingress.kubernetes.io/add-base-url: "true"
nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
spec:
ingressClassName: nginx
tls:
- hosts:
- jaeger.fredric.playground.cld
secretName: jaeger.fredric.playground.cld-tls
rules:
- host: jaeger.fredric.playground.cld
http:
paths:
- path: /
backend:
service:
name: jaeger-query
port:
number: 16686
pathType: Prefix
EOF
Clean Delete
bash
helm delete istio-ingress -n istio-ingress
kubectl delete namespace istio-ingress
helm delete istiod -n istio-system
helm delete istio-base -n istio-system
kubectl delete namespace istio-system
#stable revision label resource
helm template istiod istio/istiod -s templates/revision-tags.yaml --set revisionTags={prod-canary} --set revision=canary -n istio-system | kubectl delete -f -
#installed crd (installed by istio)
kubectl get crd -oname | grep --color=never 'istio.io' | xargs kubectl delete




Leave a Reply