Resolve "Document product integration for integrating with service mesh (Istio)"
All threads resolved!
All threads resolved!
Compare changes
@@ -5,8 +5,317 @@
The [Istio sidecar](https://istio.io/latest/docs/reference/config/networking/sidecar/) is a container that can be automatically injected into all package pods to provide encrypted traffic using [mutual TLS](https://istio.io/latest/docs/tasks/security/authentication/authn-policy/#auto-mutual-tls). It also enables detailed [packet tracing](https://istio.io/latest/docs/tasks/observability/distributed-tracing/jaeger/) and [network traffic metrics](https://istio.io/latest/docs/ops/configuration/telemetry/envoy-stats/).
When Istio is enabled in the values, automatic Istio sidecar injection is added to the namespace by adding the label `istio-injection: "enabled"`. Most packages are compatible with Istio's sidecar, but if you need to disable this, change the label to `istio-injection: "disabled"`in `flux/templates/$PKGNAME/namespace.yaml`.
You have now verified Istio is working properly with the package. To recap, incoming traffic to the cluster is first processed by Istio's ingress gateway listening on specific ports on each node. `http` and `https` traffic is forwarded to internal ports 8080 and 8443 respectively. The Istio Gateway configuration redirects `http` traffic to `https` and `https` traffic matching the domain (`bigbang.dev`) is TLS decrypted. The Virtual Service configuration processes `https` traffic from the Gateway matching the package's hostname (`podinfo.bigbang.dev`) and routes traffic to the package's service and `http` port. The service then directs traffic to the pod for handling. Since the pod has the Istio sidecar running, the mutual TLS Istio feature will automatically encrypt traffic from the gateway to the pod inside the cluster (even though its http). The sidecar will then decrypt to package before sending it over to the package for handling. The following diagram illustrates this flow: