Enable and use the passthrough gateway
What you’ll accomplish
Section titled “What you’ll accomplish”After completing this guide, you will have the optional passthrough gateway deployed and an application exposed through it. The passthrough gateway allows mesh ingress without Istio performing TLS termination, which is useful for applications that need to handle their own TLS.
Prerequisites
Section titled “Prerequisites”- UDS CLI installed
- Access to a Kubernetes cluster with prerequisites met
- An application that manages its own TLS termination
- Familiarity with Zarf packages and UDS Bundles
-
Enable the passthrough gateway in your UDS Core bundle
The passthrough gateway is not deployed by default. Enable it by adding
istio-passthrough-gatewayas an optional component in your UDS Core bundle:uds-bundle.yaml kind: UDSBundlemetadata:name: core-with-passthroughdescription: UDS Core with the passthrough gateway enabledversion: "0.0.1"packages:- name: corerepository: registry.defenseunicorns.com/public/coreref: x.x.x-upstreamoptionalComponents:- istio-passthrough-gatewayCreate and deploy the bundle:
Terminal window uds create --confirm && uds deploy uds-bundle-*.tar.zst --confirm -
Expose a service through the passthrough gateway
Use
gateway: passthroughin your Package CR. The application behind this gateway must handle TLS termination itself.uds-package.yaml apiVersion: uds.dev/v1alpha1kind: Packagemetadata:name: my-tls-appnamespace: my-tls-appspec:network:expose:- service: my-tls-app-serviceselector:app.kubernetes.io/name: my-tls-apphost: my-tls-appgateway: passthroughport: 443Traffic to
https://my-tls-app.yourdomain.comwill be forwarded to your application with the original TLS connection intact. -
Build and deploy your application’s Zarf package
Include the Package CR in your application’s Zarf package, then build and deploy:
Terminal window uds zarf package create --confirm && uds zarf package deploy zarf-package-*.tar.zst --confirm
Verification
Section titled “Verification”Check that the Package CR was reconciled and shows the expected endpoints:
uds zarf tools kubectl get package my-tls-app -n my-tls-appThe ENDPOINTS column should show your application’s URL. Test access — the TLS certificate presented should be your application’s certificate, not the gateway’s:
curl -v https://my-tls-app.yourdomain.comTroubleshooting
Section titled “Troubleshooting”Gateway not deploying
Section titled “Gateway not deploying”Symptoms: No pods in the istio-passthrough-gateway namespace.
Solution: Verify that istio-passthrough-gateway is listed under optionalComponents in your bundle configuration. The component name must match exactly.
TLS handshake failures
Section titled “TLS handshake failures”Symptoms: Connection resets or TLS errors when accessing the application.
Solution: Ensure your application is correctly configured to terminate TLS on the port specified in the Package CR. The passthrough gateway does not perform any TLS termination — the application must handle it.
Related documentation
Section titled “Related documentation”Next steps
Section titled “Next steps”These guides and concepts may be useful to explore next: