此内容没有您所选择的语言版本。
Chapter 4. Istio ambient mode
Istio ambient mode introduces an architecture for Red Hat OpenShift Service Mesh without sidecar injection. The Istio ambient mode is designed to simplify operations and reduce resource usage. Instead of injecting a sidecar proxy into each application pod, ambient mode uses a shared node-level proxy for Layer 4 (L4) functionality and an optional, dedicated proxy for Layer 7 (L7) features.
4.1. About Istio ambient mode 复制链接链接已复制到粘贴板!
To understand the Istio ambient mode architecture, see the following definitions:
- ZTunnel proxy
- A per-node proxy that manages secure, transparent Transmission Control Protocol (TCP) connections for all workloads on the node. It operates at Layer 4 (L4), offloading mutual Transport Layer Security (mTLS) and L4 policy enforcement from application pods.
- Waypoint proxy
- An optional proxy that runs per service account or namespace to provide advanced Layer 7 (L7) features such as traffic management, policy enforcement, and observability. You can apply L7 features selectively to avoid the overhead of sidecars for every service.
- Istio CNI plugin
- Redirects traffic to the Ztunnel proxy on each node, enabling transparent interception without requiring modifications to application pods.
Istio ambient mode offers the following benefits:
- Simplified operations that remove the need to manage sidecar injection, reducing the complexity of mesh adoption and operations.
-
Reduced resource consumption with a per-node Ztunnel proxy that provides L4 service mesh features and an optional
waypointproxy that reduces resource overhead per pod. Incremental adoption that enables workloads to join the mesh with the L4 features like mutual Transport Layer Security (mTLS) and basic policies with optional
waypointproxies added later to use L7 service mesh features, such as HTTP(L7) traffic management.NoteThe L7 features require deploying
waypointproxies, which introduces minimal additional overhead for the selected services.- Enhanced security that provides a secure, zero-trust network foundation with mTLS by default for all meshed workloads.
Ambient mode is a newer architecture and may involve different operational considerations than traditional sidecar models.
While well-defined discovery selectors allow a service mesh deployed in ambient mode alongside a mesh in sidecar mode, this scenario has not been thoroughly validated. To avoid potential conflicts, install Istio ambient mode only on clusters that do not have an existing Red Hat OpenShift Service Mesh installation. Ambient mode remains a Technology Preview feature.
Istio ambient mode is not compatible with clusters that use Red Hat OpenShift Service Mesh 2.6 or earlier. You must not install or use them together.
4.2. Installing Istio ambient mode 复制链接链接已复制到粘贴板!
You can install Istio ambient mode on OpenShift Container Platform 4.19 or later and Red Hat OpenShift Service Mesh 3.1.0 or later with the required Gateway API custom resource definitions (CRDs).
Prerequisites
- You have deployed a cluster on OpenShift Container Platform 4.19 or later.
- You have installed the OpenShift Service Mesh Operator 3.1.0 or later in the OpenShift Container Platform cluster.
-
You are logged in to the OpenShift Container Platform cluster either through the web console as a user with the
cluster-adminrole, or with theoc logincommand, depending on the installation method. -
You have configured the OVN-Kubernetes Container Network Interface (CNI) to use local gateway mode by setting the
routingViaHostfield astruein thegatewayConfigspecification for the Cluster Network Operator. For more information, see "Configuring gateway mode".
Procedure
Install the Istio control plane:
Create the
istio-systemnamespace by running the following command:oc create namespace istio-system
$ oc create namespace istio-systemCopy to Clipboard Copied! Toggle word wrap Toggle overflow Create an
Istioresource namedistio.yamlsimilar to the following example:Example configuration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ImportantYou must set the
profilefield toambient, and configure the.spec.values.pilot.trustedZtunnelNamespacevalue to match the namespace where theZTunnelresource will be installed.Apply the
Istiocustom resource (CR) by running the following command:oc apply -f istio.yaml
$ oc apply -f istio.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Wait for the Istio control plane to contain the
Readystatus condition by running the following command:oc wait --for=condition=Ready istios/default --timeout=3m
$ oc wait --for=condition=Ready istios/default --timeout=3mCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Install the Istio Container Network Interface (CNI):
Create the
istio-cninamespace by running the following command:oc create namespace istio-cni
$ oc create namespace istio-cniCopy to Clipboard Copied! Toggle word wrap Toggle overflow Create the
IstioCNIresource namedistio-cni.yamlsimilar to the following example:Example configuration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Set the
profilefield toambient.Apply the
IstioCNICR by running the following command:oc apply -f istio-cni.yaml
$ oc apply -f istio-cni.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Wait for the
IstioCNIpods to contain theReadystatus condition by running the following command:oc wait --for=condition=Ready istios/default --timeout=3m
$ oc wait --for=condition=Ready istios/default --timeout=3mCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Install the Ztunnel proxy:
Create the
ztunnelnamespace for Ztunnel proxy by running the following command:oc create namespace ztunnel
$ oc create namespace ztunnelCopy to Clipboard Copied! Toggle word wrap Toggle overflow The namespace name for
ztunnelproject must match thetrustedZtunnelNamespaceparameter in Istio configuration.Create the
Ztunnelresource namedztunnel.yamlsimilar to the following example:Example configuration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Apply the
ZtunnelCR by running the following command:oc apply -f ztunnel.yaml
$ oc apply -f ztunnel.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Wait for the
Ztunnelpods to contain theReadystatus condition by running the following command:oc wait --for=condition=Ready ztunnel/default --timeout=3m
$ oc wait --for=condition=Ready ztunnel/default --timeout=3mCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3. About discovery selectors and Istio ambient mode 复制链接链接已复制到粘贴板!
Istio ambient mode includes workloads when the control plane discovers each workload and the appropriate label enables traffic redirection through the Ztunnel proxy. By default, the control plane discovers workloads in all namespaces across the cluster. As a result, each proxy receives configuration for every namespace, including workloads that are not enrolled in the mesh. In shared or multi-tenant clusters, limiting mesh participation to specific namespaces helps reduce configuration overhead and supports multiple service meshes within the same cluster.
For more information on discovery selectors, see "Scoping the Service Mesh with discovery selectors".
To limit the scope of the OpenShift Service Mesh in Istio ambient mode, you can configure discoverySelectors parameter in the meshConfig section of the Istio resource. The configuration controls which namespaces the control plane discovers based on label selectors.
Prerequisites
- You have deployed a cluster on OpenShift Container Platform 4.19 or later.
-
You have created an
Istiocontrol plane resource. -
You have created an
IstioCNIresource. -
You have created a
Ztunnelresource.
Procedure
Add a label to the namespace containing the
Istiocontrol plane resource, for example, theistio-systemnamespace, by running the following command:oc label namespace istio-system istio-discovery=enabled
$ oc label namespace istio-system istio-discovery=enabledCopy to Clipboard Copied! Toggle word wrap Toggle overflow Add a label to the namespace containing the
IstioCNIresource, for example, theistio-cninamespace, by running the following command:oc label namespace istio-cni istio-discovery=enabled
$ oc label namespace istio-cni istio-discovery=enabledCopy to Clipboard Copied! Toggle word wrap Toggle overflow Add a label to the namespace containing the
Ztunnelresource, for example, theztunnelnamespace, by running the following command:oc label namespace ztunnel istio-discovery=enabled
$ oc label namespace ztunnel istio-discovery=enabledCopy to Clipboard Copied! Toggle word wrap Toggle overflow Modify the
Istiocontrol plane resource to include adiscoverySelectorssection with the same label:Create a YAML file with the name
istio-discovery-selectors.yamlsimilar to the following example:Example configuration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Apply the YAML file to
Istiocontrol plane resource by running the following command:oc apply -f istio-discovery-selectors.yaml
$ oc apply -f istio-discovery-selectors.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
You can deploy the bookinfo sample application in Istio ambient mode without sidecar injection by using the ZTunnel proxy. For more information on bookinfo application, see "About the Bookinfo application".
Prerequisites
- You have deployed a cluster on OpenShift Container Platform 4.15 or later, which includes the supported Kubernetes Gateway API custom resource definitions (CRDs) required for Istio ambient mode.
-
You are logged in to the OpenShift Container Platform cluster either through the web console as a user with the
cluster-adminrole, or with theoc logincommand, depending on the installation method. - You have installed the Red Hat OpenShift Service Mesh Operator, created the Istio resource, and the Operator has deployed Istio.
-
You have created an
IstioCNIresource, and the Operator has deployed the necessaryIstioCNIpods. -
You have created a
Ztunnelresource, and the Operator has deployed the necessaryZtunnelpods.
Procedure
Create the
bookinfonamespace by running the following command:oc create namespace bookinfo
$ oc create namespace bookinfoCopy to Clipboard Copied! Toggle word wrap Toggle overflow Add the
istio-discovery=enabledlabel to thebookinfonamespace by running the following command:oc label namespace bookinfo istio-discovery=enabled
$ oc label namespace bookinfo istio-discovery=enabledCopy to Clipboard Copied! Toggle word wrap Toggle overflow Apply the
bookinfoYAML file to deploy thebookinfoapplication by running the following command:oc apply -n bookinfo -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.26/samples/bookinfo/platform/kube/bookinfo.yaml
$ oc apply -n bookinfo -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.26/samples/bookinfo/platform/kube/bookinfo.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Apply the
bookinfo-versionsYAML file to deploy thebookinfoapplication by running the following command:oc apply -n bookinfo -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.26/samples/bookinfo/platform/kube/bookinfo-versions.yaml
$ oc apply -n bookinfo -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.26/samples/bookinfo/platform/kube/bookinfo-versions.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Verify that the
bookinfopods are running by entering the following command:oc -n bookinfo get pods
$ oc -n bookinfo get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Verify that the
bookinfoapplication is running by entering the following command:oc exec "$(oc get pod -l app=ratings -n bookinfo \ -o jsonpath='{.items[0].metadata.name}')" \ -c ratings -n bookinfo \ -- curl -sS productpage:9080/productpage | grep -o "<title>.*</title>"$ oc exec "$(oc get pod -l app=ratings -n bookinfo \ -o jsonpath='{.items[0].metadata.name}')" \ -c ratings -n bookinfo \ -- curl -sS productpage:9080/productpage | grep -o "<title>.*</title>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow Add the bookinfo application to the Istio ambient mesh by labeling either the entire namespace or the individual pods:
To include all workloads in the bookinfo namespace, apply the
istio.io/dataplane-mode=ambientlabel to thebookinfonamespace, by running the following command:oc label namespace bookinfo istio.io/dataplane-mode=ambient
$ oc label namespace bookinfo istio.io/dataplane-mode=ambientCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
To include only specific workloads, apply the
istio.io/dataplane-mode=ambientlabel directly to individual pods. See the "Additional resources" section for more details on the labels used to add or exclude workloads in a mesh.
NoteAdding workloads to the ambient mesh does not require restarting or redeploying application pods. Unlike sidecar mode, the number of containers in each pod remains unchanged.
Confirm that Ztunnel proxy has successfully opened listening sockets in the pod network namespace by running the following command:
istioctl ztunnel-config workloads --namespace ztunnel
$ istioctl ztunnel-config workloads --namespace ztunnelCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.5. About waypoint proxies in Istio ambient mode 复制链接链接已复制到粘贴板!
After setting up Istio ambient mode with ztunnel proxies, you can add waypoint proxies to enable advanced Layer 7 (L7) processing features that Istio provides.
Istio ambient mode separates the functionality of Istio into two layers:
- A secure Layer 4 (L4) overlay managed by ztunnel proxies
- An L7 layer managed by optional waypoint proxies
A waypoint proxy is an Envoy-based proxy that performs L7 processing for workloads running in ambient mode. It functions as a gateway to a resource such as a namespace, service, or pod. You can install, upgrade, and scale waypoint proxies independently of applications. The configuration uses the Kubernetes Gateway API.
Unlike the sidecar model, where each workload runs its own Envoy proxy, waypoint proxies reduce resource use by serving multiple workloads within the same security boundary, such as all workloads in a namespace.
A destination waypoint enforces policies by acting as a gateway. All incoming traffic to a resource, such as a namespace, service, or pod, passes through the waypoint for policy enforcement.
The ztunnel node proxy manages L4 functions in ambient mode, including mutual Transport Layer Security (mTLS) encryption, L4 traffic processing, and telemetry. Ztunnel and waypoint proxies communicate using HBONE (HTTP-Based Overlay Network), a protocol that tunnels traffic over HTTP/2 CONNECT with mutual TLS (mTLS) on port 15008.
You can add a waypoint proxy if workloads require any of the following L7 capabilities:
- Traffic management
- Advanced HTTP routing, load balancing, circuit breaking, rate limiting, fault injection, retries, and timeouts
- Security
- Authorization policies based on L7 attributes such as request type or HTTP headers
- Observability
- HTTP metrics, access logging, and tracing for application traffic
4.6. Deploying waypoint proxies using gateway API 复制链接链接已复制到粘贴板!
You can deploy waypoint proxies using Kubernetes Gateway resource.
Prerequisites
- You have logged in to the OpenShift Container Platform 4.19 or later, which provides supported Kubernetes Gateway API CRDs required for ambient mode functionality.
- You have the Red Hat OpenShift Service Mesh Operator 3.2.0 or later installed on the OpenShift cluster.
- You have Istio deployed in ambient mode.
-
You have applied the required labels to workloads or namespaces to enable
ztunneltraffic redirection.
Istio ambient mode is not compatible with clusters that use Red Hat OpenShift Service Mesh 2.6 or earlier. You must not deploy both versions in the same cluster.
Procedure
On OpenShift Container Platform 4.18 and earlier, install the community-maintained Kubernetes Gateway API CRDs by running the following command:
oc get crd gateways.gateway.networking.k8s.io &> /dev/null || \ { oc apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.0/standard-install.yaml; }$ oc get crd gateways.gateway.networking.k8s.io &> /dev/null || \ { oc apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.0/standard-install.yaml; }Copy to Clipboard Copied! Toggle word wrap Toggle overflow From OpenShift Container Platform 4.19 onwards, the Gateway API CRDs are installed by default.
The CRDs are community maintained and not supported by Red Hat. Upgrading to OpenShift Container Platform 4.19 or later, which includes supported Gateway API CRDs, may disrupt applications.
4.7. Deploying a waypoint proxy 复制链接链接已复制到粘贴板!
You can deploy a waypoint proxy in the bookinfo application namespace to route traffic through the Istio ambient data plane and enforce L7 policies.
Prerequisites
- You have logged in to the OpenShift Container Platform 4.19 or later, which provides supported Kubernetes Gateway API custom resource definitions (CRDs) required for ambient mode functionality.
- You have the Red Hat OpenShift Service Mesh Operator 3.2.0 or later installed on the OpenShift cluster.
- You have Istio deployed in ambient mode.
-
You have deployed the
bookinfosample application for the following example. -
You have added the
label istio.io/dataplane-mode=ambientto the target namespace.
Procedure
Deploy a waypoint proxy in the
bookinfoapplication namespace similar to the following example:Example configuration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Apply the
waypointcustom resource (CR) by running the following command:oc apply -f waypoint.yaml
$ oc apply -f waypoint.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow The
istio.io/waypoint-for: servicelabel indicates that the waypoint handles traffic for services. The label determines the type of traffic processed. For more information, see "Waypoint traffic types".Enroll the
bookinfonamespace to use the waypoint by running the following command:oc label namespace bookinfo istio.io/use-waypoint=waypoint
$ oc label namespace bookinfo istio.io/use-waypoint=waypointCopy to Clipboard Copied! Toggle word wrap Toggle overflow
After enrolling the namespace, requests from any pods using the ambient data plane to services in bookinfo will route through the waypoint for L7 processing and policy enforcement.
Verification
Confirm that the waypoint proxy is used by all the services in the
bookinfonamespace by running the following command:istioctl ztunnel-config svc --namespace ztunnel
$ istioctl ztunnel-config svc --namespace ztunnelCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
You can also configure only specific services or pods to use a waypoint by labeling the respective service or pod. When enrolling a pod explicitly, also add the istio.io/waypoint-for: workload label to the corresponding gateway resource.
4.8. Enabling cross-namespace waypoint usage 复制链接链接已复制到粘贴板!
You can use a cross-namespace waypoint to allow resources in one namespace to route traffic through a waypoint deployed in a different namespace.
Procedure
Create a
Gatewayresource that allows workloads in thebookinfonamespace to use thewaypoint-defaultfrom thedefaultnamespace similar to the following example:Example configuration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Apply the cross-namespace waypoint by running the following command:
oc apply -f waypoint-default.yaml
$ oc apply -f waypoint-default.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Add the labels required to use a cross-namespace waypoint:
Add the
istio.io/use-waypoint-namespacelabel to specify the namespace where the waypoint resides by running the following command:oc label namespace bookinfo istio.io/use-waypoint-namespace=default
$ oc label namespace bookinfo istio.io/use-waypoint-namespace=defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow Add the
istio.io/use-waypointlabel to specify the waypoint to use by running the following command:oc label namespace bookinfo istio.io/use-waypoint=waypoint-default
$ oc label namespace bookinfo istio.io/use-waypoint=waypoint-defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.9. About Layer 7 features in ambient mode 复制链接链接已复制到粘贴板!
Ambient mode includes stable Layer 7 (L7) capabilities implemented through the Gateway API HTTPRoute resource and the Istio AuthorizationPolicy resource.
The AuthorizationPolicy resource works in both sidecar and ambient modes. In ambient mode, authorization policies can be targeted for ztunnel enforcement or attached for waypoint enforcement. To attach a policy to a waypoint, include a targetRef that references either the waypoint itself or a Service configured to use that waypoint.
You can attach Layer 4 (L4) or L7 policies to the waypoint proxy to ensure correct identity-based enforcement, as the destination ztunnel recognizes traffic by the identity of the waypoint, once it is part of the traffic path.
Istio peer authentication policies, which configure mutual TLS (mTLS) modes, are supported by ztunnel. In ambient mode, policies that set the mode to DISABLE are ignored because ztunnel and HBONE always enforce mTLS. For more information, see "Peer authentication".
4.10. Routing traffic using waypoint proxies 复制链接链接已复制到粘贴板!
You can use a deployed waypoint proxy to split traffic between different versions of the Bookinfo reviews service for feature testing or A/B testing.
Procedure
Create the traffic routing configuration similar to the following example:
Example configuration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Apply the traffic routing configuration by running the following command:
oc apply -f traffic-route.yaml
$ oc apply -f traffic-route.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Verification
Access the
productpageservice from within the ratings pod by running the following command:oc exec "$(oc get pod -l app=ratings -n bookinfo \ -o jsonpath='{.items[0].metadata.name}')" -c ratings -n bookinfo \ -- curl -sS productpage:9080/productpage | grep -om1 'reviews-v[12]'$ oc exec "$(oc get pod -l app=ratings -n bookinfo \ -o jsonpath='{.items[0].metadata.name}')" -c ratings -n bookinfo \ -- curl -sS productpage:9080/productpage | grep -om1 'reviews-v[12]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Most responses (90%) will contain
reviews-v1output, while a smaller portion (10%) will containreviews-v2output.
4.11. Adding authorization policy 复制链接链接已复制到粘贴板!
Use an Layer 7 (L7) authorization policy to explicitly allow the curl service to send GET requests to the productpage service while blocking all other operations.
Procedure
Create the authorization policy similar to the following example:
Example configuration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Apply the authorization policy by running the following command:
oc apply -f authorization-policy.yaml
$ oc apply -f authorization-policy.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
The targetRefs field specifies the service targeted by the authorization policy of the waypoint proxy.
Verification
Deploy the
curlapplication in thedefaultnamespace by running the following command:oc apply -n default -f https://raw.githubusercontent.com/openshift-service-mesh/istio/refs/heads/master/samples/curl/curl.yaml
$ oc apply -n default -f https://raw.githubusercontent.com/openshift-service-mesh/istio/refs/heads/master/samples/curl/curl.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Wait and get the status of the
curldeployment by running the following command:oc -n default rollout status deploy/curl --timeout=3m
$ oc -n default rollout status deploy/curl --timeout=3mCopy to Clipboard Copied! Toggle word wrap Toggle overflow Verify that a
GETrequest to theproductpageservice succeeds with an HTTP 200 response when made from thedefault/curlpod, by running the following command:oc -n default exec deploy/curl -- sh -c \ 'curl -s -o /dev/null -w "HTTP %{http_code}\n" http://productpage.bookinfo.svc.cluster.local:9080/productpage'$ oc -n default exec deploy/curl -- sh -c \ 'curl -s -o /dev/null -w "HTTP %{http_code}\n" http://productpage.bookinfo.svc.cluster.local:9080/productpage'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Verify that a
POSTrequest to the same service is denied with an HTTP 403 response due to the applied authorization policy, by running the following command:oc -n default exec deploy/curl -- sh -c \ 'curl -s -o /dev/null -w "HTTP %{http_code}\n" -X POST http://productpage.bookinfo.svc.cluster.local:9080/productpage'$ oc -n default exec deploy/curl -- sh -c \ 'curl -s -o /dev/null -w "HTTP %{http_code}\n" -X POST http://productpage.bookinfo.svc.cluster.local:9080/productpage'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Verify that a
GETrequest from another service, such as theratingspod in thebookinfonamespace, is also denied withRBAC: access denied, by running the following command:oc exec "$(oc get pod -l app=ratings -n bookinfo \ -o jsonpath='{.items[0].metadata.name}')" \ -c ratings -n bookinfo \ -- curl -sS productpage:9080/productpage$ oc exec "$(oc get pod -l app=ratings -n bookinfo \ -o jsonpath='{.items[0].metadata.name}')" \ -c ratings -n bookinfo \ -- curl -sS productpage:9080/productpageCopy to Clipboard Copied! Toggle word wrap Toggle overflow Delete the
curlapplication to clean up resources by running the following command:oc delete -n default -f https://raw.githubusercontent.com/openshift-service-mesh/istio/refs/heads/master/samples/curl/curl.yaml
$ oc delete -n default -f https://raw.githubusercontent.com/openshift-service-mesh/istio/refs/heads/master/samples/curl/curl.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow