Istio Service Mesh Helm Deployment: istiod

๐Ÿ’ก 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

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *