Enable Istio on IEC type2 90/2190/5
authorJingzhao <Jingzhao.Ni@arm.com>
Tue, 14 Jan 2020 10:17:17 +0000 (18:17 +0800)
committerJingzhao <Jingzhao.Ni@arm.com>
Wed, 15 Jan 2020 05:02:23 +0000 (13:02 +0800)
The patch enables the Istio on IEC type2 platform. At the same time, the
official sample--bookinfo--is also deployed for verification.
1. Add Istio configuration files in foundation/scripts/serviceMesh
folder.
2. Write Istio installation scripts
3. Add the Istio official sample--bookinfo--in user_case folder.
4. Add some configuration files about bookinfo.

Signed-off-by: Jingzhao <Jingzhao.Ni@arm.com>
Change-Id: I6e09eaa0d18302df3cff788961e2a9daf220bb92

17 files changed:
src/foundation/scripts/uninstall.sh [changed mode: 0644->0755]
src/foundation/service_mesh/Istio/init/crd-10.yaml [new file with mode: 0644]
src/foundation/service_mesh/Istio/init/crd-11.yaml [new file with mode: 0644]
src/foundation/service_mesh/Istio/init/crd-12.yaml [new file with mode: 0644]
src/foundation/service_mesh/Istio/init/crd-certmanager-10.yaml [new file with mode: 0644]
src/foundation/service_mesh/Istio/init/crd-certmanager-11.yaml [new file with mode: 0644]
src/foundation/service_mesh/Istio/istio-demo-arm64.yaml [new file with mode: 0644]
src/foundation/service_mesh/Istio/istio-inject-configmap-1.1.7.yaml [new file with mode: 0644]
src/foundation/service_mesh/README.md [new file with mode: 0644]
src/foundation/service_mesh/install_Istio.sh [new file with mode: 0755]
src/use_cases/service_mesh/bookinfo/README.md [new file with mode: 0644]
src/use_cases/service_mesh/bookinfo/config/bookinfo-gateway.yaml [new file with mode: 0644]
src/use_cases/service_mesh/bookinfo/config/bookinfo.yaml [new file with mode: 0644]
src/use_cases/service_mesh/bookinfo/config/destination-rule-all.yaml [new file with mode: 0644]
src/use_cases/service_mesh/bookinfo/config/virtual-service-reviews-80-20.yaml [new file with mode: 0644]
src/use_cases/service_mesh/bookinfo/config/virtual-service-reviews-v3.yaml [new file with mode: 0644]
src/use_cases/service_mesh/bookinfo/install/install.sh [new file with mode: 0755]

old mode 100644 (file)
new mode 100755 (executable)
diff --git a/src/foundation/service_mesh/Istio/init/crd-10.yaml b/src/foundation/service_mesh/Istio/init/crd-10.yaml
new file mode 100644 (file)
index 0000000..6e9ad88
--- /dev/null
@@ -0,0 +1,574 @@
+# yamllint disable rule:hyphens rule:commas rule:indentation rule:line-length
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+  name: virtualservices.networking.istio.io
+  labels:
+    app: istio-pilot
+    chart: istio
+    heritage: Tiller
+    release: istio
+  annotations:
+    "helm.sh/resource-policy": keep
+spec:
+  group: networking.istio.io
+  names:
+    kind: VirtualService
+    listKind: VirtualServiceList
+    plural: virtualservices
+    singular: virtualservice
+    shortNames:
+    - vs
+    categories:
+    - istio-io
+    - networking-istio-io
+  scope: Namespaced
+  version: v1alpha3
+  additionalPrinterColumns:
+  - JSONPath: .spec.gateways
+    description: The names of gateways and sidecars that should apply these routes
+    name: Gateways
+    type: string
+  - JSONPath: .spec.hosts
+    description: The destination hosts to which traffic is being sent
+    name: Hosts
+    type: string
+  - JSONPath: .metadata.creationTimestamp
+    description: |-
+      CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.
+
+      Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
+    name: Age
+    type: date
+---
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+  name: destinationrules.networking.istio.io
+  labels:
+    app: istio-pilot
+    chart: istio
+    heritage: Tiller
+    release: istio
+  annotations:
+    "helm.sh/resource-policy": keep
+spec:
+  group: networking.istio.io
+  names:
+    kind: DestinationRule
+    listKind: DestinationRuleList
+    plural: destinationrules
+    singular: destinationrule
+    shortNames:
+    - dr
+    categories:
+    - istio-io
+    - networking-istio-io
+  scope: Namespaced
+  version: v1alpha3
+  additionalPrinterColumns:
+  - JSONPath: .spec.host
+    description: The name of a service from the service registry
+    name: Host
+    type: string
+  - JSONPath: .metadata.creationTimestamp
+    description: |-
+      CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.
+
+      Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
+    name: Age
+    type: date
+---
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+  name: serviceentries.networking.istio.io
+  labels:
+    app: istio-pilot
+    chart: istio
+    heritage: Tiller
+    release: istio
+  annotations:
+    "helm.sh/resource-policy": keep
+spec:
+  group: networking.istio.io
+  names:
+    kind: ServiceEntry
+    listKind: ServiceEntryList
+    plural: serviceentries
+    singular: serviceentry
+    shortNames:
+    - se
+    categories:
+    - istio-io
+    - networking-istio-io
+  scope: Namespaced
+  version: v1alpha3
+  additionalPrinterColumns:
+  - JSONPath: .spec.hosts
+    description: The hosts associated with the ServiceEntry
+    name: Hosts
+    type: string
+  - JSONPath: .spec.location
+    description: Whether the service is external to the mesh or part of the mesh (MESH_EXTERNAL or MESH_INTERNAL)
+    name: Location
+    type: string
+  - JSONPath: .spec.resolution
+    description: Service discovery mode for the hosts (NONE, STATIC, or DNS)
+    name: Resolution
+    type: string
+  - JSONPath: .metadata.creationTimestamp
+    description: |-
+      CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.
+
+      Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
+    name: Age
+    type: date
+---
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+  name: gateways.networking.istio.io
+  labels:
+    app: istio-pilot
+    chart: istio
+    heritage: Tiller
+    release: istio
+  annotations:
+    "helm.sh/resource-policy": keep
+spec:
+  group: networking.istio.io
+  names:
+    kind: Gateway
+    plural: gateways
+    singular: gateway
+    shortNames:
+    - gw
+    categories:
+    - istio-io
+    - networking-istio-io
+  scope: Namespaced
+  version: v1alpha3
+---
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+  name: envoyfilters.networking.istio.io
+  labels:
+    app: istio-pilot
+    chart: istio
+    heritage: Tiller
+    release: istio
+  annotations:
+    "helm.sh/resource-policy": keep
+spec:
+  group: networking.istio.io
+  names:
+    kind: EnvoyFilter
+    plural: envoyfilters
+    singular: envoyfilter
+    categories:
+    - istio-io
+    - networking-istio-io
+  scope: Namespaced
+  version: v1alpha3
+---
+kind: CustomResourceDefinition
+apiVersion: apiextensions.k8s.io/v1beta1
+metadata:
+  name: clusterrbacconfigs.rbac.istio.io
+  labels:
+    app: istio-pilot
+    istio: rbac
+    heritage: Tiller
+    release: istio
+  annotations:
+    "helm.sh/resource-policy": keep
+spec:
+  group: rbac.istio.io
+  names:
+    kind: ClusterRbacConfig
+    plural: clusterrbacconfigs
+    singular: clusterrbacconfig
+    categories:
+    - istio-io
+    - rbac-istio-io
+  scope: Cluster
+  version: v1alpha1
+---
+kind: CustomResourceDefinition
+apiVersion: apiextensions.k8s.io/v1beta1
+metadata:
+  name: policies.authentication.istio.io
+  labels:
+    app: istio-citadel
+    chart: istio
+    heritage: Tiller
+    release: istio
+  annotations:
+    "helm.sh/resource-policy": keep
+spec:
+  group: authentication.istio.io
+  names:
+    kind: Policy
+    plural: policies
+    singular: policy
+    categories:
+    - istio-io
+    - authentication-istio-io
+  scope: Namespaced
+  version: v1alpha1
+---
+kind: CustomResourceDefinition
+apiVersion: apiextensions.k8s.io/v1beta1
+metadata:
+  name: meshpolicies.authentication.istio.io
+  labels:
+    app: istio-citadel
+    chart: istio
+    heritage: Tiller
+    release: istio
+  annotations:
+    "helm.sh/resource-policy": keep
+spec:
+  group: authentication.istio.io
+  names:
+    kind: MeshPolicy
+    listKind: MeshPolicyList
+    plural: meshpolicies
+    singular: meshpolicy
+    categories:
+    - istio-io
+    - authentication-istio-io
+  scope: Cluster
+  version: v1alpha1
+---
+kind: CustomResourceDefinition
+apiVersion: apiextensions.k8s.io/v1beta1
+metadata:
+  name: httpapispecbindings.config.istio.io
+  labels:
+    app: istio-mixer
+    chart: istio
+    heritage: Tiller
+    release: istio
+  annotations:
+    "helm.sh/resource-policy": keep
+spec:
+  group: config.istio.io
+  names:
+    kind: HTTPAPISpecBinding
+    plural: httpapispecbindings
+    singular: httpapispecbinding
+    categories:
+    - istio-io
+    - apim-istio-io
+  scope: Namespaced
+  version: v1alpha2
+---
+kind: CustomResourceDefinition
+apiVersion: apiextensions.k8s.io/v1beta1
+metadata:
+  name: httpapispecs.config.istio.io
+  labels:
+    app: istio-mixer
+    chart: istio
+    heritage: Tiller
+    release: istio
+  annotations:
+    "helm.sh/resource-policy": keep
+spec:
+  group: config.istio.io
+  names:
+    kind: HTTPAPISpec
+    plural: httpapispecs
+    singular: httpapispec
+    categories:
+    - istio-io
+    - apim-istio-io
+  scope: Namespaced
+  version: v1alpha2
+---
+kind: CustomResourceDefinition
+apiVersion: apiextensions.k8s.io/v1beta1
+metadata:
+  name: quotaspecbindings.config.istio.io
+  labels:
+    app: istio-mixer
+    chart: istio
+    heritage: Tiller
+    release: istio
+  annotations:
+    "helm.sh/resource-policy": keep
+spec:
+  group: config.istio.io
+  names:
+    kind: QuotaSpecBinding
+    plural: quotaspecbindings
+    singular: quotaspecbinding
+    categories:
+    - istio-io
+    - apim-istio-io
+  scope: Namespaced
+  version: v1alpha2
+---
+kind: CustomResourceDefinition
+apiVersion: apiextensions.k8s.io/v1beta1
+metadata:
+  name: quotaspecs.config.istio.io
+  labels:
+    app: istio-mixer
+    chart: istio
+    heritage: Tiller
+    release: istio
+  annotations:
+    "helm.sh/resource-policy": keep
+spec:
+  group: config.istio.io
+  names:
+    kind: QuotaSpec
+    plural: quotaspecs
+    singular: quotaspec
+    categories:
+    - istio-io
+    - apim-istio-io
+  scope: Namespaced
+  version: v1alpha2
+---
+kind: CustomResourceDefinition
+apiVersion: apiextensions.k8s.io/v1beta1
+metadata:
+  name: rules.config.istio.io
+  labels:
+    app: mixer
+    package: istio.io.mixer
+    istio: core
+    chart: istio
+    heritage: Tiller
+    release: istio
+  annotations:
+    "helm.sh/resource-policy": keep
+spec:
+  group: config.istio.io
+  names:
+    kind: rule
+    plural: rules
+    singular: rule
+    categories:
+    - istio-io
+    - policy-istio-io
+  scope: Namespaced
+  version: v1alpha2
+---
+kind: CustomResourceDefinition
+apiVersion: apiextensions.k8s.io/v1beta1
+metadata:
+  name: attributemanifests.config.istio.io
+  labels:
+    app: mixer
+    package: istio.io.mixer
+    istio: core
+    chart: istio
+    heritage: Tiller
+    release: istio
+  annotations:
+    "helm.sh/resource-policy": keep
+spec:
+  group: config.istio.io
+  names:
+    kind: attributemanifest
+    plural: attributemanifests
+    singular: attributemanifest
+    categories:
+    - istio-io
+    - policy-istio-io
+  scope: Namespaced
+  version: v1alpha2
+---
+kind: CustomResourceDefinition
+apiVersion: apiextensions.k8s.io/v1beta1
+metadata:
+  name: rbacconfigs.rbac.istio.io
+  labels:
+    app: mixer
+    package: istio.io.mixer
+    istio: rbac
+    chart: istio
+    heritage: Tiller
+    release: istio
+  annotations:
+    "helm.sh/resource-policy": keep
+spec:
+  group: rbac.istio.io
+  names:
+    kind: RbacConfig
+    plural: rbacconfigs
+    singular: rbacconfig
+    categories:
+    - istio-io
+    - rbac-istio-io
+  scope: Namespaced
+  version: v1alpha1
+---
+kind: CustomResourceDefinition
+apiVersion: apiextensions.k8s.io/v1beta1
+metadata:
+  name: serviceroles.rbac.istio.io
+  labels:
+    app: mixer
+    package: istio.io.mixer
+    istio: rbac
+    chart: istio
+    heritage: Tiller
+    release: istio
+  annotations:
+    "helm.sh/resource-policy": keep
+spec:
+  group: rbac.istio.io
+  names:
+    kind: ServiceRole
+    plural: serviceroles
+    singular: servicerole
+    categories:
+    - istio-io
+    - rbac-istio-io
+  scope: Namespaced
+  version: v1alpha1
+---
+kind: CustomResourceDefinition
+apiVersion: apiextensions.k8s.io/v1beta1
+metadata:
+  name: servicerolebindings.rbac.istio.io
+  labels:
+    app: mixer
+    package: istio.io.mixer
+    istio: rbac
+    chart: istio
+    heritage: Tiller
+    release: istio
+  annotations:
+    "helm.sh/resource-policy": keep
+spec:
+  group: rbac.istio.io
+  names:
+    kind: ServiceRoleBinding
+    plural: servicerolebindings
+    singular: servicerolebinding
+    categories:
+    - istio-io
+    - rbac-istio-io
+  scope: Namespaced
+  version: v1alpha1
+  additionalPrinterColumns:
+  - JSONPath: .spec.roleRef.name
+    description: The name of the ServiceRole object being referenced
+    name: Reference
+    type: string
+  - JSONPath: .metadata.creationTimestamp
+    description: |-
+      CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.
+
+      Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
+    name: Age
+    type: date
+---
+kind: CustomResourceDefinition
+apiVersion: apiextensions.k8s.io/v1beta1
+metadata:
+  name: adapters.config.istio.io
+  labels:
+    app: mixer
+    package: adapter
+    istio: mixer-adapter
+    chart: istio
+    heritage: Tiller
+    release: istio
+  annotations:
+    "helm.sh/resource-policy": keep
+spec:
+  group: config.istio.io
+  names:
+    kind: adapter
+    plural: adapters
+    singular: adapter
+    categories:
+    - istio-io
+    - policy-istio-io
+  scope: Namespaced
+  version: v1alpha2
+---
+kind: CustomResourceDefinition
+apiVersion: apiextensions.k8s.io/v1beta1
+metadata:
+  name: instances.config.istio.io
+  labels:
+    app: mixer
+    package: instance
+    istio: mixer-instance
+    chart: istio
+    heritage: Tiller
+    release: istio
+  annotations:
+    "helm.sh/resource-policy": keep
+spec:
+  group: config.istio.io
+  names:
+    kind: instance
+    plural: instances
+    singular: instance
+    categories:
+    - istio-io
+    - policy-istio-io
+  scope: Namespaced
+  version: v1alpha2
+---
+kind: CustomResourceDefinition
+apiVersion: apiextensions.k8s.io/v1beta1
+metadata:
+  name: templates.config.istio.io
+  labels:
+    app: mixer
+    package: template
+    istio: mixer-template
+    chart: istio
+    heritage: Tiller
+    release: istio
+  annotations:
+    "helm.sh/resource-policy": keep
+spec:
+  group: config.istio.io
+  names:
+    kind: template
+    plural: templates
+    singular: template
+    categories:
+    - istio-io
+    - policy-istio-io
+  scope: Namespaced
+  version: v1alpha2
+---
+kind: CustomResourceDefinition
+apiVersion: apiextensions.k8s.io/v1beta1
+metadata:
+  name: handlers.config.istio.io
+  labels:
+    app: mixer
+    package: handler
+    istio: mixer-handler
+    chart: istio
+    heritage: Tiller
+    release: istio
+  annotations:
+    "helm.sh/resource-policy": keep
+spec:
+  group: config.istio.io
+  names:
+    kind: handler
+    plural: handlers
+    singular: handler
+    categories:
+    - istio-io
+    - policy-istio-io
+  scope: Namespaced
+  version: v1alpha2
+---
diff --git a/src/foundation/service_mesh/Istio/init/crd-11.yaml b/src/foundation/service_mesh/Istio/init/crd-11.yaml
new file mode 100644 (file)
index 0000000..36b2171
--- /dev/null
@@ -0,0 +1,24 @@
+# yamllint disable rule:hyphens rule:commas rule:indentation rule:line-length
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+  name: sidecars.networking.istio.io
+  labels:
+    app: istio-pilot
+    chart: istio
+    heritage: Tiller
+    release: istio
+  annotations:
+    "helm.sh/resource-policy": keep
+spec:
+  group: networking.istio.io
+  names:
+    kind: Sidecar
+    plural: sidecars
+    singular: sidecar
+    categories:
+    - istio-io
+    - networking-istio-io
+  scope: Namespaced
+  version: v1alpha3
+---
diff --git a/src/foundation/service_mesh/Istio/init/crd-12.yaml b/src/foundation/service_mesh/Istio/init/crd-12.yaml
new file mode 100644 (file)
index 0000000..36e0c8a
--- /dev/null
@@ -0,0 +1,21 @@
+kind: CustomResourceDefinition
+apiVersion: apiextensions.k8s.io/v1beta1
+metadata:
+  name: authorizationpolicies.rbac.istio.io
+  labels:
+    app: istio-pilot
+    istio: rbac
+    heritage: Tiller
+    release: istio
+spec:
+  group: rbac.istio.io
+  names:
+    kind: AuthorizationPolicy
+    plural: authorizationpolicies
+    singular: authorizationpolicy
+    categories:
+      - istio-io
+      - rbac-istio-io
+  scope: Namespaced
+  version: v1alpha1
+---
diff --git a/src/foundation/service_mesh/Istio/init/crd-certmanager-10.yaml b/src/foundation/service_mesh/Istio/init/crd-certmanager-10.yaml
new file mode 100644 (file)
index 0000000..e500822
--- /dev/null
@@ -0,0 +1,83 @@
+# yamllint disable rule:hyphens rule:commas rule:indentation rule:line-length
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+  name: clusterissuers.certmanager.k8s.io
+  labels:
+    app: certmanager
+    chart: certmanager
+    heritage: Tiller
+    release: istio
+  annotations:
+    "helm.sh/resource-policy": keep
+spec:
+  group: certmanager.k8s.io
+  version: v1alpha1
+  names:
+    kind: ClusterIssuer
+    plural: clusterissuers
+  scope: Cluster
+---
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+  name: issuers.certmanager.k8s.io
+  labels:
+    app: certmanager
+    chart: certmanager
+    heritage: Tiller
+    release: istio
+  annotations:
+    "helm.sh/resource-policy": keep
+spec:
+  group: certmanager.k8s.io
+  version: v1alpha1
+  names:
+    kind: Issuer
+    plural: issuers
+  scope: Namespaced
+---
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+  name: certificates.certmanager.k8s.io
+  labels:
+    app: certmanager
+    chart: certmanager
+    heritage: Tiller
+    release: istio
+  annotations:
+    "helm.sh/resource-policy": keep
+spec:
+  additionalPrinterColumns:
+    - JSONPath: .status.conditions[?(@.type=="Ready")].status
+      name: Ready
+      type: string
+    - JSONPath: .spec.secretName
+      name: Secret
+      type: string
+    - JSONPath: .spec.issuerRef.name
+      name: Issuer
+      type: string
+      priority: 1
+    - JSONPath: .status.conditions[?(@.type=="Ready")].message
+      name: Status
+      type: string
+      priority: 1
+    - JSONPath: .metadata.creationTimestamp
+      description: |-
+        CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.
+
+        Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
+      name: Age
+      type: date
+  group: certmanager.k8s.io
+  version: v1alpha1
+  scope: Namespaced
+  names:
+    kind: Certificate
+    plural: certificates
+    shortNames:
+      - cert
+      - certs
+---
diff --git a/src/foundation/service_mesh/Istio/init/crd-certmanager-11.yaml b/src/foundation/service_mesh/Istio/init/crd-certmanager-11.yaml
new file mode 100644 (file)
index 0000000..e60e2f6
--- /dev/null
@@ -0,0 +1,75 @@
+# yamllint disable rule:hyphens rule:commas rule:indentation rule:line-length
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+  name: orders.certmanager.k8s.io
+  labels:
+    app: certmanager
+    chart: certmanager
+    heritage: Tiller
+    release: istio
+  annotations:
+    "helm.sh/resource-policy": keep
+spec:
+  additionalPrinterColumns:
+    - JSONPath: .status.state
+      name: State
+      type: string
+    - JSONPath: .spec.issuerRef.name
+      name: Issuer
+      type: string
+      priority: 1
+    - JSONPath: .status.reason
+      name: Reason
+      type: string
+      priority: 1
+    - JSONPath: .metadata.creationTimestamp
+      description: |-
+        CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.
+
+        Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
+      name: Age
+      type: date
+  group: certmanager.k8s.io
+  version: v1alpha1
+  names:
+    kind: Order
+    plural: orders
+  scope: Namespaced
+---
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+  name: challenges.certmanager.k8s.io
+  labels:
+    app: certmanager
+    chart: certmanager
+    heritage: Tiller
+    release: istio
+  annotations:
+    "helm.sh/resource-policy": keep
+spec:
+  additionalPrinterColumns:
+    - JSONPath: .status.state
+      name: State
+      type: string
+    - JSONPath: .spec.dnsName
+      name: Domain
+      type: string
+    - JSONPath: .status.reason
+      name: Reason
+      type: string
+    - JSONPath: .metadata.creationTimestamp
+      description: |-
+        CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.
+
+        Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
+      name: Age
+      type: date
+  group: certmanager.k8s.io
+  version: v1alpha1
+  names:
+    kind: Challenge
+    plural: challenges
+  scope: Namespaced
+---
diff --git a/src/foundation/service_mesh/Istio/istio-demo-arm64.yaml b/src/foundation/service_mesh/Istio/istio-demo-arm64.yaml
new file mode 100644 (file)
index 0000000..bb1690c
--- /dev/null
@@ -0,0 +1,19760 @@
+apiVersion: v1\r
+kind: Namespace\r
+metadata:\r
+  name: istio-system\r
+  labels:\r
+    istio-injection: disabled\r
+---\r
+apiVersion: apiextensions.k8s.io/v1beta1\r
+kind: CustomResourceDefinition\r
+metadata:\r
+  name: virtualservices.networking.istio.io\r
+  labels:\r
+    app: istio-pilot\r
+    chart: istio\r
+    heritage: Tiller\r
+    release: istio\r
+  annotations:\r
+    "helm.sh/resource-policy": keep\r
+spec:\r
+  group: networking.istio.io\r
+  names:\r
+    kind: VirtualService\r
+    listKind: VirtualServiceList\r
+    plural: virtualservices\r
+    singular: virtualservice\r
+    shortNames:\r
+    - vs\r
+    categories:\r
+    - istio-io\r
+    - networking-istio-io\r
+  scope: Namespaced\r
+  version: v1alpha3\r
+  additionalPrinterColumns:\r
+  - JSONPath: .spec.gateways\r
+    description: The names of gateways and sidecars that should apply these routes\r
+    name: Gateways\r
+    type: string\r
+  - JSONPath: .spec.hosts\r
+    description: The destination hosts to which traffic is being sent\r
+    name: Hosts\r
+    type: string\r
+  - JSONPath: .metadata.creationTimestamp\r
+    description: |-\r
+      CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\r
+\r
+      Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata\r
+    name: Age\r
+    type: date\r
+---\r
+apiVersion: apiextensions.k8s.io/v1beta1\r
+kind: CustomResourceDefinition\r
+metadata:\r
+  name: destinationrules.networking.istio.io\r
+  labels:\r
+    app: istio-pilot\r
+    chart: istio\r
+    heritage: Tiller\r
+    release: istio\r
+  annotations:\r
+    "helm.sh/resource-policy": keep\r
+spec:\r
+  group: networking.istio.io\r
+  names:\r
+    kind: DestinationRule\r
+    listKind: DestinationRuleList\r
+    plural: destinationrules\r
+    singular: destinationrule\r
+    shortNames:\r
+    - dr\r
+    categories:\r
+    - istio-io\r
+    - networking-istio-io\r
+  scope: Namespaced\r
+  version: v1alpha3\r
+  additionalPrinterColumns:\r
+  - JSONPath: .spec.host\r
+    description: The name of a service from the service registry\r
+    name: Host\r
+    type: string\r
+  - JSONPath: .metadata.creationTimestamp\r
+    description: |-\r
+      CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\r
+\r
+      Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata\r
+    name: Age\r
+    type: date\r
+---\r
+apiVersion: apiextensions.k8s.io/v1beta1\r
+kind: CustomResourceDefinition\r
+metadata:\r
+  name: serviceentries.networking.istio.io\r
+  labels:\r
+    app: istio-pilot\r
+    chart: istio\r
+    heritage: Tiller\r
+    release: istio\r
+  annotations:\r
+    "helm.sh/resource-policy": keep\r
+spec:\r
+  group: networking.istio.io\r
+  names:\r
+    kind: ServiceEntry\r
+    listKind: ServiceEntryList\r
+    plural: serviceentries\r
+    singular: serviceentry\r
+    shortNames:\r
+    - se\r
+    categories:\r
+    - istio-io\r
+    - networking-istio-io\r
+  scope: Namespaced\r
+  version: v1alpha3\r
+  additionalPrinterColumns:\r
+  - JSONPath: .spec.hosts\r
+    description: The hosts associated with the ServiceEntry\r
+    name: Hosts\r
+    type: string\r
+  - JSONPath: .spec.location\r
+    description: Whether the service is external to the mesh or part of the mesh (MESH_EXTERNAL or MESH_INTERNAL)\r
+    name: Location\r
+    type: string\r
+  - JSONPath: .spec.resolution\r
+    description: Service discovery mode for the hosts (NONE, STATIC, or DNS)\r
+    name: Resolution\r
+    type: string\r
+  - JSONPath: .metadata.creationTimestamp\r
+    description: |-\r
+      CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\r
+\r
+      Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata\r
+    name: Age\r
+    type: date\r
+---\r
+apiVersion: apiextensions.k8s.io/v1beta1\r
+kind: CustomResourceDefinition\r
+metadata:\r
+  name: gateways.networking.istio.io\r
+  labels:\r
+    app: istio-pilot\r
+    chart: istio\r
+    heritage: Tiller\r
+    release: istio\r
+  annotations:\r
+    "helm.sh/resource-policy": keep\r
+spec:\r
+  group: networking.istio.io\r
+  names:\r
+    kind: Gateway\r
+    plural: gateways\r
+    singular: gateway\r
+    shortNames:\r
+    - gw\r
+    categories:\r
+    - istio-io\r
+    - networking-istio-io\r
+  scope: Namespaced\r
+  version: v1alpha3\r
+---\r
+apiVersion: apiextensions.k8s.io/v1beta1\r
+kind: CustomResourceDefinition\r
+metadata:\r
+  name: envoyfilters.networking.istio.io\r
+  labels:\r
+    app: istio-pilot\r
+    chart: istio\r
+    heritage: Tiller\r
+    release: istio\r
+  annotations:\r
+    "helm.sh/resource-policy": keep\r
+spec:\r
+  group: networking.istio.io\r
+  names:\r
+    kind: EnvoyFilter\r
+    plural: envoyfilters\r
+    singular: envoyfilter\r
+    categories:\r
+    - istio-io\r
+    - networking-istio-io\r
+  scope: Namespaced\r
+  version: v1alpha3\r
+---\r
+kind: CustomResourceDefinition\r
+apiVersion: apiextensions.k8s.io/v1beta1\r
+metadata:\r
+  name: clusterrbacconfigs.rbac.istio.io\r
+  labels:\r
+    app: istio-pilot\r
+    istio: rbac\r
+    heritage: Tiller\r
+    release: istio\r
+  annotations:\r
+    "helm.sh/resource-policy": keep\r
+spec:\r
+  group: rbac.istio.io\r
+  names:\r
+    kind: ClusterRbacConfig\r
+    plural: clusterrbacconfigs\r
+    singular: clusterrbacconfig\r
+    categories:\r
+    - istio-io\r
+    - rbac-istio-io\r
+  scope: Cluster\r
+  version: v1alpha1\r
+---\r
+kind: CustomResourceDefinition\r
+apiVersion: apiextensions.k8s.io/v1beta1\r
+metadata:\r
+  name: policies.authentication.istio.io\r
+  labels:\r
+    app: istio-citadel\r
+    chart: istio\r
+    heritage: Tiller\r
+    release: istio\r
+  annotations:\r
+    "helm.sh/resource-policy": keep\r
+spec:\r
+  group: authentication.istio.io\r
+  names:\r
+    kind: Policy\r
+    plural: policies\r
+    singular: policy\r
+    categories:\r
+    - istio-io\r
+    - authentication-istio-io\r
+  scope: Namespaced\r
+  version: v1alpha1\r
+---\r
+kind: CustomResourceDefinition\r
+apiVersion: apiextensions.k8s.io/v1beta1\r
+metadata:\r
+  name: meshpolicies.authentication.istio.io\r
+  labels:\r
+    app: istio-citadel\r
+    chart: istio\r
+    heritage: Tiller\r
+    release: istio\r
+  annotations:\r
+    "helm.sh/resource-policy": keep\r
+spec:\r
+  group: authentication.istio.io\r
+  names:\r
+    kind: MeshPolicy\r
+    listKind: MeshPolicyList\r
+    plural: meshpolicies\r
+    singular: meshpolicy\r
+    categories:\r
+    - istio-io\r
+    - authentication-istio-io\r
+  scope: Cluster\r
+  version: v1alpha1\r
+---\r
+kind: CustomResourceDefinition\r
+apiVersion: apiextensions.k8s.io/v1beta1\r
+metadata:\r
+  name: httpapispecbindings.config.istio.io\r
+  labels:\r
+    app: istio-mixer\r
+    chart: istio\r
+    heritage: Tiller\r
+    release: istio\r
+  annotations:\r
+    "helm.sh/resource-policy": keep\r
+spec:\r
+  group: config.istio.io\r
+  names:\r
+    kind: HTTPAPISpecBinding\r
+    plural: httpapispecbindings\r
+    singular: httpapispecbinding\r
+    categories:\r
+    - istio-io\r
+    - apim-istio-io\r
+  scope: Namespaced\r
+  version: v1alpha2\r
+---\r
+kind: CustomResourceDefinition\r
+apiVersion: apiextensions.k8s.io/v1beta1\r
+metadata:\r
+  name: httpapispecs.config.istio.io\r
+  labels:\r
+    app: istio-mixer\r
+    chart: istio\r
+    heritage: Tiller\r
+    release: istio\r
+  annotations:\r
+    "helm.sh/resource-policy": keep\r
+spec:\r
+  group: config.istio.io\r
+  names:\r
+    kind: HTTPAPISpec\r
+    plural: httpapispecs\r
+    singular: httpapispec\r
+    categories:\r
+    - istio-io\r
+    - apim-istio-io\r
+  scope: Namespaced\r
+  version: v1alpha2\r
+---\r
+kind: CustomResourceDefinition\r
+apiVersion: apiextensions.k8s.io/v1beta1\r
+metadata:\r
+  name: quotaspecbindings.config.istio.io\r
+  labels:\r
+    app: istio-mixer\r
+    chart: istio\r
+    heritage: Tiller\r
+    release: istio\r
+  annotations:\r
+    "helm.sh/resource-policy": keep\r
+spec:\r
+  group: config.istio.io\r
+  names:\r
+    kind: QuotaSpecBinding\r
+    plural: quotaspecbindings\r
+    singular: quotaspecbinding\r
+    categories:\r
+    - istio-io\r
+    - apim-istio-io\r
+  scope: Namespaced\r
+  version: v1alpha2\r
+---\r
+kind: CustomResourceDefinition\r
+apiVersion: apiextensions.k8s.io/v1beta1\r
+metadata:\r
+  name: quotaspecs.config.istio.io\r
+  labels:\r
+    app: istio-mixer\r
+    chart: istio\r
+    heritage: Tiller\r
+    release: istio\r
+  annotations:\r
+    "helm.sh/resource-policy": keep\r
+spec:\r
+  group: config.istio.io\r
+  names:\r
+    kind: QuotaSpec\r
+    plural: quotaspecs\r
+    singular: quotaspec\r
+    categories:\r
+    - istio-io\r
+    - apim-istio-io\r
+  scope: Namespaced\r
+  version: v1alpha2\r
+---\r
+kind: CustomResourceDefinition\r
+apiVersion: apiextensions.k8s.io/v1beta1\r
+metadata:\r
+  name: rules.config.istio.io\r
+  labels:\r
+    app: mixer\r
+    package: istio.io.mixer\r
+    istio: core\r
+    chart: istio\r
+    heritage: Tiller\r
+    release: istio\r
+  annotations:\r
+    "helm.sh/resource-policy": keep\r
+spec:\r
+  group: config.istio.io\r
+  names:\r
+    kind: rule\r
+    plural: rules\r
+    singular: rule\r
+    categories:\r
+    - istio-io\r
+    - policy-istio-io\r
+  scope: Namespaced\r
+  version: v1alpha2\r
+---\r
+kind: CustomResourceDefinition\r
+apiVersion: apiextensions.k8s.io/v1beta1\r
+metadata:\r
+  name: attributemanifests.config.istio.io\r
+  labels:\r
+    app: mixer\r
+    package: istio.io.mixer\r
+    istio: core\r
+    chart: istio\r
+    heritage: Tiller\r
+    release: istio\r
+  annotations:\r
+    "helm.sh/resource-policy": keep\r
+spec:\r
+  group: config.istio.io\r
+  names:\r
+    kind: attributemanifest\r
+    plural: attributemanifests\r
+    singular: attributemanifest\r
+    categories:\r
+    - istio-io\r
+    - policy-istio-io\r
+  scope: Namespaced\r
+  version: v1alpha2\r
+---\r
+kind: CustomResourceDefinition\r
+apiVersion: apiextensions.k8s.io/v1beta1\r
+metadata:\r
+  name: rbacconfigs.rbac.istio.io\r
+  labels:\r
+    app: mixer\r
+    package: istio.io.mixer\r
+    istio: rbac\r
+    chart: istio\r
+    heritage: Tiller\r
+    release: istio\r
+  annotations:\r
+    "helm.sh/resource-policy": keep\r
+spec:\r
+  group: rbac.istio.io\r
+  names:\r
+    kind: RbacConfig\r
+    plural: rbacconfigs\r
+    singular: rbacconfig\r
+    categories:\r
+    - istio-io\r
+    - rbac-istio-io\r
+  scope: Namespaced\r
+  version: v1alpha1\r
+---\r
+kind: CustomResourceDefinition\r
+apiVersion: apiextensions.k8s.io/v1beta1\r
+metadata:\r
+  name: serviceroles.rbac.istio.io\r
+  labels:\r
+    app: mixer\r
+    package: istio.io.mixer\r
+    istio: rbac\r
+    chart: istio\r
+    heritage: Tiller\r
+    release: istio\r
+  annotations:\r
+    "helm.sh/resource-policy": keep\r
+spec:\r
+  group: rbac.istio.io\r
+  names:\r
+    kind: ServiceRole\r
+    plural: serviceroles\r
+    singular: servicerole\r
+    categories:\r
+    - istio-io\r
+    - rbac-istio-io\r
+  scope: Namespaced\r
+  version: v1alpha1\r
+---\r
+kind: CustomResourceDefinition\r
+apiVersion: apiextensions.k8s.io/v1beta1\r
+metadata:\r
+  name: servicerolebindings.rbac.istio.io\r
+  labels:\r
+    app: mixer\r
+    package: istio.io.mixer\r
+    istio: rbac\r
+    chart: istio\r
+    heritage: Tiller\r
+    release: istio\r
+  annotations:\r
+    "helm.sh/resource-policy": keep\r
+spec:\r
+  group: rbac.istio.io\r
+  names:\r
+    kind: ServiceRoleBinding\r
+    plural: servicerolebindings\r
+    singular: servicerolebinding\r
+    categories:\r
+    - istio-io\r
+    - rbac-istio-io\r
+  scope: Namespaced\r
+  version: v1alpha1\r
+  additionalPrinterColumns:\r
+  - JSONPath: .spec.roleRef.name\r
+    description: The name of the ServiceRole object being referenced\r
+    name: Reference\r
+    type: string\r
+  - JSONPath: .metadata.creationTimestamp\r
+    description: |-\r
+      CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\r
+\r
+      Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata\r
+    name: Age\r
+    type: date\r
+---\r
+kind: CustomResourceDefinition\r
+apiVersion: apiextensions.k8s.io/v1beta1\r
+metadata:\r
+  name: adapters.config.istio.io\r
+  labels:\r
+    app: mixer\r
+    package: adapter\r
+    istio: mixer-adapter\r
+    chart: istio\r
+    heritage: Tiller\r
+    release: istio\r
+  annotations:\r
+    "helm.sh/resource-policy": keep\r
+spec:\r
+  group: config.istio.io\r
+  names:\r
+    kind: adapter\r
+    plural: adapters\r
+    singular: adapter\r
+    categories:\r
+    - istio-io\r
+    - policy-istio-io\r
+  scope: Namespaced\r
+  version: v1alpha2\r
+---\r
+kind: CustomResourceDefinition\r
+apiVersion: apiextensions.k8s.io/v1beta1\r
+metadata:\r
+  name: instances.config.istio.io\r
+  labels:\r
+    app: mixer\r
+    package: instance\r
+    istio: mixer-instance\r
+    chart: istio\r
+    heritage: Tiller\r
+    release: istio\r
+  annotations:\r
+    "helm.sh/resource-policy": keep\r
+spec:\r
+  group: config.istio.io\r
+  names:\r
+    kind: instance\r
+    plural: instances\r
+    singular: instance\r
+    categories:\r
+    - istio-io\r
+    - policy-istio-io\r
+  scope: Namespaced\r
+  version: v1alpha2\r
+---\r
+kind: CustomResourceDefinition\r
+apiVersion: apiextensions.k8s.io/v1beta1\r
+metadata:\r
+  name: templates.config.istio.io\r
+  labels:\r
+    app: mixer\r
+    package: template\r
+    istio: mixer-template\r
+    chart: istio\r
+    heritage: Tiller\r
+    release: istio\r
+  annotations:\r
+    "helm.sh/resource-policy": keep\r
+spec:\r
+  group: config.istio.io\r
+  names:\r
+    kind: template\r
+    plural: templates\r
+    singular: template\r
+    categories:\r
+    - istio-io\r
+    - policy-istio-io\r
+  scope: Namespaced\r
+  version: v1alpha2\r
+---\r
+kind: CustomResourceDefinition\r
+apiVersion: apiextensions.k8s.io/v1beta1\r
+metadata:\r
+  name: handlers.config.istio.io\r
+  labels:\r
+    app: mixer\r
+    package: handler\r
+    istio: mixer-handler\r
+    chart: istio\r
+    heritage: Tiller\r
+    release: istio\r
+  annotations:\r
+    "helm.sh/resource-policy": keep\r
+spec:\r
+  group: config.istio.io\r
+  names:\r
+    kind: handler\r
+    plural: handlers\r
+    singular: handler\r
+    categories:\r
+    - istio-io\r
+    - policy-istio-io\r
+  scope: Namespaced\r
+  version: v1alpha2\r
+---\r
+apiVersion: apiextensions.k8s.io/v1beta1\r
+kind: CustomResourceDefinition\r
+metadata:\r
+  name: sidecars.networking.istio.io\r
+  labels:\r
+    app: istio-pilot\r
+    chart: istio\r
+    heritage: Tiller\r
+    release: istio\r
+  annotations:\r
+    "helm.sh/resource-policy": keep\r
+spec:\r
+  group: networking.istio.io\r
+  names:\r
+    kind: Sidecar\r
+    plural: sidecars\r
+    singular: sidecar\r
+    categories:\r
+    - istio-io\r
+    - networking-istio-io\r
+  scope: Namespaced\r
+  version: v1alpha3\r
+---\r
+kind: CustomResourceDefinition\r
+apiVersion: apiextensions.k8s.io/v1beta1\r
+metadata:\r
+  name: authorizationpolicies.rbac.istio.io\r
+  labels:\r
+    app: istio-pilot\r
+    istio: rbac\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  group: rbac.istio.io\r
+  names:\r
+    kind: AuthorizationPolicy\r
+    plural: authorizationpolicies\r
+    singular: authorizationpolicy\r
+    categories:\r
+      - istio-io\r
+      - rbac-istio-io\r
+  scope: Namespaced\r
+  version: v1alpha1\r
+---\r
+apiVersion: apiextensions.k8s.io/v1beta1\r
+kind: CustomResourceDefinition\r
+metadata:\r
+  name: clusterissuers.certmanager.k8s.io\r
+  labels:\r
+    app: certmanager\r
+    chart: certmanager\r
+    heritage: Tiller\r
+    release: istio\r
+  annotations:\r
+    "helm.sh/resource-policy": keep\r
+spec:\r
+  group: certmanager.k8s.io\r
+  version: v1alpha1\r
+  names:\r
+    kind: ClusterIssuer\r
+    plural: clusterissuers\r
+  scope: Cluster\r
+---\r
+apiVersion: apiextensions.k8s.io/v1beta1\r
+kind: CustomResourceDefinition\r
+metadata:\r
+  name: issuers.certmanager.k8s.io\r
+  labels:\r
+    app: certmanager\r
+    chart: certmanager\r
+    heritage: Tiller\r
+    release: istio\r
+  annotations:\r
+    "helm.sh/resource-policy": keep\r
+spec:\r
+  group: certmanager.k8s.io\r
+  version: v1alpha1\r
+  names:\r
+    kind: Issuer\r
+    plural: issuers\r
+  scope: Namespaced\r
+---\r
+apiVersion: apiextensions.k8s.io/v1beta1\r
+kind: CustomResourceDefinition\r
+metadata:\r
+  name: certificates.certmanager.k8s.io\r
+  labels:\r
+    app: certmanager\r
+    chart: certmanager\r
+    heritage: Tiller\r
+    release: istio\r
+  annotations:\r
+    "helm.sh/resource-policy": keep\r
+spec:\r
+  additionalPrinterColumns:\r
+    - JSONPath: .status.conditions[?(@.type=="Ready")].status\r
+      name: Ready\r
+      type: string\r
+    - JSONPath: .spec.secretName\r
+      name: Secret\r
+      type: string\r
+    - JSONPath: .spec.issuerRef.name\r
+      name: Issuer\r
+      type: string\r
+      priority: 1\r
+    - JSONPath: .status.conditions[?(@.type=="Ready")].message\r
+      name: Status\r
+      type: string\r
+      priority: 1\r
+    - JSONPath: .metadata.creationTimestamp\r
+      description: |-\r
+        CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\r
+\r
+        Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata\r
+      name: Age\r
+      type: date\r
+  group: certmanager.k8s.io\r
+  version: v1alpha1\r
+  scope: Namespaced\r
+  names:\r
+    kind: Certificate\r
+    plural: certificates\r
+    shortNames:\r
+      - cert\r
+      - certs\r
+---\r
+apiVersion: apiextensions.k8s.io/v1beta1\r
+kind: CustomResourceDefinition\r
+metadata:\r
+  name: orders.certmanager.k8s.io\r
+  labels:\r
+    app: certmanager\r
+    chart: certmanager\r
+    heritage: Tiller\r
+    release: istio\r
+  annotations:\r
+    "helm.sh/resource-policy": keep\r
+spec:\r
+  additionalPrinterColumns:\r
+    - JSONPath: .status.state\r
+      name: State\r
+      type: string\r
+    - JSONPath: .spec.issuerRef.name\r
+      name: Issuer\r
+      type: string\r
+      priority: 1\r
+    - JSONPath: .status.reason\r
+      name: Reason\r
+      type: string\r
+      priority: 1\r
+    - JSONPath: .metadata.creationTimestamp\r
+      description: |-\r
+        CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\r
+\r
+        Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata\r
+      name: Age\r
+      type: date\r
+  group: certmanager.k8s.io\r
+  version: v1alpha1\r
+  names:\r
+    kind: Order\r
+    plural: orders\r
+  scope: Namespaced\r
+---\r
+apiVersion: apiextensions.k8s.io/v1beta1\r
+kind: CustomResourceDefinition\r
+metadata:\r
+  name: challenges.certmanager.k8s.io\r
+  labels:\r
+    app: certmanager\r
+    chart: certmanager\r
+    heritage: Tiller\r
+    release: istio\r
+  annotations:\r
+    "helm.sh/resource-policy": keep\r
+spec:\r
+  additionalPrinterColumns:\r
+    - JSONPath: .status.state\r
+      name: State\r
+      type: string\r
+    - JSONPath: .spec.dnsName\r
+      name: Domain\r
+      type: string\r
+    - JSONPath: .status.reason\r
+      name: Reason\r
+      type: string\r
+    - JSONPath: .metadata.creationTimestamp\r
+      description: |-\r
+        CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\r
+\r
+        Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata\r
+      name: Age\r
+      type: date\r
+  group: certmanager.k8s.io\r
+  version: v1alpha1\r
+  names:\r
+    kind: Challenge\r
+    plural: challenges\r
+  scope: Namespaced\r
+---\r
+---\r
+# Source: istio/charts/kiali/templates/demosecret.yaml\r
+\r
+apiVersion: v1\r
+kind: Secret\r
+metadata:\r
+  name: kiali\r
+  namespace: istio-system\r
+  labels:\r
+    app: kiali\r
+    chart: kiali\r
+    heritage: Tiller\r
+    release: istio\r
+type: Opaque\r
+data:\r
+  username: YWRtaW4=   # admin\r
+  passphrase: YWRtaW4= # admin\r
+\r
+---\r
+# Source: istio/charts/galley/templates/configmap.yaml\r
+apiVersion: v1\r
+kind: ConfigMap\r
+metadata:\r
+  name: istio-galley-configuration\r
+  namespace: istio-system\r
+  labels:\r
+    app: galley\r
+    chart: galley\r
+    heritage: Tiller\r
+    release: istio\r
+    istio: galley\r
+data:\r
+  validatingwebhookconfiguration.yaml: |-    \r
+    apiVersion: admissionregistration.k8s.io/v1beta1\r
+    kind: ValidatingWebhookConfiguration\r
+    metadata:\r
+      name: istio-galley\r
+      labels:\r
+        app: galley\r
+        chart: galley\r
+        heritage: Tiller\r
+        release: istio\r
+        istio: galley\r
+    webhooks:\r
+      - name: pilot.validation.istio.io\r
+        clientConfig:\r
+          service:\r
+            name: istio-galley\r
+            namespace: istio-system\r
+            path: "/admitpilot"\r
+          caBundle: ""\r
+        rules:\r
+          - operations:\r
+            - CREATE\r
+            - UPDATE\r
+            apiGroups:\r
+            - config.istio.io\r
+            apiVersions:\r
+            - v1alpha2\r
+            resources:\r
+            - httpapispecs\r
+            - httpapispecbindings\r
+            - quotaspecs\r
+            - quotaspecbindings\r
+          - operations:\r
+            - CREATE\r
+            - UPDATE\r
+            apiGroups:\r
+            - rbac.istio.io\r
+            apiVersions:\r
+            - "*"\r
+            resources:\r
+            - "*"\r
+          - operations:\r
+            - CREATE\r
+            - UPDATE\r
+            apiGroups:\r
+            - authentication.istio.io\r
+            apiVersions:\r
+            - "*"\r
+            resources:\r
+            - "*"\r
+          - operations:\r
+            - CREATE\r
+            - UPDATE\r
+            apiGroups:\r
+            - networking.istio.io\r
+            apiVersions:\r
+            - "*"\r
+            resources:\r
+            - destinationrules\r
+            - envoyfilters\r
+            - gateways\r
+            - serviceentries\r
+            - sidecars\r
+            - virtualservices\r
+        failurePolicy: Fail\r
+        sideEffects: None\r
+      - name: mixer.validation.istio.io\r
+        clientConfig:\r
+          service:\r
+            name: istio-galley\r
+            namespace: istio-system\r
+            path: "/admitmixer"\r
+          caBundle: ""\r
+        rules:\r
+          - operations:\r
+            - CREATE\r
+            - UPDATE\r
+            apiGroups:\r
+            - config.istio.io\r
+            apiVersions:\r
+            - v1alpha2\r
+            resources:\r
+            - rules\r
+            - attributemanifests\r
+            - circonuses\r
+            - deniers\r
+            - fluentds\r
+            - kubernetesenvs\r
+            - listcheckers\r
+            - memquotas\r
+            - noops\r
+            - opas\r
+            - prometheuses\r
+            - rbacs\r
+            - solarwindses\r
+            - stackdrivers\r
+            - cloudwatches\r
+            - dogstatsds\r
+            - statsds\r
+            - stdios\r
+            - apikeys\r
+            - authorizations\r
+            - checknothings\r
+            # - kuberneteses\r
+            - listentries\r
+            - logentries\r
+            - metrics\r
+            - quotas\r
+            - reportnothings\r
+            - tracespans\r
+            - adapters\r
+            - handlers\r
+            - instances\r
+            - templates\r
+            - zipkins\r
+        failurePolicy: Fail\r
+        sideEffects: None\r
+---\r
+# Source: istio/charts/grafana/templates/configmap-custom-resources.yaml\r
+apiVersion: v1\r
+kind: ConfigMap\r
+metadata:\r
+  name: istio-grafana-custom-resources\r
+  namespace: istio-system\r
+  labels:\r
+    app: grafana\r
+    chart: grafana\r
+    heritage: Tiller\r
+    release: istio\r
+    istio: grafana\r
+data:\r
+  custom-resources.yaml: |-    \r
+    apiVersion: authentication.istio.io/v1alpha1\r
+    kind: Policy\r
+    metadata:\r
+      name: grafana-ports-mtls-disabled\r
+      namespace: istio-system\r
+      labels:\r
+        app: grafana\r
+        chart: grafana\r
+        heritage: Tiller\r
+        release: istio\r
+    spec:\r
+      targets:\r
+      - name: grafana\r
+        ports:\r
+        - number: 3000\r
+  run.sh: |-    \r
+    #!/bin/sh\r
+    \r
+    set -x\r
+    \r
+    if [ "$#" -ne "1" ]; then\r
+        echo "first argument should be path to custom resource yaml"\r
+        exit 1\r
+    fi\r
+    \r
+    pathToResourceYAML=${1}\r
+    \r
+    kubectl get validatingwebhookconfiguration istio-galley 2>/dev/null\r
+    if [ "$?" -eq 0 ]; then\r
+        echo "istio-galley validatingwebhookconfiguration found - waiting for istio-galley deployment to be ready"\r
+        while true; do\r
+            kubectl -n istio-system get deployment istio-galley 2>/dev/null\r
+            if [ "$?" -eq 0 ]; then\r
+                break\r
+            fi\r
+            sleep 1\r
+        done\r
+        kubectl -n istio-system rollout status deployment istio-galley\r
+        if [ "$?" -ne 0 ]; then\r
+            echo "istio-galley deployment rollout status check failed"\r
+            exit 1\r
+        fi\r
+        echo "istio-galley deployment ready for configuration validation"\r
+    fi\r
+    sleep 5\r
+    kubectl apply -f ${pathToResourceYAML}\r
+    \r
+\r
+---\r
+# Source: istio/charts/grafana/templates/configmap-dashboards.yaml\r
+\r
+apiVersion: v1\r
+kind: ConfigMap\r
+metadata:\r
+  name: istio-grafana-configuration-dashboards-galley-dashboard\r
+  namespace: istio-system\r
+  labels:\r
+    app: grafana\r
+    chart: grafana\r
+    heritage: Tiller\r
+    release: istio\r
+    istio: grafana\r
+data:\r
+  galley-dashboard.json: '{\r
+  "__inputs": [\r
+    {\r
+      "name": "DS_PROMETHEUS",\r
+      "label": "Prometheus",\r
+      "description": "",\r
+      "type": "datasource",\r
+      "pluginId": "prometheus",\r
+      "pluginName": "Prometheus"\r
+    }\r
+  ],\r
+  "annotations": {\r
+    "list": [\r
+      {\r
+        "builtIn": 1,\r
+        "datasource": "-- Grafana --",\r
+        "enable": true,\r
+        "hide": true,\r
+        "iconColor": "rgba(0, 211, 255, 1)",\r
+        "name": "Annotations & Alerts",\r
+        "type": "dashboard"\r
+      }\r
+    ]\r
+  },\r
+  "editable": false,\r
+  "gnetId": null,\r
+  "graphTooltip": 0,\r
+  "links": [],\r
+  "panels": [\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 5,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 0\r
+      },\r
+      "id": 46,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(istio_build{component=\"galley\"}) by (tag)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ tag }}",\r
+          "refId": "A"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Galley Versions",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "collapsed": false,\r
+      "gridPos": {\r
+        "h": 1,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 5\r
+      },\r
+      "id": 40,\r
+      "panels": [],\r
+      "title": "Resource Usage",\r
+      "type": "row"\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 8,\r
+        "w": 6,\r
+        "x": 0,\r
+        "y": 6\r
+      },\r
+      "id": 36,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "process_virtual_memory_bytes{job=\"galley\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Virtual Memory",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "process_resident_memory_bytes{job=\"galley\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Resident Memory",\r
+          "refId": "B"\r
+        },\r
+        {\r
+          "expr": "go_memstats_heap_sys_bytes{job=\"galley\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "heap sys",\r
+          "refId": "C"\r
+        },\r
+        {\r
+          "expr": "go_memstats_heap_alloc_bytes{job=\"galley\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "heap alloc",\r
+          "refId": "D"\r
+        },\r
+        {\r
+          "expr": "go_memstats_alloc_bytes{job=\"galley\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Alloc",\r
+          "refId": "F"\r
+        },\r
+        {\r
+          "expr": "go_memstats_heap_inuse_bytes{job=\"galley\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Heap in-use",\r
+          "refId": "G"\r
+        },\r
+        {\r
+          "expr": "go_memstats_stack_inuse_bytes{job=\"galley\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Stack in-use",\r
+          "refId": "H"\r
+        },\r
+        {\r
+          "expr": "sum(container_memory_usage_bytes{container_name=~\"galley\", pod_name=~\"istio-galley-.*\"})",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Total (kis)",\r
+          "refId": "E"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Memory",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 8,\r
+        "w": 6,\r
+        "x": 6,\r
+        "y": 6\r
+      },\r
+      "id": 38,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=~\"galley\", pod_name=~\"istio-galley-.*\"}[1m]))",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Total (k8s)",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=~\"galley\", pod_name=~\"istio-galley-.*\"}[1m])) by (container_name)",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "{{ container_name }} (k8s)",\r
+          "refId": "B"\r
+        },\r
+        {\r
+          "expr": "irate(process_cpu_seconds_total{job=\"galley\"}[1m])",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "galley (self-reported)",\r
+          "refId": "C"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "CPU",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 8,\r
+        "w": 6,\r
+        "x": 12,\r
+        "y": 6\r
+      },\r
+      "id": 42,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "process_open_fds{job=\"galley\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Open FDs (galley)",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "container_fs_usage_bytes{container_name=~\"galley\", pod_name=~\"istio-galley-.*\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "{{ container_name }} ",\r
+          "refId": "B"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Disk",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 8,\r
+        "w": 6,\r
+        "x": 18,\r
+        "y": 6\r
+      },\r
+      "id": 44,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "go_goroutines{job=\"galley\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "goroutines_total",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "galley_mcp_source_clients_total",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "clients_total",\r
+          "refId": "B"\r
+        },\r
+        {\r
+          "expr": "go_goroutines{job=\"galley\"}/galley_mcp_source_clients_total",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "avg_goroutines_per_client",\r
+          "refId": "C"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Goroutines",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "collapsed": false,\r
+      "gridPos": {\r
+        "h": 1,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 14\r
+      },\r
+      "id": 10,\r
+      "panels": [],\r
+      "title": "Runtime",\r
+      "type": "row"\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 8,\r
+        "x": 0,\r
+        "y": 15\r
+      },\r
+      "id": 2,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(rate(galley_runtime_strategy_on_change_total[1m])) * 60",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Strategy Change Events",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "sum(rate(galley_runtime_processor_events_processed_total[1m])) * 60",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Processed Events",\r
+          "refId": "B"\r
+        },\r
+        {\r
+          "expr": "sum(rate(galley_runtime_processor_snapshots_published_total[1m])) * 60",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Snapshot Published",\r
+          "refId": "C"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Event Rates",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": "Events/min",\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": "",\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 8,\r
+        "x": 8,\r
+        "y": 15\r
+      },\r
+      "id": 4,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(rate(galley_runtime_strategy_timer_max_time_reached_total[1m])) * 60",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Max Time Reached",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "sum(rate(galley_runtime_strategy_timer_quiesce_reached_total[1m])) * 60",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Quiesce Reached",\r
+          "refId": "B"\r
+        },\r
+        {\r
+          "expr": "sum(rate(galley_runtime_strategy_timer_resets_total[1m])) * 60",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Timer Resets",\r
+          "refId": "C"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Timer Rates",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": "Events/min",\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 8,\r
+        "x": 16,\r
+        "y": 15\r
+      },\r
+      "id": 8,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 3,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": true,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "histogram_quantile(0.50, sum by (le) (galley_runtime_processor_snapshot_events_total_bucket))",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "P50",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.90, sum by (le) (galley_runtime_processor_snapshot_events_total_bucket))",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "P90",\r
+          "refId": "B"\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.95, sum by (le) (galley_runtime_processor_snapshot_events_total_bucket))",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "P95",\r
+          "refId": "C"\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum by (le) (galley_runtime_processor_snapshot_events_total_bucket))",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "P99",\r
+          "refId": "D"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Events Per Snapshot",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 8,\r
+        "x": 8,\r
+        "y": 21\r
+      },\r
+      "id": 6,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum by (typeURL) (galley_runtime_state_type_instances_total)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ typeURL }}",\r
+          "refId": "A"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "State Type Instances",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": "Count",\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "collapsed": false,\r
+      "gridPos": {\r
+        "h": 1,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 27\r
+      },\r
+      "id": 34,\r
+      "panels": [],\r
+      "title": "Validation",\r
+      "type": "row"\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 8,\r
+        "x": 0,\r
+        "y": 28\r
+      },\r
+      "id": 28,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "galley_validation_cert_key_updates{job=\"galley\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Key Updates",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "galley_validation_cert_key_update_errors{job=\"galley\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Key Update Errors: {{ error }}",\r
+          "refId": "B"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Validation Webhook Certificate",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 8,\r
+        "x": 8,\r
+        "y": 28\r
+      },\r
+      "id": 30,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(galley_validation_passed{job=\"galley\"}) by (group, version, resource)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Passed: {{ group }}/{{ version }}/{{resource}}",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "sum(galley_validation_failed{job=\"galley\"}) by (group, version, resource, reason)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Failed: {{ group }}/{{ version }}/{{resource}} ({{ reason}})",\r
+          "refId": "B"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Resource Validation",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 8,\r
+        "x": 16,\r
+        "y": 28\r
+      },\r
+      "id": 32,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(galley_validation_http_error{job=\"galley\"}) by (status)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ status }}",\r
+          "refId": "A"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Validation HTTP Errors",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "collapsed": false,\r
+      "gridPos": {\r
+        "h": 1,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 34\r
+      },\r
+      "id": 12,\r
+      "panels": [],\r
+      "title": "Kubernetes Source",\r
+      "type": "row"\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 8,\r
+        "x": 0,\r
+        "y": 35\r
+      },\r
+      "id": 14,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "rate(galley_source_kube_event_success_total[1m]) * 60",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Success",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "rate(galley_source_kube_event_error_total[1m]) * 60",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Error",\r
+          "refId": "B"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Source Event Rate",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": "Events/min",\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 8,\r
+        "x": 8,\r
+        "y": 35\r
+      },\r
+      "id": 16,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "rate(galley_source_kube_dynamic_converter_success_total[1m]) * 60",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{apiVersion=\"{{apiVersion}}\",group=\"{{group}}\",kind=\"{{kind}}\"}",\r
+          "refId": "A"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Kubernetes Object Conversion Successes",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": "Conversions/min",\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 8,\r
+        "x": 16,\r
+        "y": 35\r
+      },\r
+      "id": 24,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "rate(galley_source_kube_dynamic_converter_failure_total[1m]) * 60",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Error",\r
+          "refId": "A"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Kubernetes Object Conversion Failures",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": "Failures/min",\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "collapsed": false,\r
+      "gridPos": {\r
+        "h": 1,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 41\r
+      },\r
+      "id": 18,\r
+      "panels": [],\r
+      "title": "Mesh Configuration Protocol",\r
+      "type": "row"\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 8,\r
+        "x": 0,\r
+        "y": 42\r
+      },\r
+      "id": 20,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(galley_mcp_source_clients_total)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Clients",\r
+          "refId": "A"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Connected Clients",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 8,\r
+        "x": 8,\r
+        "y": 42\r
+      },\r
+      "id": 22,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum by(collection)(irate(galley_mcp_source_request_acks_total[1m]) * 60)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "",\r
+          "refId": "A"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Request ACKs",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": "ACKs/min",\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 8,\r
+        "x": 16,\r
+        "y": 42\r
+      },\r
+      "id": 26,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "rate(galley_mcp_source_request_nacks_total[1m]) * 60",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "refId": "A"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Request NACKs",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": "NACKs/min",\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    }\r
+  ],\r
+  "refresh": "5s",\r
+  "schemaVersion": 16,\r
+  "style": "dark",\r
+  "tags": [],\r
+  "templating": {\r
+    "list": []\r
+  },\r
+  "time": {\r
+    "from": "now-5m",\r
+    "to": "now"\r
+  },\r
+  "timepicker": {\r
+    "refresh_intervals": [\r
+      "5s",\r
+      "10s",\r
+      "30s",\r
+      "1m",\r
+      "5m",\r
+      "15m",\r
+      "30m",\r
+      "1h",\r
+      "2h",\r
+      "1d"\r
+    ],\r
+    "time_options": [\r
+      "5m",\r
+      "15m",\r
+      "1h",\r
+      "6h",\r
+      "12h",\r
+      "24h",\r
+      "2d",\r
+      "7d",\r
+      "30d"\r
+    ]\r
+  },\r
+  "timezone": "",\r
+  "title": "Istio Galley Dashboard",\r
+  "uid": "TSEY6jLmk",\r
+  "version": 1\r
+}\r
+'\r
+---\r
+apiVersion: v1\r
+kind: ConfigMap\r
+metadata:\r
+  name: istio-grafana-configuration-dashboards-istio-mesh-dashboard\r
+  namespace: istio-system\r
+  labels:\r
+    app: grafana\r
+    chart: grafana\r
+    heritage: Tiller\r
+    release: istio\r
+    istio: grafana\r
+data:\r
+  istio-mesh-dashboard.json: '{\r
+  "__inputs": [\r
+    {\r
+      "name": "DS_PROMETHEUS",\r
+      "label": "Prometheus",\r
+      "description": "",\r
+      "type": "datasource",\r
+      "pluginId": "prometheus",\r
+      "pluginName": "Prometheus"\r
+    }\r
+  ],\r
+  "__requires": [\r
+    {\r
+      "type": "grafana",\r
+      "id": "grafana",\r
+      "name": "Grafana",\r
+      "version": "5.2.3"\r
+    },\r
+    {\r
+      "type": "panel",\r
+      "id": "graph",\r
+      "name": "Graph",\r
+      "version": "5.0.0"\r
+    },\r
+    {\r
+      "type": "datasource",\r
+      "id": "prometheus",\r
+      "name": "Prometheus",\r
+      "version": "5.0.0"\r
+    },\r
+    {\r
+      "type": "panel",\r
+      "id": "singlestat",\r
+      "name": "Singlestat",\r
+      "version": "5.0.0"\r
+    },\r
+    {\r
+      "type": "panel",\r
+      "id": "table",\r
+      "name": "Table",\r
+      "version": "5.0.0"\r
+    },\r
+    {\r
+      "type": "panel",\r
+      "id": "text",\r
+      "name": "Text",\r
+      "version": "5.0.0"\r
+    }\r
+  ],\r
+  "annotations": {\r
+    "list": [\r
+      {\r
+        "builtIn": 1,\r
+        "datasource": "-- Grafana --",\r
+        "enable": true,\r
+        "hide": true,\r
+        "iconColor": "rgba(0, 211, 255, 1)",\r
+        "name": "Annotations & Alerts",\r
+        "type": "dashboard"\r
+      }\r
+    ]\r
+  },\r
+  "editable": false,\r
+  "gnetId": null,\r
+  "graphTooltip": 0,\r
+  "id": null,\r
+  "links": [],\r
+  "panels": [\r
+    {\r
+      "content": "<div>\n  <div style=\"position: absolute; bottom: 0\">\n    <a href=\"https://istio.io\" target=\"_blank\" style=\"font-size: 30px; text-decoration: none; color: inherit\"><img src=\"https://istio.io/img/istio-logo.svg\" style=\"height: 50px\"> Istio</a>\n  </div>\n  <div style=\"position: absolute; bottom: 0; right: 0; font-size: 15px\">\n    Istio is an <a href=\"https://github.com/istio/istio\" target=\"_blank\">open platform</a> that provides a uniform way to connect,\n    <a href=\"https://istio.io/docs/concepts/traffic-management/overview.html\" target=\"_blank\">manage</a>, and \n    <a href=\"https://istio.io/docs/concepts/network-and-auth/auth.html\" target=\"_blank\">secure</a> microservices.\n    <br>\n    Need help? Join the <a href=\"https://istio.io/community/\" target=\"_blank\">Istio community</a>.\n  </div>\n</div>",\r
+      "gridPos": {\r
+        "h": 3,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 0\r
+      },\r
+      "height": "50px",\r
+      "id": 13,\r
+      "links": [],\r
+      "mode": "html",\r
+      "style": {\r
+        "font-size": "18pt"\r
+      },\r
+      "title": "",\r
+      "transparent": true,\r
+      "type": "text"\r
+    },\r
+    {\r
+      "cacheTimeout": null,\r
+      "colorBackground": false,\r
+      "colorValue": false,\r
+      "colors": [\r
+        "rgba(245, 54, 54, 0.9)",\r
+        "rgba(237, 129, 40, 0.89)",\r
+        "rgba(50, 172, 45, 0.97)"\r
+      ],\r
+      "datasource": "Prometheus",\r
+      "format": "ops",\r
+      "gauge": {\r
+        "maxValue": 100,\r
+        "minValue": 0,\r
+        "show": false,\r
+        "thresholdLabels": false,\r
+        "thresholdMarkers": true\r
+      },\r
+      "gridPos": {\r
+        "h": 3,\r
+        "w": 6,\r
+        "x": 0,\r
+        "y": 3\r
+      },\r
+      "id": 20,\r
+      "interval": null,\r
+      "links": [],\r
+      "mappingType": 1,\r
+      "mappingTypes": [\r
+        {\r
+          "name": "value to text",\r
+          "value": 1\r
+        },\r
+        {\r
+          "name": "range to text",\r
+          "value": 2\r
+        }\r
+      ],\r
+      "maxDataPoints": 100,\r
+      "nullPointMode": "connected",\r
+      "nullText": null,\r
+      "postfix": "",\r
+      "postfixFontSize": "50%",\r
+      "prefix": "",\r
+      "prefixFontSize": "50%",\r
+      "rangeMaps": [\r
+        {\r
+          "from": "null",\r
+          "text": "N/A",\r
+          "to": "null"\r
+        }\r
+      ],\r
+      "sparkline": {\r
+        "fillColor": "rgba(31, 118, 189, 0.18)",\r
+        "full": true,\r
+        "lineColor": "rgb(31, 120, 193)",\r
+        "show": true\r
+      },\r
+      "tableColumn": "",\r
+      "targets": [\r
+        {\r
+          "expr": "round(sum(irate(istio_requests_total{reporter=\"destination\"}[1m])), 0.001)",\r
+          "intervalFactor": 1,\r
+          "refId": "A",\r
+          "step": 4\r
+        }\r
+      ],\r
+      "thresholds": "",\r
+      "title": "Global Request Volume",\r
+      "transparent": false,\r
+      "type": "singlestat",\r
+      "valueFontSize": "80%",\r
+      "valueMaps": [\r
+        {\r
+          "op": "=",\r
+          "text": "N/A",\r
+          "value": "null"\r
+        }\r
+      ],\r
+      "valueName": "avg"\r
+    },\r
+    {\r
+      "cacheTimeout": null,\r
+      "colorBackground": false,\r
+      "colorValue": false,\r
+      "colors": [\r
+        "rgba(245, 54, 54, 0.9)",\r
+        "rgba(237, 129, 40, 0.89)",\r
+        "rgba(50, 172, 45, 0.97)"\r
+      ],\r
+      "datasource": "Prometheus",\r
+      "format": "percentunit",\r
+      "gauge": {\r
+        "maxValue": 100,\r
+        "minValue": 80,\r
+        "show": false,\r
+        "thresholdLabels": false,\r
+        "thresholdMarkers": false\r
+      },\r
+      "gridPos": {\r
+        "h": 3,\r
+        "w": 6,\r
+        "x": 6,\r
+        "y": 3\r
+      },\r
+      "id": 21,\r
+      "interval": null,\r
+      "links": [],\r
+      "mappingType": 1,\r
+      "mappingTypes": [\r
+        {\r
+          "name": "value to text",\r
+          "value": 1\r
+        },\r
+        {\r
+          "name": "range to text",\r
+          "value": 2\r
+        }\r
+      ],\r
+      "maxDataPoints": 100,\r
+      "nullPointMode": "connected",\r
+      "nullText": null,\r
+      "postfix": "",\r
+      "postfixFontSize": "50%",\r
+      "prefix": "",\r
+      "prefixFontSize": "50%",\r
+      "rangeMaps": [\r
+        {\r
+          "from": "null",\r
+          "text": "N/A",\r
+          "to": "null"\r
+        }\r
+      ],\r
+      "sparkline": {\r
+        "fillColor": "rgba(31, 118, 189, 0.18)",\r
+        "full": true,\r
+        "lineColor": "rgb(31, 120, 193)",\r
+        "show": true\r
+      },\r
+      "tableColumn": "",\r
+      "targets": [\r
+        {\r
+          "expr": "sum(rate(istio_requests_total{reporter=\"destination\", response_code!~\"5.*\"}[1m])) / sum(rate(istio_requests_total{reporter=\"destination\"}[1m]))",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "refId": "A",\r
+          "step": 4\r
+        }\r
+      ],\r
+      "thresholds": "95, 99, 99.5",\r
+      "title": "Global Success Rate (non-5xx responses)",\r
+      "transparent": false,\r
+      "type": "singlestat",\r
+      "valueFontSize": "80%",\r
+      "valueMaps": [\r
+        {\r
+          "op": "=",\r
+          "text": "N/A",\r
+          "value": "null"\r
+        }\r
+      ],\r
+      "valueName": "avg"\r
+    },\r
+    {\r
+      "cacheTimeout": null,\r
+      "colorBackground": false,\r
+      "colorValue": false,\r
+      "colors": [\r
+        "rgba(245, 54, 54, 0.9)",\r
+        "rgba(237, 129, 40, 0.89)",\r
+        "rgba(50, 172, 45, 0.97)"\r
+      ],\r
+      "datasource": "Prometheus",\r
+      "format": "ops",\r
+      "gauge": {\r
+        "maxValue": 100,\r
+        "minValue": 0,\r
+        "show": false,\r
+        "thresholdLabels": false,\r
+        "thresholdMarkers": true\r
+      },\r
+      "gridPos": {\r
+        "h": 3,\r
+        "w": 6,\r
+        "x": 12,\r
+        "y": 3\r
+      },\r
+      "id": 22,\r
+      "interval": null,\r
+      "links": [],\r
+      "mappingType": 1,\r
+      "mappingTypes": [\r
+        {\r
+          "name": "value to text",\r
+          "value": 1\r
+        },\r
+        {\r
+          "name": "range to text",\r
+          "value": 2\r
+        }\r
+      ],\r
+      "maxDataPoints": 100,\r
+      "nullPointMode": "connected",\r
+      "nullText": null,\r
+      "postfix": "",\r
+      "postfixFontSize": "50%",\r
+      "prefix": "",\r
+      "prefixFontSize": "50%",\r
+      "rangeMaps": [\r
+        {\r
+          "from": "null",\r
+          "text": "N/A",\r
+          "to": "null"\r
+        }\r
+      ],\r
+      "sparkline": {\r
+        "fillColor": "rgba(31, 118, 189, 0.18)",\r
+        "full": true,\r
+        "lineColor": "rgb(31, 120, 193)",\r
+        "show": true\r
+      },\r
+      "tableColumn": "",\r
+      "targets": [\r
+        {\r
+          "expr": "sum(irate(istio_requests_total{reporter=\"destination\", response_code=~\"4.*\"}[1m])) ",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "refId": "A",\r
+          "step": 4\r
+        }\r
+      ],\r
+      "thresholds": "",\r
+      "title": "4xxs",\r
+      "transparent": false,\r
+      "type": "singlestat",\r
+      "valueFontSize": "80%",\r
+      "valueMaps": [\r
+        {\r
+          "op": "=",\r
+          "text": "N/A",\r
+          "value": "null"\r
+        }\r
+      ],\r
+      "valueName": "avg"\r
+    },\r
+    {\r
+      "cacheTimeout": null,\r
+      "colorBackground": false,\r
+      "colorValue": false,\r
+      "colors": [\r
+        "rgba(245, 54, 54, 0.9)",\r
+        "rgba(237, 129, 40, 0.89)",\r
+        "rgba(50, 172, 45, 0.97)"\r
+      ],\r
+      "datasource": "Prometheus",\r
+      "format": "ops",\r
+      "gauge": {\r
+        "maxValue": 100,\r
+        "minValue": 0,\r
+        "show": false,\r
+        "thresholdLabels": false,\r
+        "thresholdMarkers": true\r
+      },\r
+      "gridPos": {\r
+        "h": 3,\r
+        "w": 6,\r
+        "x": 18,\r
+        "y": 3\r
+      },\r
+      "id": 23,\r
+      "interval": null,\r
+      "links": [],\r
+      "mappingType": 1,\r
+      "mappingTypes": [\r
+        {\r
+          "name": "value to text",\r
+          "value": 1\r
+        },\r
+        {\r
+          "name": "range to text",\r
+          "value": 2\r
+        }\r
+      ],\r
+      "maxDataPoints": 100,\r
+      "nullPointMode": "connected",\r
+      "nullText": null,\r
+      "postfix": "",\r
+      "postfixFontSize": "50%",\r
+      "prefix": "",\r
+      "prefixFontSize": "50%",\r
+      "rangeMaps": [\r
+        {\r
+          "from": "null",\r
+          "text": "N/A",\r
+          "to": "null"\r
+        }\r
+      ],\r
+      "sparkline": {\r
+        "fillColor": "rgba(31, 118, 189, 0.18)",\r
+        "full": true,\r
+        "lineColor": "rgb(31, 120, 193)",\r
+        "show": true\r
+      },\r
+      "tableColumn": "",\r
+      "targets": [\r
+        {\r
+          "expr": "sum(irate(istio_requests_total{reporter=\"destination\", response_code=~\"5.*\"}[1m])) ",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "refId": "A",\r
+          "step": 4\r
+        }\r
+      ],\r
+      "thresholds": "",\r
+      "title": "5xxs",\r
+      "transparent": false,\r
+      "type": "singlestat",\r
+      "valueFontSize": "80%",\r
+      "valueMaps": [\r
+        {\r
+          "op": "=",\r
+          "text": "N/A",\r
+          "value": "null"\r
+        }\r
+      ],\r
+      "valueName": "avg"\r
+    },\r
+    {\r
+      "columns": [],\r
+      "datasource": "Prometheus",\r
+      "fontSize": "100%",\r
+      "gridPos": {\r
+        "h": 21,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 6\r
+      },\r
+      "hideTimeOverride": false,\r
+      "id": 73,\r
+      "links": [],\r
+      "pageSize": null,\r
+      "repeat": null,\r
+      "repeatDirection": "v",\r
+      "scroll": true,\r
+      "showHeader": true,\r
+      "sort": {\r
+        "col": 4,\r
+        "desc": true\r
+      },\r
+      "styles": [\r
+        {\r
+          "alias": "Workload",\r
+          "colorMode": null,\r
+          "colors": [\r
+            "rgba(245, 54, 54, 0.9)",\r
+            "rgba(237, 129, 40, 0.89)",\r
+            "rgba(50, 172, 45, 0.97)"\r
+          ],\r
+          "dateFormat": "YYYY-MM-DD HH:mm:ss",\r
+          "decimals": 2,\r
+          "link": false,\r
+          "linkTargetBlank": false,\r
+          "linkTooltip": "Workload dashboard",\r
+          "linkUrl": "/dashboard/db/istio-workload-dashboard?var-namespace=$__cell_2&var-workload=$__cell_",\r
+          "pattern": "destination_workload",\r
+          "preserveFormat": false,\r
+          "sanitize": false,\r
+          "thresholds": [],\r
+          "type": "hidden",\r
+          "unit": "short"\r
+        },\r
+        {\r
+          "alias": "",\r
+          "colorMode": null,\r
+          "colors": [\r
+            "rgba(245, 54, 54, 0.9)",\r
+            "rgba(237, 129, 40, 0.89)",\r
+            "rgba(50, 172, 45, 0.97)"\r
+          ],\r
+          "dateFormat": "YYYY-MM-DD HH:mm:ss",\r
+          "decimals": 2,\r
+          "pattern": "Time",\r
+          "thresholds": [],\r
+          "type": "hidden",\r
+          "unit": "short"\r
+        },\r
+        {\r
+          "alias": "Requests",\r
+          "colorMode": null,\r
+          "colors": [\r
+            "rgba(245, 54, 54, 0.9)",\r
+            "rgba(237, 129, 40, 0.89)",\r
+            "rgba(50, 172, 45, 0.97)"\r
+          ],\r
+          "dateFormat": "YYYY-MM-DD HH:mm:ss",\r
+          "decimals": 2,\r
+          "pattern": "Value #A",\r
+          "thresholds": [],\r
+          "type": "number",\r
+          "unit": "ops"\r
+        },\r
+        {\r
+          "alias": "P50 Latency",\r
+          "colorMode": null,\r
+          "colors": [\r
+            "rgba(245, 54, 54, 0.9)",\r
+            "rgba(237, 129, 40, 0.89)",\r
+            "rgba(50, 172, 45, 0.97)"\r
+          ],\r
+          "dateFormat": "YYYY-MM-DD HH:mm:ss",\r
+          "decimals": 2,\r
+          "pattern": "Value #B",\r
+          "thresholds": [],\r
+          "type": "number",\r
+          "unit": "s"\r
+        },\r
+        {\r
+          "alias": "P90 Latency",\r
+          "colorMode": null,\r
+          "colors": [\r
+            "rgba(245, 54, 54, 0.9)",\r
+            "rgba(237, 129, 40, 0.89)",\r
+            "rgba(50, 172, 45, 0.97)"\r
+          ],\r
+          "dateFormat": "YYYY-MM-DD HH:mm:ss",\r
+          "decimals": 2,\r
+          "pattern": "Value #D",\r
+          "thresholds": [],\r
+          "type": "number",\r
+          "unit": "s"\r
+        },\r
+        {\r
+          "alias": "P99 Latency",\r
+          "colorMode": null,\r
+          "colors": [\r
+            "rgba(245, 54, 54, 0.9)",\r
+            "rgba(237, 129, 40, 0.89)",\r
+            "rgba(50, 172, 45, 0.97)"\r
+          ],\r
+          "dateFormat": "YYYY-MM-DD HH:mm:ss",\r
+          "decimals": 2,\r
+          "pattern": "Value #E",\r
+          "thresholds": [],\r
+          "type": "number",\r
+          "unit": "s"\r
+        },\r
+        {\r
+          "alias": "Success Rate",\r
+          "colorMode": "cell",\r
+          "colors": [\r
+            "rgba(245, 54, 54, 0.9)",\r
+            "rgba(237, 129, 40, 0.89)",\r
+            "rgba(50, 172, 45, 0.97)"\r
+          ],\r
+          "dateFormat": "YYYY-MM-DD HH:mm:ss",\r
+          "decimals": 2,\r
+          "pattern": "Value #F",\r
+          "thresholds": [\r
+            ".95",\r
+            " 1.00"\r
+          ],\r
+          "type": "number",\r
+          "unit": "percentunit"\r
+        },\r
+        {\r
+          "alias": "Workload",\r
+          "colorMode": null,\r
+          "colors": [\r
+            "rgba(245, 54, 54, 0.9)",\r
+            "rgba(237, 129, 40, 0.89)",\r
+            "rgba(50, 172, 45, 0.97)"\r
+          ],\r
+          "dateFormat": "YYYY-MM-DD HH:mm:ss",\r
+          "decimals": 2,\r
+          "link": true,\r
+          "linkTooltip": "$__cell dashboard",\r
+          "linkUrl": "/dashboard/db/istio-workload-dashboard?var-workload=$__cell_2&var-namespace=$__cell_3",\r
+          "pattern": "destination_workload_var",\r
+          "thresholds": [],\r
+          "type": "number",\r
+          "unit": "short"\r
+        },\r
+        {\r
+          "alias": "Service",\r
+          "colorMode": null,\r
+          "colors": [\r
+            "rgba(245, 54, 54, 0.9)",\r
+            "rgba(237, 129, 40, 0.89)",\r
+            "rgba(50, 172, 45, 0.97)"\r
+          ],\r
+          "dateFormat": "YYYY-MM-DD HH:mm:ss",\r
+          "decimals": 2,\r
+          "link": true,\r
+          "linkTooltip": "$__cell dashboard",\r
+          "linkUrl": "/dashboard/db/istio-service-dashboard?var-service=$__cell",\r
+          "pattern": "destination_service",\r
+          "thresholds": [],\r
+          "type": "string",\r
+          "unit": "short"\r
+        },\r
+        {\r
+          "alias": "",\r
+          "colorMode": null,\r
+          "colors": [\r
+            "rgba(245, 54, 54, 0.9)",\r
+            "rgba(237, 129, 40, 0.89)",\r
+            "rgba(50, 172, 45, 0.97)"\r
+          ],\r
+          "dateFormat": "YYYY-MM-DD HH:mm:ss",\r
+          "decimals": 2,\r
+          "pattern": "destination_workload_namespace",\r
+          "thresholds": [],\r
+          "type": "hidden",\r
+          "unit": "short"\r
+        }\r
+      ],\r
+      "targets": [\r
+        {\r
+          "expr": "label_join(sum(rate(istio_requests_total{reporter=\"destination\", response_code=\"200\"}[1m])) by (destination_workload, destination_workload_namespace, destination_service), \"destination_workload_var\", \".\", \"destination_workload\", \"destination_workload_namespace\")",\r
+          "format": "table",\r
+          "hide": false,\r
+          "instant": true,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload}}.{{ destination_workload_namespace }}",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "label_join(histogram_quantile(0.50, sum(rate(istio_request_duration_seconds_bucket{reporter=\"destination\"}[1m])) by (le, destination_workload, destination_workload_namespace)), \"destination_workload_var\", \".\", \"destination_workload\", \"destination_workload_namespace\")",\r
+          "format": "table",\r
+          "hide": false,\r
+          "instant": true,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload}}.{{ destination_workload_namespace }}",\r
+          "refId": "B"\r
+        },\r
+        {\r
+          "expr": "label_join(histogram_quantile(0.90, sum(rate(istio_request_duration_seconds_bucket{reporter=\"destination\"}[1m])) by (le, destination_workload, destination_workload_namespace)), \"destination_workload_var\", \".\", \"destination_workload\", \"destination_workload_namespace\")",\r
+          "format": "table",\r
+          "hide": false,\r
+          "instant": true,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }}",\r
+          "refId": "D"\r
+        },\r
+        {\r
+          "expr": "label_join(histogram_quantile(0.99, sum(rate(istio_request_duration_seconds_bucket{reporter=\"destination\"}[1m])) by (le, destination_workload, destination_workload_namespace)), \"destination_workload_var\", \".\", \"destination_workload\", \"destination_workload_namespace\")",\r
+          "format": "table",\r
+          "hide": false,\r
+          "instant": true,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }}",\r
+          "refId": "E"\r
+        },\r
+        {\r
+          "expr": "label_join((sum(rate(istio_requests_total{reporter=\"destination\", response_code!~\"5.*\"}[1m])) by (destination_workload, destination_workload_namespace) / sum(rate(istio_requests_total{reporter=\"destination\"}[1m])) by (destination_workload, destination_workload_namespace)), \"destination_workload_var\", \".\", \"destination_workload\", \"destination_workload_namespace\")",\r
+          "format": "table",\r
+          "hide": false,\r
+          "instant": true,\r
+          "interval": "",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }}",\r
+          "refId": "F"\r
+        }\r
+      ],\r
+      "timeFrom": null,\r
+      "title": "HTTP/GRPC Workloads",\r
+      "transform": "table",\r
+      "transparent": false,\r
+      "type": "table"\r
+    },\r
+    {\r
+      "columns": [],\r
+      "datasource": "Prometheus",\r
+      "fontSize": "100%",\r
+      "gridPos": {\r
+        "h": 18,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 27\r
+      },\r
+      "hideTimeOverride": false,\r
+      "id": 109,\r
+      "links": [],\r
+      "pageSize": null,\r
+      "repeatDirection": "v",\r
+      "scroll": true,\r
+      "showHeader": true,\r
+      "sort": {\r
+        "col": 2,\r
+        "desc": true\r
+      },\r
+      "styles": [\r
+        {\r
+          "alias": "Workload",\r
+          "colorMode": null,\r
+          "colors": [\r
+            "rgba(245, 54, 54, 0.9)",\r
+            "rgba(237, 129, 40, 0.89)",\r
+            "rgba(50, 172, 45, 0.97)"\r
+          ],\r
+          "dateFormat": "YYYY-MM-DD HH:mm:ss",\r
+          "decimals": 2,\r
+          "link": false,\r
+          "linkTargetBlank": false,\r
+          "linkTooltip": "$__cell dashboard",\r
+          "linkUrl": "/dashboard/db/istio-tcp-workload-dashboard?var-namespace=$__cell_2&&var-workload=$__cell",\r
+          "pattern": "destination_workload",\r
+          "preserveFormat": false,\r
+          "sanitize": false,\r
+          "thresholds": [],\r
+          "type": "hidden",\r
+          "unit": "short"\r
+        },\r
+        {\r
+          "alias": "Bytes Sent",\r
+          "colorMode": null,\r
+          "colors": [\r
+            "rgba(245, 54, 54, 0.9)",\r
+            "rgba(237, 129, 40, 0.89)",\r
+            "rgba(50, 172, 45, 0.97)"\r
+          ],\r
+          "dateFormat": "YYYY-MM-DD HH:mm:ss",\r
+          "decimals": 2,\r
+          "pattern": "Value #A",\r
+          "thresholds": [\r
+            ""\r
+          ],\r
+          "type": "number",\r
+          "unit": "Bps"\r
+        },\r
+        {\r
+          "alias": "Bytes Received",\r
+          "colorMode": null,\r
+          "colors": [\r
+            "rgba(245, 54, 54, 0.9)",\r
+            "rgba(237, 129, 40, 0.89)",\r
+            "rgba(50, 172, 45, 0.97)"\r
+          ],\r
+          "dateFormat": "YYYY-MM-DD HH:mm:ss",\r
+          "decimals": 2,\r
+          "pattern": "Value #C",\r
+          "thresholds": [],\r
+          "type": "number",\r
+          "unit": "Bps"\r
+        },\r
+        {\r
+          "alias": "",\r
+          "colorMode": null,\r
+          "colors": [\r
+            "rgba(245, 54, 54, 0.9)",\r
+            "rgba(237, 129, 40, 0.89)",\r
+            "rgba(50, 172, 45, 0.97)"\r
+          ],\r
+          "dateFormat": "YYYY-MM-DD HH:mm:ss",\r
+          "decimals": 2,\r
+          "pattern": "Time",\r
+          "thresholds": [],\r
+          "type": "hidden",\r
+          "unit": "short"\r
+        },\r
+        {\r
+          "alias": "Workload",\r
+          "colorMode": null,\r
+          "colors": [\r
+            "rgba(245, 54, 54, 0.9)",\r
+            "rgba(237, 129, 40, 0.89)",\r
+            "rgba(50, 172, 45, 0.97)"\r
+          ],\r
+          "dateFormat": "YYYY-MM-DD HH:mm:ss",\r
+          "decimals": 2,\r
+          "link": true,\r
+          "linkTooltip": "$__cell dashboard",\r
+          "linkUrl": "/dashboard/db/istio-workload-dashboard?var-namespace=$__cell_3&var-workload=$__cell_2",\r
+          "pattern": "destination_workload_var",\r
+          "thresholds": [],\r
+          "type": "string",\r
+          "unit": "short"\r
+        },\r
+        {\r
+          "alias": "",\r
+          "colorMode": null,\r
+          "colors": [\r
+            "rgba(245, 54, 54, 0.9)",\r
+            "rgba(237, 129, 40, 0.89)",\r
+            "rgba(50, 172, 45, 0.97)"\r
+          ],\r
+          "dateFormat": "YYYY-MM-DD HH:mm:ss",\r
+          "decimals": 2,\r
+          "pattern": "destination_workload_namespace",\r
+          "thresholds": [],\r
+          "type": "hidden",\r
+          "unit": "short"\r
+        },\r
+        {\r
+          "alias": "Service",\r
+          "colorMode": null,\r
+          "colors": [\r
+            "rgba(245, 54, 54, 0.9)",\r
+            "rgba(237, 129, 40, 0.89)",\r
+            "rgba(50, 172, 45, 0.97)"\r
+          ],\r
+          "dateFormat": "YYYY-MM-DD HH:mm:ss",\r
+          "decimals": 2,\r
+          "link": true,\r
+          "linkTooltip": "$__cell dashboard",\r
+          "linkUrl": "/dashboard/db/istio-service-dashboard?var-service=$__cell",\r
+          "pattern": "destination_service",\r
+          "thresholds": [],\r
+          "type": "number",\r
+          "unit": "short"\r
+        }\r
+      ],\r
+      "targets": [\r
+        {\r
+          "expr": "label_join(sum(rate(istio_tcp_received_bytes_total{reporter=\"source\"}[1m])) by (destination_workload, destination_workload_namespace, destination_service), \"destination_workload_var\", \".\", \"destination_workload\", \"destination_workload_namespace\")",\r
+          "format": "table",\r
+          "hide": false,\r
+          "instant": true,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}",\r
+          "refId": "C"\r
+        },\r
+        {\r
+          "expr": "label_join(sum(rate(istio_tcp_sent_bytes_total{reporter=\"source\"}[1m])) by (destination_workload, destination_workload_namespace, destination_service), \"destination_workload_var\", \".\", \"destination_workload\", \"destination_workload_namespace\")",\r
+          "format": "table",\r
+          "hide": false,\r
+          "instant": true,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}",\r
+          "refId": "A"\r
+        }\r
+      ],\r
+      "timeFrom": null,\r
+      "title": "TCP Workloads",\r
+      "transform": "table",\r
+      "transparent": false,\r
+      "type": "table"\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 9,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 45\r
+      },\r
+      "id": 111,\r
+      "legend": {\r
+        "alignAsTable": false,\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "rightSide": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(istio_build) by (component, tag)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ component }}: {{ tag }}",\r
+          "refId": "A"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Istio Components by Version",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "transparent": false,\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    }\r
+  ],\r
+  "refresh": "5s",\r
+  "schemaVersion": 16,\r
+  "style": "dark",\r
+  "tags": [],\r
+  "templating": {\r
+    "list": []\r
+  },\r
+  "time": {\r
+    "from": "now-5m",\r
+    "to": "now"\r
+  },\r
+  "timepicker": {\r
+    "refresh_intervals": [\r
+      "5s",\r
+      "10s",\r
+      "30s",\r
+      "1m",\r
+      "5m",\r
+      "15m",\r
+      "30m",\r
+      "1h",\r
+      "2h",\r
+      "1d"\r
+    ],\r
+    "time_options": [\r
+      "5m",\r
+      "15m",\r
+      "1h",\r
+      "6h",\r
+      "12h",\r
+      "24h",\r
+      "2d",\r
+      "7d",\r
+      "30d"\r
+    ]\r
+  },\r
+  "timezone": "browser",\r
+  "title": "Istio Mesh Dashboard",\r
+  "version": 4\r
+}\r
+'\r
+---\r
+apiVersion: v1\r
+kind: ConfigMap\r
+metadata:\r
+  name: istio-grafana-configuration-dashboards-istio-performance-dashboard\r
+  namespace: istio-system\r
+  labels:\r
+    app: grafana\r
+    chart: grafana\r
+    heritage: Tiller\r
+    release: istio\r
+    istio: grafana\r
+data:\r
+  istio-performance-dashboard.json: '{\r
+  "annotations": {\r
+    "list": [\r
+      {\r
+        "builtIn": 1,\r
+        "datasource": "-- Grafana --",\r
+        "enable": true,\r
+        "hide": true,\r
+        "iconColor": "rgba(0, 211, 255, 1)",\r
+        "name": "Annotations & Alerts",\r
+        "type": "dashboard"\r
+      }\r
+    ]\r
+  },\r
+  "editable": false,\r
+  "gnetId": null,\r
+  "graphTooltip": 0,\r
+  "id": 9,\r
+  "links": [],\r
+  "panels": [\r
+    {\r
+      "collapsed": true,\r
+      "gridPos": {\r
+        "h": 1,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 0\r
+      },\r
+      "id": 21,\r
+      "panels": [\r
+        {\r
+          "content": "The charts on this dashboard are intended to show Istio main components cost in terms resources utilization under steady load.\n\n- **vCPU/1k rps:** shows vCPU utilization by the main Istio components normalized by 1000 requests/second. When idle or low traffic, this chart will be blank. The curve for istio-proxy refers to the services sidecars only.\n- **vCPU:** vCPU utilization by Istio components, not normalized.\n- **Memory:** memory footprint for the components. Telemetry and policy are normalized by 1k rps, and no data is shown  when there is no traffic. For ingress and istio-proxy, the data is per instance.\n- **Bytes transferred/ sec:** shows the number of bytes flowing through each Istio component.\n\n\n",\r
+          "gridPos": {\r
+            "h": 6,\r
+            "w": 24,\r
+            "x": 0,\r
+            "y": 1\r
+          },\r
+          "id": 19,\r
+          "links": [],\r
+          "mode": "markdown",\r
+          "timeFrom": null,\r
+          "timeShift": null,\r
+          "title": "Performance Dashboard README",\r
+          "transparent": true,\r
+          "type": "text"\r
+        }\r
+      ],\r
+      "title": "Performance Dashboard Notes",\r
+      "type": "row"\r
+    },\r
+    {\r
+      "collapsed": false,\r
+      "gridPos": {\r
+        "h": 1,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 1\r
+      },\r
+      "id": 6,\r
+      "panels": [],\r
+      "title": "vCPU Usage",\r
+      "type": "row"\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 8,\r
+        "w": 12,\r
+        "x": 0,\r
+        "y": 2\r
+      },\r
+      "id": 4,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 2,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "(sum(irate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",pod_name=~\"istio-telemetry-.*\",container_name=~\"mixer|istio-proxy\"}[1m]))/ (round(sum(irate(istio_requests_total[1m])), 0.001)/1000))/ (sum(irate(istio_requests_total{source_workload=\"istio-ingressgateway\"}[1m])) >bool 10)",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "istio-telemetry",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "(sum(irate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",pod_name=~\"istio-ingressgateway-.*\",container_name=\"istio-proxy\"}[1m])) / (round(sum(irate(istio_requests_total{source_workload=\"istio-ingressgateway\", reporter=\"source\"}[1m])), 0.001)/1000))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "istio-ingressgateway",\r
+          "refId": "B"\r
+        },\r
+        {\r
+          "expr": "(sum(irate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",namespace!=\"istio-system\",container_name=\"istio-proxy\"}[1m]))/ (round(sum(irate(istio_requests_total[1m])), 0.001)/1000))/ (sum(irate(istio_requests_total{source_workload=\"istio-ingressgateway\"}[1m])) >bool 10)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "istio-proxy",\r
+          "refId": "C"\r
+        },\r
+        {\r
+          "expr": "(sum(irate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",pod_name=~\"istio-policy-.*\",container_name=~\"mixer|istio-proxy\"}[1m]))/ (round(sum(irate(istio_requests_total[1m])), 0.001)/1000))/ (sum(irate(istio_requests_total{source_workload=\"istio-ingressgateway\"}[1m])) >bool 10)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "istio-policy",\r
+          "refId": "D"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "vCPU / 1k rps",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 8,\r
+        "w": 12,\r
+        "x": 12,\r
+        "y": 2\r
+      },\r
+      "id": 7,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 2,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",pod_name=~\"istio-telemetry-.*\",container_name=~\"mixer|istio-proxy\"}[1m]))",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "istio-telemetry",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",pod_name=~\"istio-ingressgateway-.*\",container_name=\"istio-proxy\"}[1m]))",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "istio-ingressgateway",\r
+          "refId": "B"\r
+        },\r
+        {\r
+          "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",namespace!=\"istio-system\",container_name=\"istio-proxy\"}[1m]))",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "istio-proxy",\r
+          "refId": "C"\r
+        },\r
+        {\r
+          "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",pod_name=~\"istio-policy-.*\",container_name=~\"mixer|istio-proxy\"}[1m]))",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "istio-policy",\r
+          "refId": "D"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "vCPU",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "collapsed": false,\r
+      "gridPos": {\r
+        "h": 1,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 10\r
+      },\r
+      "id": 13,\r
+      "panels": [],\r
+      "title": "Memory and Data Rates",\r
+      "type": "row"\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 8,\r
+        "w": 12,\r
+        "x": 0,\r
+        "y": 11\r
+      },\r
+      "id": 902,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 2,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "(sum(container_memory_usage_bytes{pod_name=~\"istio-telemetry-.*\"}) / (sum(irate(istio_requests_total[1m])) / 1000)) / (sum(irate(istio_requests_total{source_workload=\"istio-ingressgateway\"}[1m])) >bool 10)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "istio-telemetry / 1k rps",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "sum(container_memory_usage_bytes{pod_name=~\"istio-ingressgateway-.*\"}) / count(container_memory_usage_bytes{pod_name=~\"istio-ingressgateway-.*\",container_name!=\"POD\"})",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "per istio-ingressgateway",\r
+          "refId": "B"\r
+        },\r
+        {\r
+          "expr": "sum(container_memory_usage_bytes{namespace!=\"istio-system\",container_name=\"istio-proxy\"}) / count(container_memory_usage_bytes{namespace!=\"istio-system\",container_name=\"istio-proxy\"})",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "per istio proxy",\r
+          "refId": "C"\r
+        },\r
+        {\r
+          "expr": "(sum(container_memory_usage_bytes{pod_name=~\"istio-policy-.*\"}) / (sum(irate(istio_requests_total[1m])) / 1000))/ (sum(irate(istio_requests_total{source_workload=\"istio-ingressgateway\"}[1m])) >bool 10)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "istio-policy / 1k rps",\r
+          "refId": "D"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Memory Usage",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "bytes",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 8,\r
+        "w": 12,\r
+        "x": 12,\r
+        "y": 11\r
+      },\r
+      "id": 11,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 2,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(irate(istio_response_bytes_sum{destination_workload=\"istio-telemetry\"}[1m])) + sum(irate(istio_request_bytes_sum{destination_workload=\"istio-telemetry\"}[1m]))",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "istio-telemetry",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "sum(irate(istio_response_bytes_sum{source_workload=\"istio-ingressgateway\", reporter=\"source\"}[1m]))",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "istio-ingressgateway",\r
+          "refId": "B"\r
+        },\r
+        {\r
+          "expr": "sum(irate(istio_response_bytes_sum{source_workload_namespace!=\"istio-system\", reporter=\"source\"}[1m])) + sum(irate(istio_response_bytes_sum{destination_workload_namespace!=\"istio-system\", reporter=\"destination\"}[1m])) + sum(irate(istio_request_bytes_sum{source_workload_namespace!=\"istio-system\", reporter=\"source\"}[1m])) + sum(irate(istio_request_bytes_sum{destination_workload_namespace!=\"istio-system\", reporter=\"destination\"}[1m]))",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "istio-proxy",\r
+          "refId": "C"\r
+        },\r
+        {\r
+          "expr": "sum(irate(istio_response_bytes_sum{destination_workload=\"istio-policy\"}[1m])) + sum(irate(istio_request_bytes_sum{destination_workload=\"istio-policy\"}[1m]))",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "istio_policy",\r
+          "refId": "D"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Bytes transferred / sec",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "Bps",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "collapsed": false,\r
+      "gridPos": {\r
+        "h": 1,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 19\r
+      },\r
+      "id": 17,\r
+      "panels": [],\r
+      "title": "Istio Component Versions",\r
+      "type": "row"\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 8,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 20\r
+      },\r
+      "id": 15,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 2,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(istio_build) by (component, tag)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ component }}: {{ tag }}",\r
+          "refId": "A"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Istio Components by Version",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "collapsed": false,\r
+      "gridPos": {\r
+        "h": 1,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 31\r
+      },\r
+      "id": 71,\r
+      "panels": [],\r
+      "title": "Proxy Resource Usage",\r
+      "type": "row"\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 6,\r
+        "x": 0,\r
+        "y": 32\r
+      },\r
+      "id": 72,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(container_memory_usage_bytes{container_name=\"istio-proxy\"})",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "{{ container_name }} (k8s)",\r
+          "refId": "B",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Memory",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "bytes",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 6,\r
+        "x": 6,\r
+        "y": 32\r
+      },\r
+      "id": 73,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=\"istio-proxy\"}[1m]))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Total (k8s)",\r
+          "refId": "A",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "vCPU",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 6,\r
+        "x": 12,\r
+        "y": 32\r
+      },\r
+      "id": 702,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(container_fs_usage_bytes{container_name=\"istio-proxy\"})",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "{{ container_name }}",\r
+          "refId": "B",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Disk",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "bytes",\r
+          "label": "",\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "decimals": null,\r
+          "format": "none",\r
+          "label": "",\r
+          "logBase": 1024,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "collapsed": false,\r
+      "gridPos": {\r
+        "h": 1,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 39\r
+      },\r
+      "id": 69,\r
+      "panels": [],\r
+      "title": "Pilot Resource Usage",\r
+      "type": "row"\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 6,\r
+        "x": 0,\r
+        "y": 40\r
+      },\r
+      "id": 5,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "process_virtual_memory_bytes{job=\"pilot\"}",\r
+          "format": "time_series",\r
+          "instant": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Virtual Memory",\r
+          "refId": "I",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "process_resident_memory_bytes{job=\"pilot\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Resident Memory",\r
+          "refId": "H",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "go_memstats_heap_sys_bytes{job=\"pilot\"}",\r
+          "format": "time_series",\r
+          "hide": true,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "heap sys",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "go_memstats_heap_alloc_bytes{job=\"pilot\"}",\r
+          "format": "time_series",\r
+          "hide": true,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "heap alloc",\r
+          "refId": "D"\r
+        },\r
+        {\r
+          "expr": "go_memstats_alloc_bytes{job=\"pilot\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Alloc",\r
+          "refId": "F",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "go_memstats_heap_inuse_bytes{job=\"pilot\"}",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Heap in-use",\r
+          "refId": "E",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "go_memstats_stack_inuse_bytes{job=\"pilot\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Stack in-use",\r
+          "refId": "G",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "sum(container_memory_usage_bytes{container_name=~\"discovery|istio-proxy\", pod_name=~\"istio-pilot-.*\"})",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Total (k8s)",\r
+          "refId": "C",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "container_memory_usage_bytes{container_name=~\"discovery|istio-proxy\", pod_name=~\"istio-pilot-.*\"}",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "{{ container_name }} (k8s)",\r
+          "refId": "B",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Memory",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "bytes",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 6,\r
+        "x": 6,\r
+        "y": 40\r
+      },\r
+      "id": 602,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=~\"discovery|istio-proxy\", pod_name=~\"istio-pilot-.*\"}[1m]))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Total (k8s)",\r
+          "refId": "A",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=~\"discovery|istio-proxy\", pod_name=~\"istio-pilot-.*\"}[1m])) by (container_name)",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "{{ container_name }} (k8s)",\r
+          "refId": "B",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "irate(process_cpu_seconds_total{job=\"pilot\"}[1m])",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "pilot (self-reported)",\r
+          "refId": "C",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "vCPU",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 6,\r
+        "x": 12,\r
+        "y": 40\r
+      },\r
+      "id": 74,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "process_open_fds{job=\"pilot\"}",\r
+          "format": "time_series",\r
+          "hide": true,\r
+          "instant": false,\r
+          "interval": "",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Open FDs (pilot)",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "container_fs_usage_bytes{container_name=~\"discovery|istio-proxy\", pod_name=~\"istio-pilot-.*\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "{{ container_name }}",\r
+          "refId": "B",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Disk",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "bytes",\r
+          "label": "",\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "decimals": null,\r
+          "format": "none",\r
+          "label": "",\r
+          "logBase": 1024,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 6,\r
+        "x": 18,\r
+        "y": 40\r
+      },\r
+      "id": 402,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": false,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "go_goroutines{job=\"pilot\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Number of Goroutines",\r
+          "refId": "A",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Goroutines",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": "",\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "collapsed": false,\r
+      "gridPos": {\r
+        "h": 1,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 47\r
+      },\r
+      "id": 93,\r
+      "panels": [],\r
+      "title": "Mixer Resource Usage",\r
+      "type": "row"\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 6,\r
+        "x": 0,\r
+        "y": 48\r
+      },\r
+      "id": 94,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "process_virtual_memory_bytes{job=~\"istio-telemetry|istio-policy\"}",\r
+          "format": "time_series",\r
+          "instant": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Virtual Memory",\r
+          "refId": "I",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "process_resident_memory_bytes{job=~\"istio-telemetry|istio-policy\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Resident Memory",\r
+          "refId": "H",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "go_memstats_heap_sys_bytes{job=~\"istio-telemetry|istio-policy\"}",\r
+          "format": "time_series",\r
+          "hide": true,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "heap sys",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "go_memstats_heap_alloc_bytes{job=~\"istio-telemetry|istio-policy\"}",\r
+          "format": "time_series",\r
+          "hide": true,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "heap alloc",\r
+          "refId": "D"\r
+        },\r
+        {\r
+          "expr": "go_memstats_alloc_bytes{job=~\"istio-telemetry|istio-policy\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Alloc",\r
+          "refId": "F",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "go_memstats_heap_inuse_bytes{job=~\"istio-telemetry|istio-policy\"}",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Heap in-use",\r
+          "refId": "E",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "go_memstats_stack_inuse_bytes{job=~\"istio-policy|istio-telemetry\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Stack in-use",\r
+          "refId": "G",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "sum(container_memory_usage_bytes{container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*\"})",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Total (k8s)",\r
+          "refId": "C",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "container_memory_usage_bytes{container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*\"}",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "{{ container_name }} (k8s)",\r
+          "refId": "B",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Memory",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "bytes",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 6,\r
+        "x": 6,\r
+        "y": 48\r
+      },\r
+      "id": 95,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*\"}[1m]))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Total (k8s)",\r
+          "refId": "A",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*\"}[1m])) by (container_name)",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "{{ container_name }} (k8s)",\r
+          "refId": "B",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "irate(process_cpu_seconds_total{job=~\"istio-policy|istio-telemetry\"}[1m])",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "mixer (self-reported)",\r
+          "refId": "C",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "vCPU",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 6,\r
+        "x": 12,\r
+        "y": 48\r
+      },\r
+      "id": 96,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "process_open_fds{job=~\"istio-policy|istio-telemetry\"}",\r
+          "format": "time_series",\r
+          "hide": true,\r
+          "instant": false,\r
+          "interval": "",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Open FDs (pilot)",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "container_fs_usage_bytes{container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "{{ container_name }}",\r
+          "refId": "B",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Disk",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "bytes",\r
+          "label": "",\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "decimals": null,\r
+          "format": "none",\r
+          "label": "",\r
+          "logBase": 1024,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 6,\r
+        "x": 18,\r
+        "y": 48\r
+      },\r
+      "id": 97,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": false,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "go_goroutines{job=\"istio-telemetry\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Number of Goroutines",\r
+          "refId": "A",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Goroutines",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": "",\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    }\r
+  ],\r
+  "refresh": "10s",\r
+  "schemaVersion": 18,\r
+  "style": "dark",\r
+  "tags": [],\r
+  "templating": {\r
+    "list": []\r
+  },\r
+  "time": {\r
+    "from": "now-5m",\r
+    "to": "now"\r
+  },\r
+  "timepicker": {\r
+    "refresh_intervals": [\r
+      "5s",\r
+      "10s",\r
+      "30s",\r
+      "1m",\r
+      "5m",\r
+      "15m",\r
+      "30m",\r
+      "1h",\r
+      "2h",\r
+      "1d"\r
+    ],\r
+    "time_options": [\r
+      "5m",\r
+      "15m",\r
+      "1h",\r
+      "6h",\r
+      "12h",\r
+      "24h",\r
+      "2d",\r
+      "7d",\r
+      "30d"\r
+    ]\r
+  },\r
+  "timezone": "",\r
+  "title": "Istio Performance Dashboard",\r
+  "uid": "vu8e0VWZk",\r
+  "version": 22\r
+}\r
+'\r
+---\r
+apiVersion: v1\r
+kind: ConfigMap\r
+metadata:\r
+  name: istio-grafana-configuration-dashboards-istio-service-dashboard\r
+  namespace: istio-system\r
+  labels:\r
+    app: grafana\r
+    chart: grafana\r
+    heritage: Tiller\r
+    release: istio\r
+    istio: grafana\r
+data:\r
+  istio-service-dashboard.json: '{\r
+  "annotations": {\r
+    "list": [\r
+      {\r
+        "builtIn": 1,\r
+        "datasource": "-- Grafana --",\r
+        "enable": true,\r
+        "hide": true,\r
+        "iconColor": "rgba(0, 211, 255, 1)",\r
+        "name": "Annotations & Alerts",\r
+        "type": "dashboard"\r
+      }\r
+    ]\r
+  },\r
+  "editable": false,\r
+  "gnetId": null,\r
+  "graphTooltip": 0,\r
+  "iteration": 1536442501501,\r
+  "links": [],\r
+  "panels": [\r
+    {\r
+      "content": "<div class=\"dashboard-header text-center\">\n<span>SERVICE: $service</span>\n</div>",\r
+      "gridPos": {\r
+        "h": 3,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 0\r
+      },\r
+      "id": 89,\r
+      "links": [],\r
+      "mode": "html",\r
+      "title": "",\r
+      "transparent": true,\r
+      "type": "text"\r
+    },\r
+    {\r
+      "cacheTimeout": null,\r
+      "colorBackground": false,\r
+      "colorValue": false,\r
+      "colors": [\r
+        "rgba(245, 54, 54, 0.9)",\r
+        "rgba(237, 129, 40, 0.89)",\r
+        "rgba(50, 172, 45, 0.97)"\r
+      ],\r
+      "datasource": "Prometheus",\r
+      "format": "ops",\r
+      "gauge": {\r
+        "maxValue": 100,\r
+        "minValue": 0,\r
+        "show": false,\r
+        "thresholdLabels": false,\r
+        "thresholdMarkers": true\r
+      },\r
+      "gridPos": {\r
+        "h": 4,\r
+        "w": 6,\r
+        "x": 0,\r
+        "y": 3\r
+      },\r
+      "id": 12,\r
+      "interval": null,\r
+      "links": [],\r
+      "mappingType": 1,\r
+      "mappingTypes": [\r
+        {\r
+          "name": "value to text",\r
+          "value": 1\r
+        },\r
+        {\r
+          "name": "range to text",\r
+          "value": 2\r
+        }\r
+      ],\r
+      "maxDataPoints": 100,\r
+      "nullPointMode": "connected",\r
+      "nullText": null,\r
+      "postfix": "",\r
+      "postfixFontSize": "50%",\r
+      "prefix": "",\r
+      "prefixFontSize": "50%",\r
+      "rangeMaps": [\r
+        {\r
+          "from": "null",\r
+          "text": "N/A",\r
+          "to": "null"\r
+        }\r
+      ],\r
+      "sparkline": {\r
+        "fillColor": "rgba(31, 118, 189, 0.18)",\r
+        "full": true,\r
+        "lineColor": "rgb(31, 120, 193)",\r
+        "show": true\r
+      },\r
+      "tableColumn": "",\r
+      "targets": [\r
+        {\r
+          "expr": "round(sum(irate(istio_requests_total{reporter=\"source\",destination_service=~\"$service\"}[5m])), 0.001)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "refId": "A",\r
+          "step": 4\r
+        }\r
+      ],\r
+      "thresholds": "",\r
+      "title": "Client Request Volume",\r
+      "transparent": false,\r
+      "type": "singlestat",\r
+      "valueFontSize": "80%",\r
+      "valueMaps": [\r
+        {\r
+          "op": "=",\r
+          "text": "N/A",\r
+          "value": "null"\r
+        }\r
+      ],\r
+      "valueName": "current"\r
+    },\r
+    {\r
+      "cacheTimeout": null,\r
+      "colorBackground": false,\r
+      "colorValue": false,\r
+      "colors": [\r
+        "rgba(50, 172, 45, 0.97)",\r
+        "rgba(237, 129, 40, 0.89)",\r
+        "rgba(245, 54, 54, 0.9)"\r
+      ],\r
+      "datasource": "Prometheus",\r
+      "decimals": null,\r
+      "format": "percentunit",\r
+      "gauge": {\r
+        "maxValue": 100,\r
+        "minValue": 80,\r
+        "show": false,\r
+        "thresholdLabels": false,\r
+        "thresholdMarkers": false\r
+      },\r
+      "gridPos": {\r
+        "h": 4,\r
+        "w": 6,\r
+        "x": 6,\r
+        "y": 3\r
+      },\r
+      "id": 14,\r
+      "interval": null,\r
+      "links": [],\r
+      "mappingType": 1,\r
+      "mappingTypes": [\r
+        {\r
+          "name": "value to text",\r
+          "value": 1\r
+        },\r
+        {\r
+          "name": "range to text",\r
+          "value": 2\r
+        }\r
+      ],\r
+      "maxDataPoints": 100,\r
+      "nullPointMode": "connected",\r
+      "nullText": null,\r
+      "postfix": "",\r
+      "postfixFontSize": "50%",\r
+      "prefix": "",\r
+      "prefixFontSize": "50%",\r
+      "rangeMaps": [\r
+        {\r
+          "from": "null",\r
+          "text": "N/A",\r
+          "to": "null"\r
+        }\r
+      ],\r
+      "sparkline": {\r
+        "fillColor": "rgba(31, 118, 189, 0.18)",\r
+        "full": true,\r
+        "lineColor": "rgb(31, 120, 193)",\r
+        "show": true\r
+      },\r
+      "tableColumn": "",\r
+      "targets": [\r
+        {\r
+          "expr": "sum(irate(istio_requests_total{reporter=\"source\",destination_service=~\"$service\",response_code!~\"5.*\"}[5m])) / sum(irate(istio_requests_total{reporter=\"source\",destination_service=~\"$service\"}[5m]))",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "refId": "B"\r
+        }\r
+      ],\r
+      "thresholds": "95, 99, 99.5",\r
+      "title": "Client Success Rate (non-5xx responses)",\r
+      "transparent": false,\r
+      "type": "singlestat",\r
+      "valueFontSize": "80%",\r
+      "valueMaps": [\r
+        {\r
+          "op": "=",\r
+          "text": "N/A",\r
+          "value": "null"\r
+        }\r
+      ],\r
+      "valueName": "avg"\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 4,\r
+        "w": 6,\r
+        "x": 12,\r
+        "y": 3\r
+      },\r
+      "id": 87,\r
+      "legend": {\r
+        "alignAsTable": false,\r
+        "avg": false,\r
+        "current": false,\r
+        "hideEmpty": false,\r
+        "hideZero": false,\r
+        "max": false,\r
+        "min": false,\r
+        "rightSide": true,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\",destination_service=~\"$service\"}[1m])) by (le))",\r
+          "format": "time_series",\r
+          "interval": "",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "P50",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\",destination_service=~\"$service\"}[1m])) by (le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "P90",\r
+          "refId": "B"\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\",destination_service=~\"$service\"}[1m])) by (le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "P99",\r
+          "refId": "C"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Client Request Duration",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "s",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "cacheTimeout": null,\r
+      "colorBackground": false,\r
+      "colorValue": false,\r
+      "colors": [\r
+        "#299c46",\r
+        "rgba(237, 129, 40, 0.89)",\r
+        "#d44a3a"\r
+      ],\r
+      "datasource": "Prometheus",\r
+      "format": "Bps",\r
+      "gauge": {\r
+        "maxValue": 100,\r
+        "minValue": 0,\r
+        "show": false,\r
+        "thresholdLabels": false,\r
+        "thresholdMarkers": true\r
+      },\r
+      "gridPos": {\r
+        "h": 4,\r
+        "w": 6,\r
+        "x": 18,\r
+        "y": 3\r
+      },\r
+      "id": 84,\r
+      "interval": null,\r
+      "links": [],\r
+      "mappingType": 1,\r
+      "mappingTypes": [\r
+        {\r
+          "name": "value to text",\r
+          "value": 1\r
+        },\r
+        {\r
+          "name": "range to text",\r
+          "value": 2\r
+        }\r
+      ],\r
+      "maxDataPoints": 100,\r
+      "nullPointMode": "connected",\r
+      "nullText": null,\r
+      "postfix": "",\r
+      "postfixFontSize": "50%",\r
+      "prefix": "",\r
+      "prefixFontSize": "50%",\r
+      "rangeMaps": [\r
+        {\r
+          "from": "null",\r
+          "text": "N/A",\r
+          "to": "null"\r
+        }\r
+      ],\r
+      "sparkline": {\r
+        "fillColor": "rgba(31, 118, 189, 0.18)",\r
+        "full": true,\r
+        "lineColor": "rgb(31, 120, 193)",\r
+        "show": true\r
+      },\r
+      "tableColumn": "",\r
+      "targets": [\r
+        {\r
+          "expr": "sum(irate(istio_tcp_received_bytes_total{reporter=\"source\", destination_service=~\"$service\"}[1m]))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "",\r
+          "refId": "A"\r
+        }\r
+      ],\r
+      "thresholds": "",\r
+      "title": "TCP Received Bytes",\r
+      "transparent": false,\r
+      "type": "singlestat",\r
+      "valueFontSize": "80%",\r
+      "valueMaps": [\r
+        {\r
+          "op": "=",\r
+          "text": "N/A",\r
+          "value": "null"\r
+        }\r
+      ],\r
+      "valueName": "avg"\r
+    },\r
+    {\r
+      "cacheTimeout": null,\r
+      "colorBackground": false,\r
+      "colorValue": false,\r
+      "colors": [\r
+        "rgba(245, 54, 54, 0.9)",\r
+        "rgba(237, 129, 40, 0.89)",\r
+        "rgba(50, 172, 45, 0.97)"\r
+      ],\r
+      "datasource": "Prometheus",\r
+      "format": "ops",\r
+      "gauge": {\r
+        "maxValue": 100,\r
+        "minValue": 0,\r
+        "show": false,\r
+        "thresholdLabels": false,\r
+        "thresholdMarkers": true\r
+      },\r
+      "gridPos": {\r
+        "h": 4,\r
+        "w": 6,\r
+        "x": 0,\r
+        "y": 7\r
+      },\r
+      "id": 97,\r
+      "interval": null,\r
+      "links": [],\r
+      "mappingType": 1,\r
+      "mappingTypes": [\r
+        {\r
+          "name": "value to text",\r
+          "value": 1\r
+        },\r
+        {\r
+          "name": "range to text",\r
+          "value": 2\r
+        }\r
+      ],\r
+      "maxDataPoints": 100,\r
+      "nullPointMode": "connected",\r
+      "nullText": null,\r
+      "postfix": "",\r
+      "postfixFontSize": "50%",\r
+      "prefix": "",\r
+      "prefixFontSize": "50%",\r
+      "rangeMaps": [\r
+        {\r
+          "from": "null",\r
+          "text": "N/A",\r
+          "to": "null"\r
+        }\r
+      ],\r
+      "sparkline": {\r
+        "fillColor": "rgba(31, 118, 189, 0.18)",\r
+        "full": true,\r
+        "lineColor": "rgb(31, 120, 193)",\r
+        "show": true\r
+      },\r
+      "tableColumn": "",\r
+      "targets": [\r
+        {\r
+          "expr": "round(sum(irate(istio_requests_total{reporter=\"destination\",destination_service=~\"$service\"}[5m])), 0.001)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "refId": "A",\r
+          "step": 4\r
+        }\r
+      ],\r
+      "thresholds": "",\r
+      "title": "Server Request Volume",\r
+      "transparent": false,\r
+      "type": "singlestat",\r
+      "valueFontSize": "80%",\r
+      "valueMaps": [\r
+        {\r
+          "op": "=",\r
+          "text": "N/A",\r
+          "value": "null"\r
+        }\r
+      ],\r
+      "valueName": "current"\r
+    },\r
+    {\r
+      "cacheTimeout": null,\r
+      "colorBackground": false,\r
+      "colorValue": false,\r
+      "colors": [\r
+        "rgba(50, 172, 45, 0.97)",\r
+        "rgba(237, 129, 40, 0.89)",\r
+        "rgba(245, 54, 54, 0.9)"\r
+      ],\r
+      "datasource": "Prometheus",\r
+      "decimals": null,\r
+      "format": "percentunit",\r
+      "gauge": {\r
+        "maxValue": 100,\r
+        "minValue": 80,\r
+        "show": false,\r
+        "thresholdLabels": false,\r
+        "thresholdMarkers": false\r
+      },\r
+      "gridPos": {\r
+        "h": 4,\r
+        "w": 6,\r
+        "x": 6,\r
+        "y": 7\r
+      },\r
+      "id": 98,\r
+      "interval": null,\r
+      "links": [],\r
+      "mappingType": 1,\r
+      "mappingTypes": [\r
+        {\r
+          "name": "value to text",\r
+          "value": 1\r
+        },\r
+        {\r
+          "name": "range to text",\r
+          "value": 2\r
+        }\r
+      ],\r
+      "maxDataPoints": 100,\r
+      "nullPointMode": "connected",\r
+      "nullText": null,\r
+      "postfix": "",\r
+      "postfixFontSize": "50%",\r
+      "prefix": "",\r
+      "prefixFontSize": "50%",\r
+      "rangeMaps": [\r
+        {\r
+          "from": "null",\r
+          "text": "N/A",\r
+          "to": "null"\r
+        }\r
+      ],\r
+      "sparkline": {\r
+        "fillColor": "rgba(31, 118, 189, 0.18)",\r
+        "full": true,\r
+        "lineColor": "rgb(31, 120, 193)",\r
+        "show": true\r
+      },\r
+      "tableColumn": "",\r
+      "targets": [\r
+        {\r
+          "expr": "sum(irate(istio_requests_total{reporter=\"destination\",destination_service=~\"$service\",response_code!~\"5.*\"}[5m])) / sum(irate(istio_requests_total{reporter=\"destination\",destination_service=~\"$service\"}[5m]))",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "refId": "B"\r
+        }\r
+      ],\r
+      "thresholds": "95, 99, 99.5",\r
+      "title": "Server Success Rate (non-5xx responses)",\r
+      "transparent": false,\r
+      "type": "singlestat",\r
+      "valueFontSize": "80%",\r
+      "valueMaps": [\r
+        {\r
+          "op": "=",\r
+          "text": "N/A",\r
+          "value": "null"\r
+        }\r
+      ],\r
+      "valueName": "avg"\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 4,\r
+        "w": 6,\r
+        "x": 12,\r
+        "y": 7\r
+      },\r
+      "id": 99,\r
+      "legend": {\r
+        "alignAsTable": false,\r
+        "avg": false,\r
+        "current": false,\r
+        "hideEmpty": false,\r
+        "hideZero": false,\r
+        "max": false,\r
+        "min": false,\r
+        "rightSide": true,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\",destination_service=~\"$service\"}[1m])) by (le))",\r
+          "format": "time_series",\r
+          "interval": "",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "P50",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\",destination_service=~\"$service\"}[1m])) by (le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "P90",\r
+          "refId": "B"\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\",destination_service=~\"$service\"}[1m])) by (le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "P99",\r
+          "refId": "C"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Server Request Duration",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "s",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "cacheTimeout": null,\r
+      "colorBackground": false,\r
+      "colorValue": false,\r
+      "colors": [\r
+        "#299c46",\r
+        "rgba(237, 129, 40, 0.89)",\r
+        "#d44a3a"\r
+      ],\r
+      "datasource": "Prometheus",\r
+      "format": "Bps",\r
+      "gauge": {\r
+        "maxValue": 100,\r
+        "minValue": 0,\r
+        "show": false,\r
+        "thresholdLabels": false,\r
+        "thresholdMarkers": true\r
+      },\r
+      "gridPos": {\r
+        "h": 4,\r
+        "w": 6,\r
+        "x": 18,\r
+        "y": 7\r
+      },\r
+      "id": 100,\r
+      "interval": null,\r
+      "links": [],\r
+      "mappingType": 1,\r
+      "mappingTypes": [\r
+        {\r
+          "name": "value to text",\r
+          "value": 1\r
+        },\r
+        {\r
+          "name": "range to text",\r
+          "value": 2\r
+        }\r
+      ],\r
+      "maxDataPoints": 100,\r
+      "nullPointMode": "connected",\r
+      "nullText": null,\r
+      "postfix": "",\r
+      "postfixFontSize": "50%",\r
+      "prefix": "",\r
+      "prefixFontSize": "50%",\r
+      "rangeMaps": [\r
+        {\r
+          "from": "null",\r
+          "text": "N/A",\r
+          "to": "null"\r
+        }\r
+      ],\r
+      "sparkline": {\r
+        "fillColor": "rgba(31, 118, 189, 0.18)",\r
+        "full": true,\r
+        "lineColor": "rgb(31, 120, 193)",\r
+        "show": true\r
+      },\r
+      "tableColumn": "",\r
+      "targets": [\r
+        {\r
+          "expr": "sum(irate(istio_tcp_sent_bytes_total{reporter=\"source\", destination_service=~\"$service\"}[1m])) ",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "",\r
+          "refId": "A"\r
+        }\r
+      ],\r
+      "thresholds": "",\r
+      "title": "TCP Sent Bytes",\r
+      "transparent": false,\r
+      "type": "singlestat",\r
+      "valueFontSize": "80%",\r
+      "valueMaps": [\r
+        {\r
+          "op": "=",\r
+          "text": "N/A",\r
+          "value": "null"\r
+        }\r
+      ],\r
+      "valueName": "avg"\r
+    },\r
+    {\r
+      "content": "<div class=\"dashboard-header text-center\">\n<span>CLIENT WORKLOADS</span>\n</div>",\r
+      "gridPos": {\r
+        "h": 3,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 11\r
+      },\r
+      "id": 45,\r
+      "links": [],\r
+      "mode": "html",\r
+      "title": "",\r
+      "transparent": true,\r
+      "type": "text"\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 0,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 12,\r
+        "x": 0,\r
+        "y": 14\r
+      },\r
+      "id": 25,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "hideEmpty": true,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null as zero",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "round(sum(irate(istio_requests_total{connection_security_policy=\"mutual_tls\",destination_service=~\"$service\",reporter=\"source\",source_workload=~\"$srcwl\",source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace, response_code), 0.001)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ source_workload }}.{{ source_workload_namespace }} : {{ response_code }} (🔐mTLS)",\r
+          "refId": "B",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "round(sum(irate(istio_requests_total{connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", reporter=\"source\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace, response_code), 0.001)",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ source_workload }}.{{ source_workload_namespace }} : {{ response_code }}",\r
+          "refId": "A",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Incoming Requests by Source And Response Code",\r
+      "tooltip": {\r
+        "shared": false,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": [\r
+          "total"\r
+        ]\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "ops",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": "0",\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 12,\r
+        "x": 12,\r
+        "y": 14\r
+      },\r
+      "id": 26,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "hideEmpty": true,\r
+        "hideZero": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(irate(istio_requests_total{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\",response_code!~\"5.*\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace) / sum(irate(istio_requests_total{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace)",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ source_workload }}.{{ source_workload_namespace }} (🔐mTLS)",\r
+          "refId": "A",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "sum(irate(istio_requests_total{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\",response_code!~\"5.*\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace) / sum(irate(istio_requests_total{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace)",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ source_workload }}.{{ source_workload_namespace }}",\r
+          "refId": "B",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Incoming Success Rate (non-5xx responses) By Source",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "percentunit",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": "1.01",\r
+          "min": "0",\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "description": "",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 8,\r
+        "x": 0,\r
+        "y": 20\r
+      },\r
+      "id": 27,\r
+      "legend": {\r
+        "alignAsTable": false,\r
+        "avg": false,\r
+        "current": false,\r
+        "hideEmpty": true,\r
+        "hideZero": false,\r
+        "max": false,\r
+        "min": false,\r
+        "rightSide": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50 (🔐mTLS)",\r
+          "refId": "D",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90 (🔐mTLS)",\r
+          "refId": "A",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.95, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95 (🔐mTLS)",\r
+          "refId": "B",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99 (🔐mTLS)",\r
+          "refId": "C",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50",\r
+          "refId": "E",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90",\r
+          "refId": "F",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.95, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95",\r
+          "refId": "G",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99",\r
+          "refId": "H",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Incoming Request Duration by Source",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "s",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": "0",\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 8,\r
+        "x": 8,\r
+        "y": 20\r
+      },\r
+      "id": 28,\r
+      "legend": {\r
+        "alignAsTable": false,\r
+        "avg": false,\r
+        "current": false,\r
+        "hideEmpty": true,\r
+        "max": false,\r
+        "min": false,\r
+        "rightSide": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50 (🔐mTLS)",\r
+          "refId": "D",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}}  P90 (🔐mTLS)",\r
+          "refId": "A",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95 (🔐mTLS)",\r
+          "refId": "B",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}}  P99 (🔐mTLS)",\r
+          "refId": "C",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50",\r
+          "refId": "E",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90",\r
+          "refId": "F",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95",\r
+          "refId": "G",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99",\r
+          "refId": "H",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Incoming Request Size By Source",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "decbytes",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": "0",\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 8,\r
+        "x": 16,\r
+        "y": 20\r
+      },\r
+      "id": 68,\r
+      "legend": {\r
+        "alignAsTable": false,\r
+        "avg": false,\r
+        "current": false,\r
+        "hideEmpty": true,\r
+        "max": false,\r
+        "min": false,\r
+        "rightSide": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50 (🔐mTLS)",\r
+          "refId": "D",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}}  P90 (🔐mTLS)",\r
+          "refId": "A",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95 (🔐mTLS)",\r
+          "refId": "B",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}}  P99 (🔐mTLS)",\r
+          "refId": "C",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50",\r
+          "refId": "E",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90",\r
+          "refId": "F",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95",\r
+          "refId": "G",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99",\r
+          "refId": "H",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Response Size By Source",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "decbytes",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": "0",\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 12,\r
+        "x": 0,\r
+        "y": 26\r
+      },\r
+      "id": 80,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "round(sum(irate(istio_tcp_received_bytes_total{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace), 0.001)",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ source_workload }}.{{ source_workload_namespace}} (🔐mTLS)",\r
+          "refId": "A",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "round(sum(irate(istio_tcp_received_bytes_total{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace), 0.001)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ source_workload }}.{{ source_workload_namespace}}",\r
+          "refId": "B",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Bytes Received from Incoming TCP Connection",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "Bps",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": "0",\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 12,\r
+        "x": 12,\r
+        "y": 26\r
+      },\r
+      "id": 82,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy=\"mutual_tls\", reporter=\"source\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace), 0.001)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ source_workload }}.{{ source_workload_namespace}} (🔐mTLS)",\r
+          "refId": "A",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy!=\"mutual_tls\", reporter=\"source\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace), 0.001)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ source_workload }}.{{ source_workload_namespace}}",\r
+          "refId": "B",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Bytes Sent to Incoming TCP Connection",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "Bps",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": "0",\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "content": "<div class=\"dashboard-header text-center\">\n<span>SERVICE WORKLOADS</span>\n</div>",\r
+      "gridPos": {\r
+        "h": 3,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 32\r
+      },\r
+      "id": 69,\r
+      "links": [],\r
+      "mode": "html",\r
+      "title": "",\r
+      "transparent": true,\r
+      "type": "text"\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 0,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 12,\r
+        "x": 0,\r
+        "y": 35\r
+      },\r
+      "id": 90,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "hideEmpty": true,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null as zero",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "round(sum(irate(istio_requests_total{connection_security_policy=\"mutual_tls\",destination_service=~\"$service\",reporter=\"destination\",destination_workload=~\"$dstwl\",destination_workload_namespace=~\"$dstns\"}[5m])) by (destination_workload, destination_workload_namespace, response_code), 0.001)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} : {{ response_code }} (🔐mTLS)",\r
+          "refId": "B",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "round(sum(irate(istio_requests_total{connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", reporter=\"destination\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[5m])) by (destination_workload, destination_workload_namespace, response_code), 0.001)",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} : {{ response_code }}",\r
+          "refId": "A",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Incoming Requests by Destination And Response Code",\r
+      "tooltip": {\r
+        "shared": false,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": [\r
+          "total"\r
+        ]\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "ops",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": "0",\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 12,\r
+        "x": 12,\r
+        "y": 35\r
+      },\r
+      "id": 91,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "hideEmpty": true,\r
+        "hideZero": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(irate(istio_requests_total{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\",response_code!~\"5.*\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[5m])) by (destination_workload, destination_workload_namespace) / sum(irate(istio_requests_total{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[5m])) by (destination_workload, destination_workload_namespace)",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} (🔐mTLS)",\r
+          "refId": "A",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "sum(irate(istio_requests_total{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\",response_code!~\"5.*\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[5m])) by (destination_workload, destination_workload_namespace) / sum(irate(istio_requests_total{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[5m])) by (destination_workload, destination_workload_namespace)",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }}",\r
+          "refId": "B",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Incoming Success Rate (non-5xx responses) By Source",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "percentunit",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": "1.01",\r
+          "min": "0",\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "description": "",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 8,\r
+        "x": 0,\r
+        "y": 41\r
+      },\r
+      "id": 94,\r
+      "legend": {\r
+        "alignAsTable": false,\r
+        "avg": false,\r
+        "current": false,\r
+        "hideEmpty": true,\r
+        "hideZero": false,\r
+        "max": false,\r
+        "min": false,\r
+        "rightSide": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P50 (🔐mTLS)",\r
+          "refId": "D",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P90 (🔐mTLS)",\r
+          "refId": "A",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.95, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P95 (🔐mTLS)",\r
+          "refId": "B",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P99 (🔐mTLS)",\r
+          "refId": "C",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P50",\r
+          "refId": "E",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P90",\r
+          "refId": "F",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.95, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P95",\r
+          "refId": "G",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P99",\r
+          "refId": "H",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Incoming Request Duration by Source",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "s",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": "0",\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 8,\r
+        "x": 8,\r
+        "y": 41\r
+      },\r
+      "id": 95,\r
+      "legend": {\r
+        "alignAsTable": false,\r
+        "avg": false,\r
+        "current": false,\r
+        "hideEmpty": true,\r
+        "max": false,\r
+        "min": false,\r
+        "rightSide": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P50 (🔐mTLS)",\r
+          "refId": "D",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }}  P90 (🔐mTLS)",\r
+          "refId": "A",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P95 (🔐mTLS)",\r
+          "refId": "B",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }}  P99 (🔐mTLS)",\r
+          "refId": "C",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P50",\r
+          "refId": "E",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P90",\r
+          "refId": "F",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P95",\r
+          "refId": "G",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P99",\r
+          "refId": "H",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Incoming Request Size By Source",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "decbytes",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": "0",\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 8,\r
+        "x": 16,\r
+        "y": 41\r
+      },\r
+      "id": 96,\r
+      "legend": {\r
+        "alignAsTable": false,\r
+        "avg": false,\r
+        "current": false,\r
+        "hideEmpty": true,\r
+        "max": false,\r
+        "min": false,\r
+        "rightSide": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P50 (🔐mTLS)",\r
+          "refId": "D",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }}  P90 (🔐mTLS)",\r
+          "refId": "A",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P95 (🔐mTLS)",\r
+          "refId": "B",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }}  P99 (🔐mTLS)",\r
+          "refId": "C",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P50",\r
+          "refId": "E",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P90",\r
+          "refId": "F",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P95",\r
+          "refId": "G",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P99",\r
+          "refId": "H",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Response Size By Source",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "decbytes",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": "0",\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 12,\r
+        "x": 0,\r
+        "y": 47\r
+      },\r
+      "id": 92,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "round(sum(irate(istio_tcp_received_bytes_total{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace), 0.001)",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace}} (🔐mTLS)",\r
+          "refId": "A",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "round(sum(irate(istio_tcp_received_bytes_total{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace), 0.001)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace}}",\r
+          "refId": "B",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Bytes Received from Incoming TCP Connection",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "Bps",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": "0",\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 12,\r
+        "x": 12,\r
+        "y": 47\r
+      },\r
+      "id": 93,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy=\"mutual_tls\", reporter=\"source\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace), 0.001)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{destination_workload_namespace }} (🔐mTLS)",\r
+          "refId": "A",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy!=\"mutual_tls\", reporter=\"source\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace), 0.001)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_workload }}.{{destination_workload_namespace }}",\r
+          "refId": "B",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Bytes Sent to Incoming TCP Connection",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "Bps",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": "0",\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    }\r
+  ],\r
+  "refresh": "10s",\r
+  "schemaVersion": 16,\r
+  "style": "dark",\r
+  "tags": [],\r
+  "templating": {\r
+    "list": [\r
+      {\r
+        "allValue": null,\r
+        "datasource": "Prometheus",\r
+        "hide": 0,\r
+        "includeAll": false,\r
+        "label": "Service",\r
+        "multi": false,\r
+        "name": "service",\r
+        "options": [],\r
+        "query": "label_values(destination_service)",\r
+        "refresh": 1,\r
+        "regex": "",\r
+        "sort": 0,\r
+        "tagValuesQuery": "",\r
+        "tags": [],\r
+        "tagsQuery": "",\r
+        "type": "query",\r
+        "useTags": false\r
+      },\r
+      {\r
+        "allValue": null,\r
+        "current": {\r
+          "text": "All",\r
+          "value": "$__all"\r
+        },\r
+        "datasource": "Prometheus",\r
+        "hide": 0,\r
+        "includeAll": true,\r
+        "label": "Client Workload Namespace",\r
+        "multi": true,\r
+        "name": "srcns",\r
+        "options": [],\r
+        "query": "query_result( sum(istio_requests_total{reporter=\"destination\", destination_service=\"$service\"}) by (source_workload_namespace) or sum(istio_tcp_sent_bytes_total{reporter=\"destination\", destination_service=~\"$service\"}) by (source_workload_namespace))",\r
+        "refresh": 1,\r
+        "regex": "/.*namespace=\"([^\"]*).*/",\r
+        "sort": 2,\r
+        "tagValuesQuery": "",\r
+        "tags": [],\r
+        "tagsQuery": "",\r
+        "type": "query",\r
+        "useTags": false\r
+      },\r
+      {\r
+        "allValue": null,\r
+        "current": {\r
+          "text": "All",\r
+          "value": "$__all"\r
+        },\r
+        "datasource": "Prometheus",\r
+        "hide": 0,\r
+        "includeAll": true,\r
+        "label": "Client Workload",\r
+        "multi": true,\r
+        "name": "srcwl",\r
+        "options": [],\r
+        "query": "query_result( sum(istio_requests_total{reporter=\"destination\", destination_service=~\"$service\", source_workload_namespace=~\"$srcns\"}) by (source_workload) or sum(istio_tcp_sent_bytes_total{reporter=\"destination\", destination_service=~\"$service\", source_workload_namespace=~\"$srcns\"}) by (source_workload))",\r
+        "refresh": 1,\r
+        "regex": "/.*workload=\"([^\"]*).*/",\r
+        "sort": 3,\r
+        "tagValuesQuery": "",\r
+        "tags": [],\r
+        "tagsQuery": "",\r
+        "type": "query",\r
+        "useTags": false\r
+      },\r
+      {\r
+        "allValue": null,\r
+        "current": {\r
+          "text": "All",\r
+          "value": "$__all"\r
+        },\r
+        "datasource": "Prometheus",\r
+        "hide": 0,\r
+        "includeAll": true,\r
+        "label": "Service Workload Namespace",\r
+        "multi": true,\r
+        "name": "dstns",\r
+        "options": [],\r
+        "query": "query_result( sum(istio_requests_total{reporter=\"destination\", destination_service=\"$service\"}) by (destination_workload_namespace) or sum(istio_tcp_sent_bytes_total{reporter=\"destination\", destination_service=~\"$service\"}) by (destination_workload_namespace))",\r
+        "refresh": 1,\r
+        "regex": "/.*namespace=\"([^\"]*).*/",\r
+        "sort": 2,\r
+        "tagValuesQuery": "",\r
+        "tags": [],\r
+        "tagsQuery": "",\r
+        "type": "query",\r
+        "useTags": false\r
+      },\r
+      {\r
+        "allValue": null,\r
+        "current": {\r
+          "text": "All",\r
+          "value": "$__all"\r
+        },\r
+        "datasource": "Prometheus",\r
+        "hide": 0,\r
+        "includeAll": true,\r
+        "label": "Service Workload",\r
+        "multi": true,\r
+        "name": "dstwl",\r
+        "options": [],\r
+        "query": "query_result( sum(istio_requests_total{reporter=\"destination\", destination_service=~\"$service\", destination_workload_namespace=~\"$dstns\"}) by (destination_workload) or sum(istio_tcp_sent_bytes_total{reporter=\"destination\", destination_service=~\"$service\", destination_workload_namespace=~\"$dstns\"}) by (destination_workload))",\r
+        "refresh": 1,\r
+        "regex": "/.*workload=\"([^\"]*).*/",\r
+        "sort": 3,\r
+        "tagValuesQuery": "",\r
+        "tags": [],\r
+        "tagsQuery": "",\r
+        "type": "query",\r
+        "useTags": false\r
+      }\r
+    ]\r
+  },\r
+  "time": {\r
+    "from": "now-5m",\r
+    "to": "now"\r
+  },\r
+  "timepicker": {\r
+    "refresh_intervals": [\r
+      "5s",\r
+      "10s",\r
+      "30s",\r
+      "1m",\r
+      "5m",\r
+      "15m",\r
+      "30m",\r
+      "1h",\r
+      "2h",\r
+      "1d"\r
+    ],\r
+    "time_options": [\r
+      "5m",\r
+      "15m",\r
+      "1h",\r
+      "6h",\r
+      "12h",\r
+      "24h",\r
+      "2d",\r
+      "7d",\r
+      "30d"\r
+    ]\r
+  },\r
+  "timezone": "",\r
+  "title": "Istio Service Dashboard",\r
+  "uid": "LJ_uJAvmk",\r
+  "version": 1\r
+}\r
+'\r
+---\r
+apiVersion: v1\r
+kind: ConfigMap\r
+metadata:\r
+  name: istio-grafana-configuration-dashboards-istio-workload-dashboard\r
+  namespace: istio-system\r
+  labels:\r
+    app: grafana\r
+    chart: grafana\r
+    heritage: Tiller\r
+    release: istio\r
+    istio: grafana\r
+data:\r
+  istio-workload-dashboard.json: '{\r
+  "__inputs": [\r
+    {\r
+      "name": "DS_PROMETHEUS",\r
+      "label": "Prometheus",\r
+      "description": "",\r
+      "type": "datasource",\r
+      "pluginId": "prometheus",\r
+      "pluginName": "Prometheus"\r
+    }\r
+  ],\r
+  "__requires": [\r
+    {\r
+      "type": "grafana",\r
+      "id": "grafana",\r
+      "name": "Grafana",\r
+      "version": "5.0.4"\r
+    },\r
+    {\r
+      "type": "panel",\r
+      "id": "graph",\r
+      "name": "Graph",\r
+      "version": "5.0.0"\r
+    },\r
+    {\r
+      "type": "datasource",\r
+      "id": "prometheus",\r
+      "name": "Prometheus",\r
+      "version": "5.0.0"\r
+    },\r
+    {\r
+      "type": "panel",\r
+      "id": "singlestat",\r
+      "name": "Singlestat",\r
+      "version": "5.0.0"\r
+    },\r
+    {\r
+      "type": "panel",\r
+      "id": "text",\r
+      "name": "Text",\r
+      "version": "5.0.0"\r
+    }\r
+  ],\r
+  "annotations": {\r
+    "list": [\r
+      {\r
+        "builtIn": 1,\r
+        "datasource": "-- Grafana --",\r
+        "enable": true,\r
+        "hide": true,\r
+        "iconColor": "rgba(0, 211, 255, 1)",\r
+        "name": "Annotations & Alerts",\r
+        "type": "dashboard"\r
+      }\r
+    ]\r
+  },\r
+  "editable": false,\r
+  "gnetId": null,\r
+  "graphTooltip": 0,\r
+  "id": null,\r
+  "iteration": 1531345461465,\r
+  "links": [],\r
+  "panels": [\r
+    {\r
+      "content": "<div class=\"dashboard-header text-center\">\n<span>WORKLOAD: $workload.$namespace</span>\n</div>",\r
+      "gridPos": {\r
+        "h": 3,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 0\r
+      },\r
+      "id": 89,\r
+      "links": [],\r
+      "mode": "html",\r
+      "title": "",\r
+      "transparent": true,\r
+      "type": "text"\r
+    },\r
+    {\r
+      "cacheTimeout": null,\r
+      "colorBackground": false,\r
+      "colorValue": false,\r
+      "colors": [\r
+        "rgba(245, 54, 54, 0.9)",\r
+        "rgba(237, 129, 40, 0.89)",\r
+        "rgba(50, 172, 45, 0.97)"\r
+      ],\r
+      "datasource": "Prometheus",\r
+      "format": "ops",\r
+      "gauge": {\r
+        "maxValue": 100,\r
+        "minValue": 0,\r
+        "show": false,\r
+        "thresholdLabels": false,\r
+        "thresholdMarkers": true\r
+      },\r
+      "gridPos": {\r
+        "h": 4,\r
+        "w": 8,\r
+        "x": 0,\r
+        "y": 3\r
+      },\r
+      "id": 12,\r
+      "interval": null,\r
+      "links": [],\r
+      "mappingType": 1,\r
+      "mappingTypes": [\r
+        {\r
+          "name": "value to text",\r
+          "value": 1\r
+        },\r
+        {\r
+          "name": "range to text",\r
+          "value": 2\r
+        }\r
+      ],\r
+      "maxDataPoints": 100,\r
+      "nullPointMode": "connected",\r
+      "nullText": null,\r
+      "postfix": "",\r
+      "postfixFontSize": "50%",\r
+      "prefix": "",\r
+      "prefixFontSize": "50%",\r
+      "rangeMaps": [\r
+        {\r
+          "from": "null",\r
+          "text": "N/A",\r
+          "to": "null"\r
+        }\r
+      ],\r
+      "sparkline": {\r
+        "fillColor": "rgba(31, 118, 189, 0.18)",\r
+        "full": true,\r
+        "lineColor": "rgb(31, 120, 193)",\r
+        "show": true\r
+      },\r
+      "tableColumn": "",\r
+      "targets": [\r
+        {\r
+          "expr": "round(sum(irate(istio_requests_total{reporter=\"destination\",destination_workload_namespace=~\"$namespace\",destination_workload=~\"$workload\"}[5m])), 0.001)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "refId": "A",\r
+          "step": 4\r
+        }\r
+      ],\r
+      "thresholds": "",\r
+      "title": "Incoming Request Volume",\r
+      "transparent": false,\r
+      "type": "singlestat",\r
+      "valueFontSize": "80%",\r
+      "valueMaps": [\r
+        {\r
+          "op": "=",\r
+          "text": "N/A",\r
+          "value": "null"\r
+        }\r
+      ],\r
+      "valueName": "current"\r
+    },\r
+    {\r
+      "cacheTimeout": null,\r
+      "colorBackground": false,\r
+      "colorValue": false,\r
+      "colors": [\r
+        "rgba(50, 172, 45, 0.97)",\r
+        "rgba(237, 129, 40, 0.89)",\r
+        "rgba(245, 54, 54, 0.9)"\r
+      ],\r
+      "datasource": "Prometheus",\r
+      "decimals": null,\r
+      "format": "percentunit",\r
+      "gauge": {\r
+        "maxValue": 100,\r
+        "minValue": 80,\r
+        "show": false,\r
+        "thresholdLabels": false,\r
+        "thresholdMarkers": false\r
+      },\r
+      "gridPos": {\r
+        "h": 4,\r
+        "w": 8,\r
+        "x": 8,\r
+        "y": 3\r
+      },\r
+      "id": 14,\r
+      "interval": null,\r
+      "links": [],\r
+      "mappingType": 1,\r
+      "mappingTypes": [\r
+        {\r
+          "name": "value to text",\r
+          "value": 1\r
+        },\r
+        {\r
+          "name": "range to text",\r
+          "value": 2\r
+        }\r
+      ],\r
+      "maxDataPoints": 100,\r
+      "nullPointMode": "connected",\r
+      "nullText": null,\r
+      "postfix": "",\r
+      "postfixFontSize": "50%",\r
+      "prefix": "",\r
+      "prefixFontSize": "50%",\r
+      "rangeMaps": [\r
+        {\r
+          "from": "null",\r
+          "text": "N/A",\r
+          "to": "null"\r
+        }\r
+      ],\r
+      "sparkline": {\r
+        "fillColor": "rgba(31, 118, 189, 0.18)",\r
+        "full": true,\r
+        "lineColor": "rgb(31, 120, 193)",\r
+        "show": true\r
+      },\r
+      "tableColumn": "",\r
+      "targets": [\r
+        {\r
+          "expr": "sum(irate(istio_requests_total{reporter=\"destination\",destination_workload_namespace=~\"$namespace\",destination_workload=~\"$workload\",response_code!~\"5.*\"}[5m])) / sum(irate(istio_requests_total{reporter=\"destination\",destination_workload_namespace=~\"$namespace\",destination_workload=~\"$workload\"}[5m]))",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "refId": "B"\r
+        }\r
+      ],\r
+      "thresholds": "95, 99, 99.5",\r
+      "title": "Incoming Success Rate (non-5xx responses)",\r
+      "transparent": false,\r
+      "type": "singlestat",\r
+      "valueFontSize": "80%",\r
+      "valueMaps": [\r
+        {\r
+          "op": "=",\r
+          "text": "N/A",\r
+          "value": "null"\r
+        }\r
+      ],\r
+      "valueName": "avg"\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 4,\r
+        "w": 8,\r
+        "x": 16,\r
+        "y": 3\r
+      },\r
+      "id": 87,\r
+      "legend": {\r
+        "alignAsTable": false,\r
+        "avg": false,\r
+        "current": false,\r
+        "hideEmpty": false,\r
+        "hideZero": false,\r
+        "max": false,\r
+        "min": false,\r
+        "rightSide": true,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\",destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\"}[1m])) by (le))",\r
+          "format": "time_series",\r
+          "interval": "",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "P50",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\",destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\"}[1m])) by (le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "P90",\r
+          "refId": "B"\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\",destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\"}[1m])) by (le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "P99",\r
+          "refId": "C"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Request Duration",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "s",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ]\r
+    },\r
+    {\r
+      "cacheTimeout": null,\r
+      "colorBackground": false,\r
+      "colorValue": false,\r
+      "colors": [\r
+        "#299c46",\r
+        "rgba(237, 129, 40, 0.89)",\r
+        "#d44a3a"\r
+      ],\r
+      "datasource": "Prometheus",\r
+      "format": "Bps",\r
+      "gauge": {\r
+        "maxValue": 100,\r
+        "minValue": 0,\r
+        "show": false,\r
+        "thresholdLabels": false,\r
+        "thresholdMarkers": true\r
+      },\r
+      "gridPos": {\r
+        "h": 4,\r
+        "w": 12,\r
+        "x": 0,\r
+        "y": 7\r
+      },\r
+      "id": 84,\r
+      "interval": null,\r
+      "links": [],\r
+      "mappingType": 1,\r
+      "mappingTypes": [\r
+        {\r
+          "name": "value to text",\r
+          "value": 1\r
+        },\r
+        {\r
+          "name": "range to text",\r
+          "value": 2\r
+        }\r
+      ],\r
+      "maxDataPoints": 100,\r
+      "nullPointMode": "connected",\r
+      "nullText": null,\r
+      "postfix": "",\r
+      "postfixFontSize": "50%",\r
+      "prefix": "",\r
+      "prefixFontSize": "50%",\r
+      "rangeMaps": [\r
+        {\r
+          "from": "null",\r
+          "text": "N/A",\r
+          "to": "null"\r
+        }\r
+      ],\r
+      "sparkline": {\r
+        "fillColor": "rgba(31, 118, 189, 0.18)",\r
+        "full": true,\r
+        "lineColor": "rgb(31, 120, 193)",\r
+        "show": true\r
+      },\r
+      "tableColumn": "",\r
+      "targets": [\r
+        {\r
+          "expr": "sum(irate(istio_tcp_sent_bytes_total{reporter=\"destination\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\"}[1m])) + sum(irate(istio_tcp_received_bytes_total{reporter=\"destination\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\"}[1m]))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "",\r
+          "refId": "A"\r
+        }\r
+      ],\r
+      "thresholds": "",\r
+      "title": "TCP Server Traffic",\r
+      "transparent": false,\r
+      "type": "singlestat",\r
+      "valueFontSize": "80%",\r
+      "valueMaps": [\r
+        {\r
+          "op": "=",\r
+          "text": "N/A",\r
+          "value": "null"\r
+        }\r
+      ],\r
+      "valueName": "avg"\r
+    },\r
+    {\r
+      "cacheTimeout": null,\r
+      "colorBackground": false,\r
+      "colorValue": false,\r
+      "colors": [\r
+        "#299c46",\r
+        "rgba(237, 129, 40, 0.89)",\r
+        "#d44a3a"\r
+      ],\r
+      "datasource": "Prometheus",\r
+      "format": "Bps",\r
+      "gauge": {\r
+        "maxValue": 100,\r
+        "minValue": 0,\r
+        "show": false,\r
+        "thresholdLabels": false,\r
+        "thresholdMarkers": true\r
+      },\r
+      "gridPos": {\r
+        "h": 4,\r
+        "w": 12,\r
+        "x": 12,\r
+        "y": 7\r
+      },\r
+      "id": 85,\r
+      "interval": null,\r
+      "links": [],\r
+      "mappingType": 1,\r
+      "mappingTypes": [\r
+        {\r
+          "name": "value to text",\r
+          "value": 1\r
+        },\r
+        {\r
+          "name": "range to text",\r
+          "value": 2\r
+        }\r
+      ],\r
+      "maxDataPoints": 100,\r
+      "nullPointMode": "connected",\r
+      "nullText": null,\r
+      "postfix": "",\r
+      "postfixFontSize": "50%",\r
+      "prefix": "",\r
+      "prefixFontSize": "50%",\r
+      "rangeMaps": [\r
+        {\r
+          "from": "null",\r
+          "text": "N/A",\r
+          "to": "null"\r
+        }\r
+      ],\r
+      "sparkline": {\r
+        "fillColor": "rgba(31, 118, 189, 0.18)",\r
+        "full": true,\r
+        "lineColor": "rgb(31, 120, 193)",\r
+        "show": true\r
+      },\r
+      "tableColumn": "",\r
+      "targets": [\r
+        {\r
+          "expr": "sum(irate(istio_tcp_sent_bytes_total{reporter=\"source\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\"}[1m])) + sum(irate(istio_tcp_received_bytes_total{reporter=\"source\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\"}[1m]))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "",\r
+          "refId": "A"\r
+        }\r
+      ],\r
+      "thresholds": "",\r
+      "title": "TCP Client Traffic",\r
+      "transparent": false,\r
+      "type": "singlestat",\r
+      "valueFontSize": "80%",\r
+      "valueMaps": [\r
+        {\r
+          "op": "=",\r
+          "text": "N/A",\r
+          "value": "null"\r
+        }\r
+      ],\r
+      "valueName": "avg"\r
+    },\r
+    {\r
+      "content": "<div class=\"dashboard-header text-center\">\n<span>INBOUND WORKLOADS</span>\n</div>",\r
+      "gridPos": {\r
+        "h": 3,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 11\r
+      },\r
+      "id": 45,\r
+      "links": [],\r
+      "mode": "html",\r
+      "title": "",\r
+      "transparent": true,\r
+      "type": "text"\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 0,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 12,\r
+        "x": 0,\r
+        "y": 14\r
+      },\r
+      "id": 25,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "hideEmpty": true,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null as zero",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "round(sum(irate(istio_requests_total{connection_security_policy=\"mutual_tls\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\", reporter=\"destination\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace, response_code), 0.001)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ source_workload }}.{{ source_workload_namespace }} : {{ response_code }} (🔐mTLS)",\r
+          "refId": "B",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "round(sum(irate(istio_requests_total{connection_security_policy!=\"mutual_tls\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\", reporter=\"destination\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace, response_code), 0.001)",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ source_workload }}.{{ source_workload_namespace }} : {{ response_code }}",\r
+          "refId": "A",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Incoming Requests by Source And Response Code",\r
+      "tooltip": {\r
+        "shared": false,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": [\r
+          "total"\r
+        ]\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "ops",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": "0",\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ]\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 12,\r
+        "x": 12,\r
+        "y": 14\r
+      },\r
+      "id": 26,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "hideEmpty": true,\r
+        "hideZero": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(irate(istio_requests_total{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\",response_code!~\"5.*\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace) / sum(irate(istio_requests_total{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace)",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ source_workload }}.{{ source_workload_namespace }} (🔐mTLS)",\r
+          "refId": "A",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "sum(irate(istio_requests_total{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\",response_code!~\"5.*\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace) / sum(irate(istio_requests_total{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace)",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ source_workload }}.{{ source_workload_namespace }}",\r
+          "refId": "B",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Incoming Success Rate (non-5xx responses) By Source",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "percentunit",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": "1.01",\r
+          "min": "0",\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ]\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "description": "",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 8,\r
+        "x": 0,\r
+        "y": 20\r
+      },\r
+      "id": 27,\r
+      "legend": {\r
+        "alignAsTable": false,\r
+        "avg": false,\r
+        "current": false,\r
+        "hideEmpty": true,\r
+        "hideZero": false,\r
+        "max": false,\r
+        "min": false,\r
+        "rightSide": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50 (🔐mTLS)",\r
+          "refId": "D",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90 (🔐mTLS)",\r
+          "refId": "A",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.95, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95 (🔐mTLS)",\r
+          "refId": "B",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99 (🔐mTLS)",\r
+          "refId": "C",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50",\r
+          "refId": "E",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90",\r
+          "refId": "F",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.95, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95",\r
+          "refId": "G",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99",\r
+          "refId": "H",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Incoming Request Duration by Source",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "s",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": "0",\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ]\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 8,\r
+        "x": 8,\r
+        "y": 20\r
+      },\r
+      "id": 28,\r
+      "legend": {\r
+        "alignAsTable": false,\r
+        "avg": false,\r
+        "current": false,\r
+        "hideEmpty": true,\r
+        "max": false,\r
+        "min": false,\r
+        "rightSide": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50 (🔐mTLS)",\r
+          "refId": "D",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}}  P90 (🔐mTLS)",\r
+          "refId": "A",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95 (🔐mTLS)",\r
+          "refId": "B",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}}  P99 (🔐mTLS)",\r
+          "refId": "C",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50",\r
+          "refId": "E",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90",\r
+          "refId": "F",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95",\r
+          "refId": "G",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99",\r
+          "refId": "H",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Incoming Request Size By Source",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "decbytes",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": "0",\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ]\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 8,\r
+        "x": 16,\r
+        "y": 20\r
+      },\r
+      "id": 68,\r
+      "legend": {\r
+        "alignAsTable": false,\r
+        "avg": false,\r
+        "current": false,\r
+        "hideEmpty": true,\r
+        "max": false,\r
+        "min": false,\r
+        "rightSide": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50 (🔐mTLS)",\r
+          "refId": "D",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}}  P90 (🔐mTLS)",\r
+          "refId": "A",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95 (🔐mTLS)",\r
+          "refId": "B",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}}  P99 (🔐mTLS)",\r
+          "refId": "C",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50",\r
+          "refId": "E",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90",\r
+          "refId": "F",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95",\r
+          "refId": "G",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99",\r
+          "refId": "H",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Response Size By Source",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "decbytes",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": "0",\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ]\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 12,\r
+        "x": 0,\r
+        "y": 26\r
+      },\r
+      "id": 80,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "round(sum(irate(istio_tcp_received_bytes_total{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace), 0.001)",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ source_workload }}.{{ source_workload_namespace}} (🔐mTLS)",\r
+          "refId": "A",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "round(sum(irate(istio_tcp_received_bytes_total{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace), 0.001)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ source_workload }}.{{ source_workload_namespace}}",\r
+          "refId": "B",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Bytes Received from Incoming TCP Connection",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "Bps",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": "0",\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ]\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 12,\r
+        "x": 12,\r
+        "y": 26\r
+      },\r
+      "id": 82,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy=\"mutual_tls\", reporter=\"destination\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace), 0.001)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ source_workload }}.{{ source_workload_namespace}} (🔐mTLS)",\r
+          "refId": "A",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy!=\"mutual_tls\", reporter=\"destination\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace), 0.001)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ source_workload }}.{{ source_workload_namespace}}",\r
+          "refId": "B",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Bytes Sent to Incoming TCP Connection",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "Bps",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": "0",\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ]\r
+    },\r
+    {\r
+      "content": "<div class=\"dashboard-header text-center\">\n<span>OUTBOUND SERVICES</span>\n</div>",\r
+      "gridPos": {\r
+        "h": 3,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 32\r
+      },\r
+      "id": 69,\r
+      "links": [],\r
+      "mode": "html",\r
+      "title": "",\r
+      "transparent": true,\r
+      "type": "text"\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 0,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 12,\r
+        "x": 0,\r
+        "y": 35\r
+      },\r
+      "id": 70,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "hideEmpty": true,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null as zero",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "round(sum(irate(istio_requests_total{connection_security_policy=\"mutual_tls\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\", reporter=\"source\", destination_service=~\"$dstsvc\"}[5m])) by (destination_service, response_code), 0.001)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }} : {{ response_code }} (🔐mTLS)",\r
+          "refId": "B",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "round(sum(irate(istio_requests_total{connection_security_policy!=\"mutual_tls\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\", reporter=\"source\", destination_service=~\"$dstsvc\"}[5m])) by (destination_service, response_code), 0.001)",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }} : {{ response_code }}",\r
+          "refId": "A",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Outgoing Requests by Destination And Response Code",\r
+      "tooltip": {\r
+        "shared": false,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": [\r
+          "total"\r
+        ]\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "ops",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": "0",\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ]\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 12,\r
+        "x": 12,\r
+        "y": 35\r
+      },\r
+      "id": 71,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "hideEmpty": true,\r
+        "hideZero": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(irate(istio_requests_total{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\",response_code!~\"5.*\", destination_service=~\"$dstsvc\"}[5m])) by (destination_service) / sum(irate(istio_requests_total{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\", destination_service=~\"$dstsvc\"}[5m])) by (destination_service)",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }} (🔐mTLS)",\r
+          "refId": "A",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "sum(irate(istio_requests_total{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\",response_code!~\"5.*\", destination_service=~\"$dstsvc\"}[5m])) by (destination_service) / sum(irate(istio_requests_total{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\", destination_service=~\"$dstsvc\"}[5m])) by (destination_service)",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{destination_service }}",\r
+          "refId": "B",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Outgoing Success Rate (non-5xx responses) By Destination",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "percentunit",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": "1.01",\r
+          "min": "0",\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ]\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "description": "",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 8,\r
+        "x": 0,\r
+        "y": 41\r
+      },\r
+      "id": 72,\r
+      "legend": {\r
+        "alignAsTable": false,\r
+        "avg": false,\r
+        "current": false,\r
+        "hideEmpty": true,\r
+        "hideZero": false,\r
+        "max": false,\r
+        "min": false,\r
+        "rightSide": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }} P50 (🔐mTLS)",\r
+          "refId": "D",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }} P90 (🔐mTLS)",\r
+          "refId": "A",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.95, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }} P95 (🔐mTLS)",\r
+          "refId": "B",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }} P99 (🔐mTLS)",\r
+          "refId": "C",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }} P50",\r
+          "refId": "E",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }} P90",\r
+          "refId": "F",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.95, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }} P95",\r
+          "refId": "G",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }} P99",\r
+          "refId": "H",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Outgoing Request Duration by Destination",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "s",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": "0",\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ]\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 8,\r
+        "x": 8,\r
+        "y": 41\r
+      },\r
+      "id": 73,\r
+      "legend": {\r
+        "alignAsTable": false,\r
+        "avg": false,\r
+        "current": false,\r
+        "hideEmpty": true,\r
+        "max": false,\r
+        "min": false,\r
+        "rightSide": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }} P50 (🔐mTLS)",\r
+          "refId": "D",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }} P90 (🔐mTLS)",\r
+          "refId": "A",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }} P95 (🔐mTLS)",\r
+          "refId": "B",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }} P99 (🔐mTLS)",\r
+          "refId": "C",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }} P50",\r
+          "refId": "E",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }} P90",\r
+          "refId": "F",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }} P95",\r
+          "refId": "G",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }} P99",\r
+          "refId": "H",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Outgoing Request Size By Destination",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "decbytes",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": "0",\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ]\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 8,\r
+        "x": 16,\r
+        "y": 41\r
+      },\r
+      "id": 74,\r
+      "legend": {\r
+        "alignAsTable": false,\r
+        "avg": false,\r
+        "current": false,\r
+        "hideEmpty": true,\r
+        "max": false,\r
+        "min": false,\r
+        "rightSide": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }} P50 (🔐mTLS)",\r
+          "refId": "D",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }} P90 (🔐mTLS)",\r
+          "refId": "A",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }} P95 (🔐mTLS)",\r
+          "refId": "B",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }}  P99 (🔐mTLS)",\r
+          "refId": "C",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }} P50",\r
+          "refId": "E",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }} P90",\r
+          "refId": "F",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }} P95",\r
+          "refId": "G",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }} P99",\r
+          "refId": "H",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Response Size By Destination",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "decbytes",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": "0",\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ]\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 12,\r
+        "x": 0,\r
+        "y": 47\r
+      },\r
+      "id": 76,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy=\"mutual_tls\", reporter=\"source\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service), 0.001)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }} (🔐mTLS)",\r
+          "refId": "A",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy!=\"mutual_tls\", reporter=\"source\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service), 0.001)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }}",\r
+          "refId": "B",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Bytes Sent on Outgoing TCP Connection",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "Bps",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": "0",\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ]\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 12,\r
+        "x": 12,\r
+        "y": 47\r
+      },\r
+      "id": 78,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "round(sum(irate(istio_tcp_received_bytes_total{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service), 0.001)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }} (🔐mTLS)",\r
+          "refId": "A",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "round(sum(irate(istio_tcp_received_bytes_total{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service), 0.001)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ destination_service }}",\r
+          "refId": "B",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Bytes Received from Outgoing TCP Connection",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "Bps",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": "0",\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ]\r
+    }\r
+  ],\r
+  "refresh": "10s",\r
+  "schemaVersion": 16,\r
+  "style": "dark",\r
+  "tags": [],\r
+  "templating": {\r
+    "list": [\r
+      {\r
+        "allValue": null,\r
+        "current": {},\r
+        "datasource": "Prometheus",\r
+        "hide": 0,\r
+        "includeAll": false,\r
+        "label": "Namespace",\r
+        "multi": false,\r
+        "name": "namespace",\r
+        "options": [],\r
+        "query": "query_result(sum(istio_requests_total) by (destination_workload_namespace) or sum(istio_tcp_sent_bytes_total) by (destination_workload_namespace))",\r
+        "refresh": 1,\r
+        "regex": "/.*_namespace=\"([^\"]*).*/",\r
+        "sort": 0,\r
+        "tagValuesQuery": "",\r
+        "tags": [],\r
+        "tagsQuery": "",\r
+        "type": "query",\r
+        "useTags": false\r
+      },\r
+      {\r
+        "allValue": null,\r
+        "current": {},\r
+        "datasource": "Prometheus",\r
+        "hide": 0,\r
+        "includeAll": false,\r
+        "label": "Workload",\r
+        "multi": false,\r
+        "name": "workload",\r
+        "options": [],\r
+        "query": "query_result((sum(istio_requests_total{destination_workload_namespace=~\"$namespace\"}) by (destination_workload) or sum(istio_requests_total{source_workload_namespace=~\"$namespace\"}) by (source_workload)) or (sum(istio_tcp_sent_bytes_total{destination_workload_namespace=~\"$namespace\"}) by (destination_workload) or sum(istio_tcp_sent_bytes_total{source_workload_namespace=~\"$namespace\"}) by (source_workload)))",\r
+        "refresh": 1,\r
+        "regex": "/.*workload=\"([^\"]*).*/",\r
+        "sort": 1,\r
+        "tagValuesQuery": "",\r
+        "tags": [],\r
+        "tagsQuery": "",\r
+        "type": "query",\r
+        "useTags": false\r
+      },\r
+      {\r
+        "allValue": null,\r
+        "current": {},\r
+        "datasource": "Prometheus",\r
+        "hide": 0,\r
+        "includeAll": true,\r
+        "label": "Inbound Workload Namespace",\r
+        "multi": true,\r
+        "name": "srcns",\r
+        "options": [],\r
+        "query": "query_result( sum(istio_requests_total{reporter=\"destination\", destination_workload=\"$workload\", destination_workload_namespace=~\"$namespace\"}) by (source_workload_namespace) or sum(istio_tcp_sent_bytes_total{reporter=\"destination\", destination_workload=\"$workload\", destination_workload_namespace=~\"$namespace\"}) by (source_workload_namespace))",\r
+        "refresh": 1,\r
+        "regex": "/.*namespace=\"([^\"]*).*/",\r
+        "sort": 2,\r
+        "tagValuesQuery": "",\r
+        "tags": [],\r
+        "tagsQuery": "",\r
+        "type": "query",\r
+        "useTags": false\r
+      },\r
+      {\r
+        "allValue": null,\r
+        "current": {},\r
+        "datasource": "Prometheus",\r
+        "hide": 0,\r
+        "includeAll": true,\r
+        "label": "Inbound Workload",\r
+        "multi": true,\r
+        "name": "srcwl",\r
+        "options": [],\r
+        "query": "query_result( sum(istio_requests_total{reporter=\"destination\", destination_workload=\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload_namespace=~\"$srcns\"}) by (source_workload) or sum(istio_tcp_sent_bytes_total{reporter=\"destination\", destination_workload=\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload_namespace=~\"$srcns\"}) by (source_workload))",\r
+        "refresh": 1,\r
+        "regex": "/.*workload=\"([^\"]*).*/",\r
+        "sort": 3,\r
+        "tagValuesQuery": "",\r
+        "tags": [],\r
+        "tagsQuery": "",\r
+        "type": "query",\r
+        "useTags": false\r
+      },\r
+      {\r
+        "allValue": null,\r
+        "current": {},\r
+        "datasource": "Prometheus",\r
+        "hide": 0,\r
+        "includeAll": true,\r
+        "label": "Destination Service",\r
+        "multi": true,\r
+        "name": "dstsvc",\r
+        "options": [],\r
+        "query": "query_result( sum(istio_requests_total{reporter=\"source\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\"}) by (destination_service) or sum(istio_tcp_sent_bytes_total{reporter=\"source\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\"}) by (destination_service))",\r
+        "refresh": 1,\r
+        "regex": "/.*destination_service=\"([^\"]*).*/",\r
+        "sort": 4,\r
+        "tagValuesQuery": "",\r
+        "tags": [],\r
+        "tagsQuery": "",\r
+        "type": "query",\r
+        "useTags": false\r
+      }\r
+    ]\r
+  },\r
+  "time": {\r
+    "from": "now-5m",\r
+    "to": "now"\r
+  },\r
+  "timepicker": {\r
+    "refresh_intervals": [\r
+      "5s",\r
+      "10s",\r
+      "30s",\r
+      "1m",\r
+      "5m",\r
+      "15m",\r
+      "30m",\r
+      "1h",\r
+      "2h",\r
+      "1d"\r
+    ],\r
+    "time_options": [\r
+      "5m",\r
+      "15m",\r
+      "1h",\r
+      "6h",\r
+      "12h",\r
+      "24h",\r
+      "2d",\r
+      "7d",\r
+      "30d"\r
+    ]\r
+  },\r
+  "timezone": "",\r
+  "title": "Istio Workload Dashboard",\r
+  "uid": "UbsSZTDik",\r
+  "version": 1\r
+}\r
+'\r
+---\r
+apiVersion: v1\r
+kind: ConfigMap\r
+metadata:\r
+  name: istio-grafana-configuration-dashboards-mixer-dashboard\r
+  namespace: istio-system\r
+  labels:\r
+    app: grafana\r
+    chart: grafana\r
+    heritage: Tiller\r
+    release: istio\r
+    istio: grafana\r
+data:\r
+  mixer-dashboard.json: '{\r
+  "__inputs": [\r
+    {\r
+      "name": "DS_PROMETHEUS",\r
+      "label": "Prometheus",\r
+      "description": "",\r
+      "type": "datasource",\r
+      "pluginId": "prometheus",\r
+      "pluginName": "Prometheus"\r
+    }\r
+  ],\r
+  "__requires": [\r
+    {\r
+      "type": "grafana",\r
+      "id": "grafana",\r
+      "name": "Grafana",\r
+      "version": "5.2.3"\r
+    },\r
+    {\r
+      "type": "panel",\r
+      "id": "graph",\r
+      "name": "Graph",\r
+      "version": "5.0.0"\r
+    },\r
+    {\r
+      "type": "datasource",\r
+      "id": "prometheus",\r
+      "name": "Prometheus",\r
+      "version": "5.0.0"\r
+    },\r
+    {\r
+      "type": "panel",\r
+      "id": "text",\r
+      "name": "Text",\r
+      "version": "5.0.0"\r
+    }\r
+  ],\r
+  "annotations": {\r
+    "list": [\r
+      {\r
+        "builtIn": 1,\r
+        "datasource": "-- Grafana --",\r
+        "enable": true,\r
+        "hide": true,\r
+        "iconColor": "rgba(0, 211, 255, 1)",\r
+        "limit": 100,\r
+        "name": "Annotations & Alerts",\r
+        "showIn": 0,\r
+        "type": "dashboard"\r
+      }\r
+    ]\r
+  },\r
+  "editable": false,\r
+  "gnetId": null,\r
+  "graphTooltip": 1,\r
+  "id": null,\r
+  "iteration": 1543881232533,\r
+  "links": [],\r
+  "panels": [\r
+    {\r
+      "content": "<center><h2>Deployed Versions</h2></center>",\r
+      "gridPos": {\r
+        "h": 3,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 0\r
+      },\r
+      "height": "40",\r
+      "id": 62,\r
+      "links": [],\r
+      "mode": "html",\r
+      "title": "",\r
+      "transparent": true,\r
+      "type": "text"\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 5,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 3\r
+      },\r
+      "id": 64,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(istio_build{component=\"mixer\"}) by (tag)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ tag }}",\r
+          "refId": "A"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Mixer Versions",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "content": "<center><h2>Resource Usage</h2></center>",\r
+      "gridPos": {\r
+        "h": 3,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 8\r
+      },\r
+      "height": "40",\r
+      "id": 29,\r
+      "links": [],\r
+      "mode": "html",\r
+      "title": "",\r
+      "transparent": true,\r
+      "type": "text"\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 6,\r
+        "x": 0,\r
+        "y": 11\r
+      },\r
+      "id": 5,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(process_virtual_memory_bytes{job=~\"istio-telemetry|istio-policy\"}) by (job)",\r
+          "format": "time_series",\r
+          "instant": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Virtual Memory ({{ job }})",\r
+          "refId": "I"\r
+        },\r
+        {\r
+          "expr": "sum(process_resident_memory_bytes{job=~\"istio-telemetry|istio-policy\"}) by (job)",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Resident Memory ({{ job }})",\r
+          "refId": "H"\r
+        },\r
+        {\r
+          "expr": "sum(go_memstats_heap_sys_bytes{job=~\"istio-telemetry|istio-policy\"}) by (job)",\r
+          "format": "time_series",\r
+          "hide": true,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "heap sys ({{ job }})",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "sum(go_memstats_heap_alloc_bytes{job=~\"istio-telemetry|istio-policy\"}) by (job)",\r
+          "format": "time_series",\r
+          "hide": true,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "heap alloc ({{ job }})",\r
+          "refId": "D"\r
+        },\r
+        {\r
+          "expr": "sum(go_memstats_alloc_bytes{job=~\"istio-telemetry|istio-policy\"}) by (job)",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Alloc ({{ job }})",\r
+          "refId": "F"\r
+        },\r
+        {\r
+          "expr": "sum(go_memstats_heap_inuse_bytes{job=~\"istio-telemetry|istio-policy\"}) by (job)",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Heap in-use ({{ job }})",\r
+          "refId": "E"\r
+        },\r
+        {\r
+          "expr": "sum(go_memstats_stack_inuse_bytes{job=~\"istio-telemetry|istio-policy\"}) by (job)",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Stack in-use ({{ job }})",\r
+          "refId": "G"\r
+        },\r
+        {\r
+          "expr": "sum(label_replace(container_memory_usage_bytes{container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*|istio-policy-.*\"}, \"service\", \"$1\" , \"pod_name\", \"(istio-telemetry|istio-policy)-.*\")) by (service)",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "{{ service }} total (k8s)",\r
+          "refId": "C"\r
+        },\r
+        {\r
+          "expr": "sum(label_replace(container_memory_usage_bytes{container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*|istio-policy-.*\"}, \"service\", \"$1\" , \"pod_name\", \"(istio-telemetry|istio-policy)-.*\")) by (container_name, service)",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "{{ service }} - {{ container_name }} (k8s)",\r
+          "refId": "B"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Memory",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "bytes",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 6,\r
+        "x": 6,\r
+        "y": 11\r
+      },\r
+      "id": 6,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "label_replace(sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*|istio-policy-.*\"}[1m])) by (pod_name), \"service\", \"$1\" , \"pod_name\", \"(istio-telemetry|istio-policy)-.*\")",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "{{ service }} total (k8s)",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "label_replace(sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*|istio-policy-.*\"}[1m])) by (container_name, pod_name), \"service\", \"$1\" , \"pod_name\", \"(istio-telemetry|istio-policy)-.*\")",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "{{ service }} - {{ container_name }} (k8s)",\r
+          "refId": "B"\r
+        },\r
+        {\r
+          "expr": "sum(irate(process_cpu_seconds_total{job=~\"istio-telemetry|istio-policy\"}[1m])) by (job)",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "{{ job }} (self-reported)",\r
+          "refId": "C"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "CPU",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 6,\r
+        "x": 12,\r
+        "y": 11\r
+      },\r
+      "id": 7,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(process_open_fds{job=~\"istio-telemetry|istio-policy\"}) by (job)",\r
+          "format": "time_series",\r
+          "hide": true,\r
+          "instant": false,\r
+          "interval": "",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Open FDs ({{ job }})",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "sum(label_replace(container_fs_usage_bytes{container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*|istio-policy-.*\"}, \"service\", \"$1\" , \"pod_name\", \"(istio-telemetry|istio-policy)-.*\")) by (container_name, service)",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "{{ service }} - {{ container_name }}",\r
+          "refId": "B"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Disk",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "bytes",\r
+          "label": "",\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "decimals": null,\r
+          "format": "none",\r
+          "label": "",\r
+          "logBase": 1024,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 6,\r
+        "x": 18,\r
+        "y": 11\r
+      },\r
+      "id": 4,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": false,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(go_goroutines{job=~\"istio-telemetry|istio-policy\"}) by (job)",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Number of Goroutines ({{ job }})",\r
+          "refId": "A"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Goroutines",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": "",\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "content": "<center><h2>Mixer Overview</h2></center>",\r
+      "gridPos": {\r
+        "h": 3,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 18\r
+      },\r
+      "height": "40px",\r
+      "id": 30,\r
+      "links": [],\r
+      "mode": "html",\r
+      "title": "",\r
+      "transparent": true,\r
+      "type": "text"\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 6,\r
+        "x": 0,\r
+        "y": 21\r
+      },\r
+      "id": 9,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(rate(grpc_io_server_completed_rpcs[1m]))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "mixer (Total)",\r
+          "refId": "B"\r
+        },\r
+        {\r
+          "expr": "sum(rate(grpc_io_server_completed_rpcs[1m])) by (grpc_server_method)",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "mixer ({{ grpc_server_method }})",\r
+          "refId": "C"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Incoming Requests",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "ops",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 6,\r
+        "x": 6,\r
+        "y": 21\r
+      },\r
+      "id": 8,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [\r
+        {\r
+          "alias": "{}",\r
+          "yaxis": 1\r
+        }\r
+      ],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "histogram_quantile(0.5, sum(rate(grpc_io_server_server_latency_bucket{}[1m])) by (grpc_server_method, le))",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "{{ grpc_server_method }} 0.5",\r
+          "refId": "B"\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.9, sum(rate(grpc_io_server_server_latency_bucket{}[1m])) by (grpc_server_method, le))",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "{{ grpc_server_method }} 0.9",\r
+          "refId": "C"\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum(rate(grpc_io_server_server_latency_bucket{}[1m])) by (grpc_server_method, le))",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "{{ grpc_server_method }} 0.99",\r
+          "refId": "D"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Response Durations",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "ms",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 6,\r
+        "x": 12,\r
+        "y": 21\r
+      },\r
+      "id": 11,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(rate(grpc_server_handled_total{grpc_code=~\"Unknown|Unimplemented|Internal|DataLoss\"}[1m])) by (grpc_method)",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Mixer {{ grpc_method }}",\r
+          "refId": "B"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Server Error Rate (5xx responses)",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 6,\r
+        "x": 18,\r
+        "y": 21\r
+      },\r
+      "id": 12,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(irate(grpc_server_handled_total{grpc_code!=\"OK\",grpc_service=~\".*Mixer\"}[1m])) by (grpc_method)",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Mixer {{ grpc_method }}",\r
+          "refId": "B"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Non-successes (4xxs)",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "content": "<center><h2>Adapters and Config</h2></center>",\r
+      "gridPos": {\r
+        "h": 3,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 27\r
+      },\r
+      "id": 28,\r
+      "links": [],\r
+      "mode": "html",\r
+      "title": "",\r
+      "transparent": true,\r
+      "type": "text"\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 12,\r
+        "x": 0,\r
+        "y": 30\r
+      },\r
+      "id": 13,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(irate(mixer_runtime_dispatches_total{adapter=~\"$adapter\"}[1m])) by (adapter)",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "{{ adapter }}",\r
+          "refId": "A"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Adapter Dispatch Count",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 12,\r
+        "x": 12,\r
+        "y": 30\r
+      },\r
+      "id": 14,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "histogram_quantile(0.5, sum(irate(mixer_runtime_dispatch_duration_seconds_bucket{adapter=~\"$adapter\"}[1m])) by (adapter, le))",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "{{ adapter }} - p50",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.9, sum(irate(mixer_runtime_dispatch_duration_seconds_bucket{adapter=~\"$adapter\"}[1m])) by (adapter, le))",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "{{ adapter }} - p90 ",\r
+          "refId": "B"\r
+        },\r
+        {\r
+          "expr": "histogram_quantile(0.99, sum(irate(mixer_runtime_dispatch_duration_seconds_bucket{adapter=~\"$adapter\"}[1m])) by (adapter, le))",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "{{ adapter }} - p99",\r
+          "refId": "C"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Adapter Dispatch Duration",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 1,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "s",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 6,\r
+        "x": 0,\r
+        "y": 37\r
+      },\r
+      "id": 60,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "scalar(topk(1, max(mixer_config_rule_config_count) by (configID)))",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Rules",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "scalar(topk(1, max(mixer_config_rule_config_error_count) by (configID)))",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Config Errors",\r
+          "refId": "B"\r
+        },\r
+        {\r
+          "expr": "scalar(topk(1, max(mixer_config_rule_config_match_error_count) by (configID)))",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Match Errors",\r
+          "refId": "C"\r
+        },\r
+        {\r
+          "expr": "scalar(topk(1, max(mixer_config_unsatisfied_action_handler_count) by (configID)))",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Unsatisfied Actions",\r
+          "refId": "D"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Rules",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 6,\r
+        "x": 6,\r
+        "y": 37\r
+      },\r
+      "id": 56,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "scalar(topk(1, max(mixer_config_instance_config_count) by (configID)))",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Instances",\r
+          "refId": "A"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Instances in Latest Config",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 6,\r
+        "x": 12,\r
+        "y": 37\r
+      },\r
+      "id": 54,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "scalar(topk(1, max(mixer_config_handler_config_count) by (configID)))",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Handlers",\r
+          "refId": "A"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Handlers in Latest Config",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 6,\r
+        "x": 18,\r
+        "y": 37\r
+      },\r
+      "id": 58,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "scalar(topk(1, max(mixer_config_attribute_count) by (configID)))",\r
+          "format": "time_series",\r
+          "instant": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Attributes",\r
+          "refId": "A"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Attributes in Latest Config",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "content": "<center><h2>Individual Adapters</h2></center>",\r
+      "gridPos": {\r
+        "h": 3,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 44\r
+      },\r
+      "id": 23,\r
+      "links": [],\r
+      "mode": "html",\r
+      "title": "",\r
+      "transparent": true,\r
+      "type": "text"\r
+    },\r
+    {\r
+      "collapsed": false,\r
+      "gridPos": {\r
+        "h": 1,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 47\r
+      },\r
+      "id": 46,\r
+      "panels": [],\r
+      "repeat": "adapter",\r
+      "title": "$adapter Adapter",\r
+      "type": "row"\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 12,\r
+        "x": 0,\r
+        "y": 48\r
+      },\r
+      "id": 17,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "label_replace(irate(mixer_runtime_dispatches_total{adapter=~\"$adapter\"}[1m]),\"handler\", \"$1 ($3)\", \"handler\", \"(.*)\\\\.(.*)\\\\.(.*)\")",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "{{ handler }} (error: {{  error }})",\r
+          "refId": "A"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Dispatch Count By Handler",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 12,\r
+        "x": 12,\r
+        "y": 48\r
+      },\r
+      "id": 18,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "label_replace(histogram_quantile(0.5, sum(rate(mixer_runtime_dispatch_duration_seconds_bucket{adapter=~\"$adapter\"}[1m])) by (handler, error, le)),  \"handler_short\", \"$1 ($3)\", \"handler\", \"(.*)\\\\.(.*)\\\\.(.*)\")",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "p50 - {{ handler_short }} (error: {{ error }})",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "label_replace(histogram_quantile(0.9, sum(irate(mixer_runtime_dispatch_duration_seconds_bucket{adapter=~\"$adapter\"}[1m])) by (handler, error, le)),  \"handler_short\", \"$1 ($3)\", \"handler\", \"(.*)\\\\.(.*)\\\\.(.*)\")",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "p90 - {{ handler_short }} (error: {{ error }})",\r
+          "refId": "D"\r
+        },\r
+        {\r
+          "expr": "label_replace(histogram_quantile(0.99, sum(irate(mixer_runtime_dispatch_duration_seconds_bucket{adapter=~\"$adapter\"}[1m])) by (handler, error, le)),  \"handler_short\", \"$1 ($3)\", \"handler\", \"(.*)\\\\.(.*)\\\\.(.*)\")",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "p99 - {{ handler_short }} (error: {{ error }})",\r
+          "refId": "E"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeShift": null,\r
+      "title": "Dispatch Duration By Handler",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "s",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    }\r
+  ],\r
+  "refresh": "5s",\r
+  "schemaVersion": 16,\r
+  "style": "dark",\r
+  "tags": [],\r
+  "templating": {\r
+    "list": [\r
+      {\r
+        "allValue": null,\r
+        "current": {},\r
+        "datasource": "Prometheus",\r
+        "hide": 0,\r
+        "includeAll": true,\r
+        "label": "Adapter",\r
+        "multi": true,\r
+        "name": "adapter",\r
+        "options": [],\r
+        "query": "label_values(adapter)",\r
+        "refresh": 2,\r
+        "regex": "",\r
+        "sort": 1,\r
+        "tagValuesQuery": "",\r
+        "tags": [],\r
+        "tagsQuery": "",\r
+        "type": "query",\r
+        "useTags": false\r
+      }\r
+    ]\r
+  },\r
+  "time": {\r
+    "from": "now-5m",\r
+    "to": "now"\r
+  },\r
+  "timepicker": {\r
+    "refresh_intervals": [\r
+      "5s",\r
+      "10s",\r
+      "30s",\r
+      "1m",\r
+      "5m",\r
+      "15m",\r
+      "30m",\r
+      "1h",\r
+      "2h",\r
+      "1d"\r
+    ],\r
+    "time_options": [\r
+      "5m",\r
+      "15m",\r
+      "1h",\r
+      "6h",\r
+      "12h",\r
+      "24h",\r
+      "2d",\r
+      "7d",\r
+      "30d"\r
+    ]\r
+  },\r
+  "timezone": "",\r
+  "title": "Istio Mixer Dashboard",\r
+  "version": 4\r
+}\r
+'\r
+---\r
+apiVersion: v1\r
+kind: ConfigMap\r
+metadata:\r
+  name: istio-grafana-configuration-dashboards-pilot-dashboard\r
+  namespace: istio-system\r
+  labels:\r
+    app: grafana\r
+    chart: grafana\r
+    heritage: Tiller\r
+    release: istio\r
+    istio: grafana\r
+data:\r
+  pilot-dashboard.json: '{\r
+  "annotations": {\r
+    "list": [\r
+      {\r
+        "builtIn": 1,\r
+        "datasource": "-- Grafana --",\r
+        "enable": true,\r
+        "hide": true,\r
+        "iconColor": "rgba(0, 211, 255, 1)",\r
+        "name": "Annotations & Alerts",\r
+        "type": "dashboard"\r
+      }\r
+    ]\r
+  },\r
+  "editable": false,\r
+  "gnetId": null,\r
+  "graphTooltip": 1,\r
+  "id": 6,\r
+  "links": [],\r
+  "panels": [\r
+    {\r
+      "collapsed": false,\r
+      "gridPos": {\r
+        "h": 1,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 0\r
+      },\r
+      "id": 60,\r
+      "panels": [],\r
+      "title": "Deployed Versions",\r
+      "type": "row"\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 5,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 1\r
+      },\r
+      "id": 56,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(istio_build{component=\"pilot\"}) by (tag)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ tag }}",\r
+          "refId": "A"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Pilot Versions",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "collapsed": false,\r
+      "gridPos": {\r
+        "h": 1,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 6\r
+      },\r
+      "id": 62,\r
+      "panels": [],\r
+      "title": "Resource Usage",\r
+      "type": "row"\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 6,\r
+        "x": 0,\r
+        "y": 7\r
+      },\r
+      "id": 5,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "process_virtual_memory_bytes{job=\"pilot\"}",\r
+          "format": "time_series",\r
+          "instant": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Virtual Memory",\r
+          "refId": "I",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "process_resident_memory_bytes{job=\"pilot\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Resident Memory",\r
+          "refId": "H",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "go_memstats_heap_sys_bytes{job=\"pilot\"}",\r
+          "format": "time_series",\r
+          "hide": true,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "heap sys",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "go_memstats_heap_alloc_bytes{job=\"pilot\"}",\r
+          "format": "time_series",\r
+          "hide": true,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "heap alloc",\r
+          "refId": "D"\r
+        },\r
+        {\r
+          "expr": "go_memstats_alloc_bytes{job=\"pilot\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Alloc",\r
+          "refId": "F",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "go_memstats_heap_inuse_bytes{job=\"pilot\"}",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Heap in-use",\r
+          "refId": "E",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "go_memstats_stack_inuse_bytes{job=\"pilot\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Stack in-use",\r
+          "refId": "G",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "sum(container_memory_usage_bytes{container_name=~\"discovery|istio-proxy\", pod_name=~\"istio-pilot-.*\"})",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Total (k8s)",\r
+          "refId": "C",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "container_memory_usage_bytes{container_name=~\"discovery|istio-proxy\", pod_name=~\"istio-pilot-.*\"}",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "{{ container_name }} (k8s)",\r
+          "refId": "B",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Memory",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "bytes",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 6,\r
+        "x": 6,\r
+        "y": 7\r
+      },\r
+      "id": 6,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=~\"discovery|istio-proxy\", pod_name=~\"istio-pilot-.*\"}[1m]))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Total (k8s)",\r
+          "refId": "A",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=~\"discovery|istio-proxy\", pod_name=~\"istio-pilot-.*\"}[1m])) by (container_name)",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "{{ container_name }} (k8s)",\r
+          "refId": "B",\r
+          "step": 2\r
+        },\r
+        {\r
+          "expr": "irate(process_cpu_seconds_total{job=\"pilot\"}[1m])",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 2,\r
+          "legendFormat": "pilot (self-reported)",\r
+          "refId": "C",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "CPU",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 6,\r
+        "x": 12,\r
+        "y": 7\r
+      },\r
+      "id": 7,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "process_open_fds{job=\"pilot\"}",\r
+          "format": "time_series",\r
+          "hide": true,\r
+          "instant": false,\r
+          "interval": "",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Open FDs (pilot)",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "container_fs_usage_bytes{container_name=~\"discovery|istio-proxy\", pod_name=~\"istio-pilot-.*\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "{{ container_name }}",\r
+          "refId": "B",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Disk",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "bytes",\r
+          "label": "",\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "decimals": null,\r
+          "format": "none",\r
+          "label": "",\r
+          "logBase": 1024,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 6,\r
+        "x": 18,\r
+        "y": 7\r
+      },\r
+      "id": 4,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": false,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "go_goroutines{job=\"pilot\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Number of Goroutines",\r
+          "refId": "A",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Goroutines",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": "",\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "collapsed": false,\r
+      "gridPos": {\r
+        "h": 1,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 14\r
+      },\r
+      "id": 58,\r
+      "panels": [],\r
+      "title": "Pilot Push Information",\r
+      "type": "row"\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": true,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "description": "Shows pilot pushes",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 8,\r
+        "w": 12,\r
+        "x": 0,\r
+        "y": 15\r
+      },\r
+      "id": 622,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": false,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null as zero",\r
+      "paceLength": 10,\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": true,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(rate(pilot_xds_pushes{type!~\".*_senderr\"}[1m])) by (type)",\r
+          "format": "time_series",\r
+          "instant": false,\r
+          "interval": "",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ type }}",\r
+          "refId": "B",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Pilot Pushes",\r
+      "tooltip": {\r
+        "shared": false,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": [\r
+          "total"\r
+        ]\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "ops",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": "0",\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "description": "Captures a variety of pilot errors",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 8,\r
+        "w": 12,\r
+        "x": 12,\r
+        "y": 15\r
+      },\r
+      "id": 67,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "label_replace(sum(pilot_xds_cds_reject{job=\"pilot\"}) by (node, err), \"node\", \"$1\", \"node\", \".*~.*~(.*)~.*\")",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Rejected CDS Configs - {{ node }}: {{ err }}",\r
+          "refId": "C"\r
+        },\r
+        {\r
+          "expr": "pilot_xds_eds_reject{job=\"pilot\"}",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Rejected EDS Configs",\r
+          "refId": "D"\r
+        },\r
+        {\r
+          "expr": "rate(pilot_xds_write_timeout{job=\"pilot\"}[1m])",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Write Timeouts",\r
+          "refId": "F"\r
+        },\r
+        {\r
+          "expr": "rate(pilot_xds_push_timeout{job=\"pilot\"}[1m])",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Push Timeouts",\r
+          "refId": "G"\r
+        },\r
+        {\r
+          "expr": "sum(rate(pilot_xds_push_errors{job=\"pilot\"}[1m]))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Push Errors ({{ type }})",\r
+          "refId": "I"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Pilot Errors",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "collapsed": false,\r
+      "gridPos": {\r
+        "h": 1,\r
+        "w": 24,\r
+        "x": 0,\r
+        "y": 23\r
+      },\r
+      "id": 64,\r
+      "panels": [],\r
+      "title": "xDS",\r
+      "type": "row"\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 8,\r
+        "x": 0,\r
+        "y": 24\r
+      },\r
+      "id": 40,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(irate(envoy_cluster_update_success{cluster_name=\"xds-grpc\"}[1m]))",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "XDS GRPC Successes",\r
+          "refId": "C"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Updates",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "ops",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "ops",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 8,\r
+        "x": 8,\r
+        "y": 24\r
+      },\r
+      "id": 42,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "round(sum(rate(envoy_cluster_update_attempt{cluster_name=\"xds-grpc\"}[1m])) - sum(rate(envoy_cluster_update_success{cluster_name=\"xds-grpc\"}[1m])))",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "XDS GRPC ",\r
+          "refId": "A",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Failures",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "ops",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": false\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 6,\r
+        "w": 8,\r
+        "x": 16,\r
+        "y": 24\r
+      },\r
+      "id": 41,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(envoy_cluster_upstream_cx_active{cluster_name=\"xds-grpc\"})",\r
+          "format": "time_series",\r
+          "intervalFactor": 2,\r
+          "legendFormat": "Pilot (XDS GRPC)",\r
+          "refId": "C",\r
+          "step": 2\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Active Connections",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 8,\r
+        "w": 8,\r
+        "x": 0,\r
+        "y": 30\r
+      },\r
+      "id": 45,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "pilot_conflict_inbound_listener{job=\"pilot\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Inbound Listeners",\r
+          "refId": "B"\r
+        },\r
+        {\r
+          "expr": "pilot_conflict_outbound_listener_http_over_current_tcp{job=\"pilot\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Outbound Listeners (http over current tcp)",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "pilot_conflict_outbound_listener_tcp_over_current_tcp{job=\"pilot\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Outbound Listeners (tcp over current tcp)",\r
+          "refId": "C"\r
+        },\r
+        {\r
+          "expr": "pilot_conflict_outbound_listener_tcp_over_current_http{job=\"pilot\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Outbound Listeners (tcp over current http)",\r
+          "refId": "D"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Conflicts",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 8,\r
+        "w": 8,\r
+        "x": 8,\r
+        "y": 30\r
+      },\r
+      "id": 47,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "pilot_virt_services{job=\"pilot\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Virtual Services",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "pilot_services{job=\"pilot\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Services",\r
+          "refId": "B"\r
+        },\r
+        {\r
+          "expr": "label_replace(sum(pilot_xds_cds_reject{job=\"pilot\"}) by (node, err), \"node\", \"$1\", \"node\", \".*~.*~(.*)~.*\")",\r
+          "format": "time_series",\r
+          "hide": true,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Rejected CDS Configs - {{ node }}: {{ err }}",\r
+          "refId": "C"\r
+        },\r
+        {\r
+          "expr": "pilot_xds_eds_reject{job=\"pilot\"}",\r
+          "format": "time_series",\r
+          "hide": true,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Rejected EDS Configs",\r
+          "refId": "D"\r
+        },\r
+        {\r
+          "expr": "pilot_xds{job=\"pilot\"}",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Connected Endpoints",\r
+          "refId": "E"\r
+        },\r
+        {\r
+          "expr": "rate(pilot_xds_write_timeout{job=\"pilot\"}[1m])",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Write Timeouts",\r
+          "refId": "F"\r
+        },\r
+        {\r
+          "expr": "rate(pilot_xds_push_timeout{job=\"pilot\"}[1m])",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Push Timeouts",\r
+          "refId": "G"\r
+        },\r
+        {\r
+          "expr": "rate(pilot_xds_pushes{job=\"pilot\"}[1m])",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Pushes ({{ type }})",\r
+          "refId": "H"\r
+        },\r
+        {\r
+          "expr": "rate(pilot_xds_push_errors{job=\"pilot\"}[1m])",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "Push Errors ({{ type }})",\r
+          "refId": "I"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "ADS Monitoring",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 8,\r
+        "w": 8,\r
+        "x": 16,\r
+        "y": 30\r
+      },\r
+      "id": 49,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "label_replace(sum(pilot_xds_cds_reject{job=\"pilot\"}) by (node, err), \"node\", \"$1\", \"node\", \".*~.*~(.*)~.*\")",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ node }}  ({{ err }})",\r
+          "refId": "A"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Rejected CDS Configs",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 8,\r
+        "x": 0,\r
+        "y": 38\r
+      },\r
+      "id": 52,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "label_replace(sum(pilot_xds_eds_reject{job=\"pilot\"}) by (node, err), \"node\", \"$1\", \"node\", \".*~.*~(.*)~.*\")",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ node }} ({{err}})",\r
+          "refId": "A"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Rejected EDS Configs",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 8,\r
+        "x": 8,\r
+        "y": 38\r
+      },\r
+      "id": 54,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "label_replace(sum(pilot_xds_lds_reject{job=\"pilot\"}) by (node, err), \"node\", \"$1\", \"node\", \".*~.*~(.*)~.*\")",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ node }} ({{err}})",\r
+          "refId": "A"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Rejected LDS Configs",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 8,\r
+        "x": 16,\r
+        "y": 38\r
+      },\r
+      "id": 53,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "label_replace(sum(pilot_xds_rds_reject{job=\"pilot\"}) by (node, err), \"node\", \"$1\", \"node\", \".*~.*~(.*)~.*\")",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ node }} ({{err}})",\r
+          "refId": "A"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Rejected RDS Configs",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {\r
+        "outbound|80||default-http-backend.kube-system.svc.cluster.local": "rgba(255, 255, 255, 0.97)"\r
+      },\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "Prometheus",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 7,\r
+        "w": 8,\r
+        "x": 0,\r
+        "y": 45\r
+      },\r
+      "id": 51,\r
+      "legend": {\r
+        "avg": false,\r
+        "current": false,\r
+        "max": false,\r
+        "min": false,\r
+        "show": true,\r
+        "total": false,\r
+        "values": false\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [\r
+        {\r
+          "alias": "outbound|80||default-http-backend.kube-system.svc.cluster.local",\r
+          "yaxis": 1\r
+        }\r
+      ],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(pilot_xds_eds_instances{job=\"pilot\"}) by (cluster)",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "legendFormat": "{{ cluster }}",\r
+          "refId": "A"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "EDS Instances",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    }\r
+  ],\r
+  "refresh": "5s",\r
+  "schemaVersion": 18,\r
+  "style": "dark",\r
+  "tags": [],\r
+  "templating": {\r
+    "list": []\r
+  },\r
+  "time": {\r
+    "from": "now-5m",\r
+    "to": "now"\r
+  },\r
+  "timepicker": {\r
+    "refresh_intervals": [\r
+      "5s",\r
+      "10s",\r
+      "30s",\r
+      "1m",\r
+      "5m",\r
+      "15m",\r
+      "30m",\r
+      "1h",\r
+      "2h",\r
+      "1d"\r
+    ],\r
+    "time_options": [\r
+      "5m",\r
+      "15m",\r
+      "1h",\r
+      "6h",\r
+      "12h",\r
+      "24h",\r
+      "2d",\r
+      "7d",\r
+      "30d"\r
+    ]\r
+  },\r
+  "timezone": "browser",\r
+  "title": "Istio Pilot Dashboard",\r
+  "uid": "3--MLVZZk",\r
+  "version": 1\r
+}\r
+'\r
+---\r
+\r
+---\r
+# Source: istio/charts/grafana/templates/configmap.yaml\r
+apiVersion: v1\r
+kind: ConfigMap\r
+metadata:\r
+  name: istio-grafana\r
+  namespace: istio-system\r
+  labels:\r
+    app: grafana\r
+    chart: grafana\r
+    heritage: Tiller\r
+    release: istio\r
+    istio: grafana\r
+data:\r
+  datasources.yaml: |\r
+    apiVersion: 1\r
+    datasources:\r
+    - access: proxy\r
+      editable: true\r
+      isDefault: true\r
+      jsonData:\r
+        timeInterval: 5s\r
+      name: Prometheus\r
+      orgId: 1\r
+      type: prometheus\r
+      url: http://prometheus:9090\r
+    \r
+  dashboardproviders.yaml: |\r
+    apiVersion: 1\r
+    providers:\r
+    - disableDeletion: false\r
+      folder: istio\r
+      name: istio\r
+      options:\r
+        path: /var/lib/grafana/dashboards/istio\r
+      orgId: 1\r
+      type: file\r
+    \r
+---\r
+# Source: istio/charts/kiali/templates/configmap.yaml\r
+apiVersion: v1\r
+kind: ConfigMap\r
+metadata:\r
+  name: kiali\r
+  namespace: istio-system\r
+  labels:\r
+    app: kiali\r
+    chart: kiali\r
+    heritage: Tiller\r
+    release: istio\r
+data:\r
+  config.yaml: |\r
+    istio_namespace: istio-system\r
+    auth:\r
+      strategy: "login"\r
+    server:\r
+      port: 20001\r
+      web_root: /kiali\r
+    external_services:\r
+      tracing:\r
+        url: \r
+      grafana:\r
+        url: \r
+      prometheus:\r
+        url: http://prometheus:9090\r
+\r
+---\r
+# Source: istio/charts/prometheus/templates/configmap.yaml\r
+apiVersion: v1\r
+kind: ConfigMap\r
+metadata:\r
+  name: prometheus\r
+  namespace: istio-system\r
+  labels:\r
+    app: prometheus\r
+    chart: prometheus\r
+    heritage: Tiller\r
+    release: istio\r
+data:\r
+  prometheus.yml: |-\r
+    global:\r
+      scrape_interval: 15s\r
+    scrape_configs:\r
+\r
+    - job_name: 'istio-mesh'\r
+      kubernetes_sd_configs:\r
+      - role: endpoints\r
+        namespaces:\r
+          names:\r
+          - istio-system\r
+\r
+      relabel_configs:\r
+      - source_labels: [__meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]\r
+        action: keep\r
+        regex: istio-telemetry;prometheus\r
+\r
+    # Scrape config for envoy stats\r
+    - job_name: 'envoy-stats'\r
+      metrics_path: /stats/prometheus\r
+      kubernetes_sd_configs:\r
+      - role: pod\r
+\r
+      relabel_configs:\r
+      - source_labels: [__meta_kubernetes_pod_container_port_name]\r
+        action: keep\r
+        regex: '.*-envoy-prom'\r
+      - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]\r
+        action: replace\r
+        regex: ([^:]+)(?::\d+)?;(\d+)\r
+        replacement: $1:15090\r
+        target_label: __address__\r
+      - action: labelmap\r
+        regex: __meta_kubernetes_pod_label_(.+)\r
+      - source_labels: [__meta_kubernetes_namespace]\r
+        action: replace\r
+        target_label: namespace\r
+      - source_labels: [__meta_kubernetes_pod_name]\r
+        action: replace\r
+        target_label: pod_name\r
+\r
+    - job_name: 'istio-policy'\r
+      kubernetes_sd_configs:\r
+      - role: endpoints\r
+        namespaces:\r
+          names:\r
+          - istio-system\r
+\r
+\r
+      relabel_configs:\r
+      - source_labels: [__meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]\r
+        action: keep\r
+        regex: istio-policy;http-monitoring\r
+\r
+    - job_name: 'istio-telemetry'\r
+      kubernetes_sd_configs:\r
+      - role: endpoints\r
+        namespaces:\r
+          names:\r
+          - istio-system\r
+\r
+      relabel_configs:\r
+      - source_labels: [__meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]\r
+        action: keep\r
+        regex: istio-telemetry;http-monitoring\r
+\r
+    - job_name: 'pilot'\r
+      kubernetes_sd_configs:\r
+      - role: endpoints\r
+        namespaces:\r
+          names:\r
+          - istio-system\r
+\r
+      relabel_configs:\r
+      - source_labels: [__meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]\r
+        action: keep\r
+        regex: istio-pilot;http-monitoring\r
+\r
+    - job_name: 'galley'\r
+      kubernetes_sd_configs:\r
+      - role: endpoints\r
+        namespaces:\r
+          names:\r
+          - istio-system\r
+\r
+      relabel_configs:\r
+      - source_labels: [__meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]\r
+        action: keep\r
+        regex: istio-galley;http-monitoring\r
+\r
+    - job_name: 'citadel'\r
+      kubernetes_sd_configs:\r
+      - role: endpoints\r
+        namespaces:\r
+          names:\r
+          - istio-system\r
+\r
+      relabel_configs:\r
+      - source_labels: [__meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]\r
+        action: keep\r
+        regex: istio-citadel;http-monitoring\r
+\r
+    # scrape config for API servers\r
+    - job_name: 'kubernetes-apiservers'\r
+      kubernetes_sd_configs:\r
+      - role: endpoints\r
+        namespaces:\r
+          names:\r
+          - default\r
+      scheme: https\r
+      tls_config:\r
+        ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt\r
+      bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token\r
+      relabel_configs:\r
+      - source_labels: [__meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]\r
+        action: keep\r
+        regex: kubernetes;https\r
+\r
+    # scrape config for nodes (kubelet)\r
+    - job_name: 'kubernetes-nodes'\r
+      scheme: https\r
+      tls_config:\r
+        ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt\r
+      bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token\r
+      kubernetes_sd_configs:\r
+      - role: node\r
+      relabel_configs:\r
+      - action: labelmap\r
+        regex: __meta_kubernetes_node_label_(.+)\r
+      - target_label: __address__\r
+        replacement: kubernetes.default.svc:443\r
+      - source_labels: [__meta_kubernetes_node_name]\r
+        regex: (.+)\r
+        target_label: __metrics_path__\r
+        replacement: /api/v1/nodes/${1}/proxy/metrics\r
+\r
+    # Scrape config for Kubelet cAdvisor.\r
+    #\r
+    # This is required for Kubernetes 1.7.3 and later, where cAdvisor metrics\r
+    # (those whose names begin with 'container_') have been removed from the\r
+    # Kubelet metrics endpoint.  This job scrapes the cAdvisor endpoint to\r
+    # retrieve those metrics.\r
+    #\r
+    # In Kubernetes 1.7.0-1.7.2, these metrics are only exposed on the cAdvisor\r
+    # HTTP endpoint; use "replacement: /api/v1/nodes/${1}:4194/proxy/metrics"\r
+    # in that case (and ensure cAdvisor's HTTP server hasn't been disabled with\r
+    # the --cadvisor-port=0 Kubelet flag).\r
+    #\r
+    # This job is not necessary and should be removed in Kubernetes 1.6 and\r
+    # earlier versions, or it will cause the metrics to be scraped twice.\r
+    - job_name: 'kubernetes-cadvisor'\r
+      scheme: https\r
+      tls_config:\r
+        ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt\r
+      bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token\r
+      kubernetes_sd_configs:\r
+      - role: node\r
+      relabel_configs:\r
+      - action: labelmap\r
+        regex: __meta_kubernetes_node_label_(.+)\r
+      - target_label: __address__\r
+        replacement: kubernetes.default.svc:443\r
+      - source_labels: [__meta_kubernetes_node_name]\r
+        regex: (.+)\r
+        target_label: __metrics_path__\r
+        replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor\r
+\r
+    # scrape config for service endpoints.\r
+    - job_name: 'kubernetes-service-endpoints'\r
+      kubernetes_sd_configs:\r
+      - role: endpoints\r
+      relabel_configs:\r
+      - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape]\r
+        action: keep\r
+        regex: true\r
+      - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]\r
+        action: replace\r
+        target_label: __scheme__\r
+        regex: (https?)\r
+      - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]\r
+        action: replace\r
+        target_label: __metrics_path__\r
+        regex: (.+)\r
+      - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]\r
+        action: replace\r
+        target_label: __address__\r
+        regex: ([^:]+)(?::\d+)?;(\d+)\r
+        replacement: $1:$2\r
+      - action: labelmap\r
+        regex: __meta_kubernetes_service_label_(.+)\r
+      - source_labels: [__meta_kubernetes_namespace]\r
+        action: replace\r
+        target_label: kubernetes_namespace\r
+      - source_labels: [__meta_kubernetes_service_name]\r
+        action: replace\r
+        target_label: kubernetes_name\r
+\r
+    - job_name: 'kubernetes-pods'\r
+      kubernetes_sd_configs:\r
+      - role: pod\r
+      relabel_configs:  # If first two labels are present, pod should be scraped  by the istio-secure job.\r
+      - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]\r
+        action: keep\r
+        regex: true\r
+      # Keep target if there's no sidecar or if prometheus.io/scheme is explicitly set to "http"\r
+      - source_labels: [__meta_kubernetes_pod_annotation_sidecar_istio_io_status, __meta_kubernetes_pod_annotation_prometheus_io_scheme]\r
+        action: keep\r
+        regex: ((;.*)|(.*;http))\r
+      - source_labels: [__meta_kubernetes_pod_annotation_istio_mtls]\r
+        action: drop\r
+        regex: (true)\r
+      - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]\r
+        action: replace\r
+        target_label: __metrics_path__\r
+        regex: (.+)\r
+      - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]\r
+        action: replace\r
+        regex: ([^:]+)(?::\d+)?;(\d+)\r
+        replacement: $1:$2\r
+        target_label: __address__\r
+      - action: labelmap\r
+        regex: __meta_kubernetes_pod_label_(.+)\r
+      - source_labels: [__meta_kubernetes_namespace]\r
+        action: replace\r
+        target_label: namespace\r
+      - source_labels: [__meta_kubernetes_pod_name]\r
+        action: replace\r
+        target_label: pod_name\r
+\r
+    - job_name: 'kubernetes-pods-istio-secure'\r
+      scheme: https\r
+      tls_config:\r
+        ca_file: /etc/istio-certs/root-cert.pem\r
+        cert_file: /etc/istio-certs/cert-chain.pem\r
+        key_file: /etc/istio-certs/key.pem\r
+        insecure_skip_verify: true  # prometheus does not support secure naming.\r
+      kubernetes_sd_configs:\r
+      - role: pod\r
+      relabel_configs:\r
+      - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]\r
+        action: keep\r
+        regex: true\r
+      # sidecar status annotation is added by sidecar injector and\r
+      # istio_workload_mtls_ability can be specifically placed on a pod to indicate its ability to receive mtls traffic.\r
+      - source_labels: [__meta_kubernetes_pod_annotation_sidecar_istio_io_status, __meta_kubernetes_pod_annotation_istio_mtls]\r
+        action: keep\r
+        regex: (([^;]+);([^;]*))|(([^;]*);(true))\r
+      - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scheme]\r
+        action: drop\r
+        regex: (http)\r
+      - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]\r
+        action: replace\r
+        target_label: __metrics_path__\r
+        regex: (.+)\r
+      - source_labels: [__address__]  # Only keep address that is host:port\r
+        action: keep    # otherwise an extra target with ':443' is added for https scheme\r
+        regex: ([^:]+):(\d+)\r
+      - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]\r
+        action: replace\r
+        regex: ([^:]+)(?::\d+)?;(\d+)\r
+        replacement: $1:$2\r
+        target_label: __address__\r
+      - action: labelmap\r
+        regex: __meta_kubernetes_pod_label_(.+)\r
+      - source_labels: [__meta_kubernetes_namespace]\r
+        action: replace\r
+        target_label: namespace\r
+      - source_labels: [__meta_kubernetes_pod_name]\r
+        action: replace\r
+        target_label: pod_name\r
+---\r
+# Source: istio/charts/security/templates/configmap.yaml\r
+apiVersion: v1\r
+kind: ConfigMap\r
+metadata:\r
+  name: istio-security-custom-resources\r
+  namespace: istio-system\r
+  labels:\r
+    app: security\r
+    chart: security\r
+    heritage: Tiller\r
+    release: istio\r
+    istio: citadel\r
+data:\r
+  custom-resources.yaml: |-\r
+    # Authentication policy to enable permissive mode for all services (that have sidecar) in the mesh.\r
+    apiVersion: "authentication.istio.io/v1alpha1"\r
+    kind: "MeshPolicy"\r
+    metadata:\r
+      name: "default"\r
+      labels:\r
+        app: security\r
+        chart: security\r
+        heritage: Tiller\r
+        release: istio\r
+    spec:\r
+      peers:\r
+      - mtls:\r
+          mode: PERMISSIVE\r
+  run.sh: |-\r
+    #!/bin/sh\r
+\r
+    set -x\r
+\r
+    if [ "$#" -ne "1" ]; then\r
+        echo "first argument should be path to custom resource yaml"\r
+        exit 1\r
+    fi\r
+\r
+    pathToResourceYAML=${1}\r
+\r
+    kubectl get validatingwebhookconfiguration istio-galley 2>/dev/null\r
+    if [ "$?" -eq 0 ]; then\r
+        echo "istio-galley validatingwebhookconfiguration found - waiting for istio-galley deployment to be ready"\r
+        while true; do\r
+            kubectl -n istio-system get deployment istio-galley 2>/dev/null\r
+            if [ "$?" -eq 0 ]; then\r
+                break\r
+            fi\r
+            sleep 1\r
+        done\r
+        kubectl -n istio-system rollout status deployment istio-galley\r
+        if [ "$?" -ne 0 ]; then\r
+            echo "istio-galley deployment rollout status check failed"\r
+            exit 1\r
+        fi\r
+        echo "istio-galley deployment ready for configuration validation"\r
+    fi\r
+    sleep 5\r
+    kubectl apply -f ${pathToResourceYAML}\r
+\r
+\r
+---\r
+# Source: istio/templates/configmap.yaml\r
+\r
+apiVersion: v1\r
+kind: ConfigMap\r
+metadata:\r
+  name: istio\r
+  namespace: istio-system\r
+  labels:\r
+    app: istio\r
+    chart: istio\r
+    heritage: Tiller\r
+    release: istio\r
+data:\r
+  mesh: |-\r
+    # Set the following variable to true to disable policy checks by the Mixer.\r
+    # Note that metrics will still be reported to the Mixer.\r
+    disablePolicyChecks: false\r
+\r
+    # Set enableTracing to false to disable request tracing.\r
+    enableTracing: true\r
+\r
+    # Set accessLogFile to empty string to disable access log.\r
+    accessLogFile: "/dev/stdout"\r
+\r
+    # If accessLogEncoding is TEXT, value will be used directly as the log format\r
+    # example: "[%START_TIME%] %REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%\n"\r
+    # If AccessLogEncoding is JSON, value will be parsed as map[string]string\r
+    # example: '{"start_time": "%START_TIME%", "req_method": "%REQ(:METHOD)%"}'\r
+    # Leave empty to use default log format\r
+    accessLogFormat: ""\r
+\r
+    # Set accessLogEncoding to JSON or TEXT to configure sidecar access log\r
+    accessLogEncoding: 'TEXT'\r
+    mixerCheckServer: istio-policy.istio-system.svc.cluster.local:9091\r
+    mixerReportServer: istio-telemetry.istio-system.svc.cluster.local:9091\r
+    # policyCheckFailOpen allows traffic in cases when the mixer policy service cannot be reached.\r
+    # Default is false which means the traffic is denied when the client is unable to connect to Mixer.\r
+    policyCheckFailOpen: false\r
+    # Let Pilot give ingresses the public IP of the Istio ingressgateway\r
+    ingressService: istio-ingressgateway\r
+\r
+    # Default connect timeout for dynamic clusters generated by Pilot and returned via XDS\r
+    connectTimeout: 10s\r
+\r
+    # DNS refresh rate for Envoy clusters of type STRICT_DNS\r
+    dnsRefreshRate: 300s\r
+\r
+    # Unix Domain Socket through which envoy communicates with NodeAgent SDS to get\r
+    # key/cert for mTLS. Use secret-mount files instead of SDS if set to empty.\r
+    sdsUdsPath:\r
+\r
+    # This flag is used by secret discovery service(SDS).\r
+    # If set to true(prerequisite: https://kubernetes.io/docs/concepts/storage/volumes/#projected), Istio will inject volumes mount \r
+    # for k8s service account JWT, so that K8s API server mounts k8s service account JWT to envoy container, which \r
+    # will be used to generate key/cert eventually. This isn't supported for non-k8s case.\r
+    enableSdsTokenMount: false\r
+\r
+    # This flag is used by secret discovery service(SDS).\r
+    # If set to true, envoy will fetch normal k8s service account JWT from '/var/run/secrets/kubernetes.io/serviceaccount/token' \r
+    # (https://kubernetes.io/docs/tasks/access-application-cluster/access-cluster/#accessing-the-api-from-a-pod) \r
+    # and pass to sds server, which will be used to request key/cert eventually.\r
+    # this flag is ignored if enableSdsTokenMount is set.\r
+    # This isn't supported for non-k8s case.\r
+    sdsUseK8sSaJwt: false\r
+\r
+    # The trust domain corresponds to the trust root of a system.\r
+    # Refer to https://github.com/spiffe/spiffe/blob/master/standards/SPIFFE-ID.md#21-trust-domain\r
+    trustDomain:\r
+\r
+    # Set the default behavior of the sidecar for handling outbound traffic from the application:\r
+    # ALLOW_ANY - outbound traffic to unknown destinations will be allowed, in case there are no\r
+    #   services or ServiceEntries for the destination port\r
+    # REGISTRY_ONLY - restrict outbound traffic to services defined in the service registry as well\r
+    #   as those defined through ServiceEntries\r
+    outboundTrafficPolicy:\r
+      mode: ALLOW_ANY\r
+\r
+    localityLbSetting:\r
+      {}\r
+\r
+\r
+    # The namespace to treat as the administrative root namespace for istio\r
+    # configuration.\r
+    rootNamespace: istio-system\r
+    configSources:\r
+    - address: istio-galley.istio-system.svc:9901\r
+\r
+    defaultConfig:\r
+      #\r
+      # TCP connection timeout between Envoy & the application, and between Envoys.  Used for static clusters\r
+      # defined in Envoy's configuration file\r
+      connectTimeout: 10s\r
+      #\r
+      ### ADVANCED SETTINGS #############\r
+      # Where should envoy's configuration be stored in the istio-proxy container\r
+      configPath: "/etc/istio/proxy"\r
+      binaryPath: "/usr/local/bin/envoy"\r
+      # The pseudo service name used for Envoy.\r
+      serviceCluster: istio-proxy\r
+      # These settings that determine how long an old Envoy\r
+      # process should be kept alive after an occasional reload.\r
+      drainDuration: 45s\r
+      parentShutdownDuration: 1m0s\r
+      #\r
+      # The mode used to redirect inbound connections to Envoy. This setting\r
+      # has no effect on outbound traffic: iptables REDIRECT is always used for\r
+      # outbound connections.\r
+      # If "REDIRECT", use iptables REDIRECT to NAT and redirect to Envoy.\r
+      # The "REDIRECT" mode loses source addresses during redirection.\r
+      # If "TPROXY", use iptables TPROXY to redirect to Envoy.\r
+      # The "TPROXY" mode preserves both the source and destination IP\r
+      # addresses and ports, so that they can be used for advanced filtering\r
+      # and manipulation.\r
+      # The "TPROXY" mode also configures the sidecar to run with the\r
+      # CAP_NET_ADMIN capability, which is required to use TPROXY.\r
+      #interceptionMode: REDIRECT\r
+      #\r
+      # Port where Envoy listens (on local host) for admin commands\r
+      # You can exec into the istio-proxy container in a pod and\r
+      # curl the admin port (curl http://localhost:15000/) to obtain\r
+      # diagnostic information from Envoy. See\r
+      # https://lyft.github.io/envoy/docs/operations/admin.html\r
+      # for more details\r
+      proxyAdminPort: 15000\r
+      #\r
+      # Set concurrency to a specific number to control the number of Proxy worker threads.\r
+      # If set to 0 (default), then start worker thread for each CPU thread/core.\r
+      concurrency: 2\r
+      #\r
+      tracing:\r
+        zipkin:\r
+          # Address of the Zipkin collector\r
+          address: zipkin.istio-system:9411\r
+      #\r
+      # Mutual TLS authentication between sidecars and istio control plane.\r
+      controlPlaneAuthPolicy: NONE\r
+      #\r
+      # Address where istio Pilot service is running\r
+      discoveryAddress: istio-pilot.istio-system:15010\r
+\r
+  # Configuration file for the mesh networks to be used by the Split Horizon EDS.\r
+  meshNetworks: |-\r
+    networks: {}\r
+\r
+---\r
+# Source: istio/templates/sidecar-injector-configmap.yaml\r
+\r
+apiVersion: v1\r
+kind: ConfigMap\r
+metadata:\r
+  name: istio-sidecar-injector\r
+  namespace: istio-system\r
+  labels:\r
+    app: istio\r
+    chart: istio\r
+    heritage: Tiller\r
+    release: istio\r
+    istio: sidecar-injector\r
+data:\r
+  values: |-\r
+    {"certmanager":{"enabled":false},"galley":{"enabled":true,"global":{"arch":{"amd64":2,"ppc64le":2,"arm64":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":false,"enableHelmTest":false,"enableTracing":true,"hub":"iecedge","imagePullPolicy":"IfNotPresent","imagePullSecrets":null,"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"/dev/stdout","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"envoyMetricsService":{"enabled":false,"host":null,"port":null},"envoyStatsd":{"enabled":false,"host":null,"port":null},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2-arm64","includeIPRanges":"*","includeInboundPorts":"*","kubevirtInterfaces":"","logLevel":"","privileged":false,"readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"10m","memory":"40Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init-arm64"},"sds":{"enabled":false,"udsPath":"","useNormalJwt":false,"useTrustworthyJwt":false},"tag":"1.2.3","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"image":"galley","nodeSelector":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"replicaCount":1,"tolerations":[]},"gateways":{"enabled":true,"global":{"arch":{"amd64":2,"ppc64le":2,"arm64":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":false,"enableHelmTest":false,"enableTracing":true,"hub":"iecedge","imagePullPolicy":"IfNotPresent","imagePullSecrets":null,"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"/dev/stdout","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"envoyMetricsService":{"enabled":false,"host":null,"port":null},"envoyStatsd":{"enabled":false,"host":null,"port":null},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2-arm64","includeIPRanges":"*","includeInboundPorts":"*","kubevirtInterfaces":"","logLevel":"","privileged":false,"readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"10m","memory":"40Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init-arm64"},"sds":{"enabled":false,"udsPath":"","useNormalJwt":false,"useTrustworthyJwt":false},"tag":"1.2.3","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"istio-egressgateway":{"autoscaleEnabled":false,"autoscaleMax":5,"autoscaleMin":1,"cpu":{"targetAverageUtilization":80},"enabled":true,"env":{"ISTIO_META_ROUTER_MODE":"sni-dnat"},"labels":{"app":"istio-egressgateway","iecedge":"egressgateway"},"nodeSelector":{},"podAnnotations":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"ports":[{"name":"http2","port":80},{"name":"https","port":443},{"name":"tls","port":15443,"targetPort":15443}],"resources":{"limits":{"cpu":"2000m","memory":"256Mi"},"requests":{"cpu":"10m","memory":"40Mi"}},"secretVolumes":[{"mountPath":"/etc/istio/egressgateway-certs","name":"egressgateway-certs","secretName":"istio-egressgateway-certs"},{"mountPath":"/etc/istio/egressgateway-ca-certs","name":"egressgateway-ca-certs","secretName":"istio-egressgateway-ca-certs"}],"serviceAnnotations":{},"tolerations":[],"type":"ClusterIP"},"istio-ilbgateway":{"autoscaleEnabled":true,"autoscaleMax":5,"autoscaleMin":1,"cpu":{"targetAverageUtilization":80},"enabled":false,"labels":{"app":"istio-ilbgateway","iecedge":"ilbgateway"},"loadBalancerIP":"","nodeSelector":{},"podAnnotations":{},"ports":[{"name":"grpc-pilot-mtls","port":15011},{"name":"grpc-pilot","port":15010},{"name":"tcp-citadel-grpc-tls","port":8060,"targetPort":8060},{"name":"tcp-dns","port":5353}],"resources":{"requests":{"cpu":"800m","memory":"512Mi"}},"secretVolumes":[{"mountPath":"/etc/istio/ilbgateway-certs","name":"ilbgateway-certs","secretName":"istio-ilbgateway-certs"},{"mountPath":"/etc/istio/ilbgateway-ca-certs","name":"ilbgateway-ca-certs","secretName":"istio-ilbgateway-ca-certs"}],"serviceAnnotations":{"cloud.google.com/load-balancer-type":"internal"},"tolerations":[],"type":"LoadBalancer"},"istio-ingressgateway":{"applicationPorts":"","autoscaleEnabled":false,"autoscaleMax":5,"autoscaleMin":1,"cpu":{"targetAverageUtilization":80},"enabled":true,"env":{"ISTIO_META_ROUTER_MODE":"sni-dnat"},"externalIPs":[],"labels":{"app":"istio-ingressgateway","iecedge":"ingressgateway"},"loadBalancerIP":"","loadBalancerSourceRanges":[],"meshExpansionPorts":[{"name":"tcp-pilot-grpc-tls","port":15011,"targetPort":15011},{"name":"tcp-mixer-grpc-tls","port":15004,"targetPort":15004},{"name":"tcp-citadel-grpc-tls","port":8060,"targetPort":8060},{"name":"tcp-dns-tls","port":853,"targetPort":853}],"nodeSelector":{},"podAnnotations":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"ports":[{"name":"status-port","port":15020,"targetPort":15020},{"name":"http2","nodePort":31380,"port":80,"targetPort":80},{"name":"https","nodePort":31390,"port":443},{"name":"tcp","nodePort":31400,"port":31400},{"name":"https-kiali","port":15029,"targetPort":15029},{"name":"https-prometheus","port":15030,"targetPort":15030},{"name":"https-grafana","port":15031,"targetPort":15031},{"name":"https-tracing","port":15032,"targetPort":15032},{"name":"tls","port":15443,"targetPort":15443}],"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"10m","memory":"40Mi"}},"sds":{"enabled":false,"image":"node-agent-k8s","resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"100m","memory":"128Mi"}}},"secretVolumes":[{"mountPath":"/etc/istio/ingressgateway-certs","name":"ingressgateway-certs","secretName":"istio-ingressgateway-certs"},{"mountPath":"/etc/istio/ingressgateway-ca-certs","name":"ingressgateway-ca-certs","secretName":"istio-ingressgateway-ca-certs"}],"serviceAnnotations":{},"tolerations":[],"type":"LoadBalancer"}},"global":{"arch":{"amd64":2,"ppc64le":2,"arm64":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":false,"enableHelmTest":false,"enableTracing":true,"hub":"iecedge","imagePullPolicy":"IfNotPresent","imagePullSecrets":null,"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"/dev/stdout","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"envoyMetricsService":{"enabled":false,"host":null,"port":null},"envoyStatsd":{"enabled":false,"host":null,"port":null},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2-arm64","includeIPRanges":"*","includeInboundPorts":"*","kubevirtInterfaces":"","logLevel":"","privileged":false,"readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"10m","memory":"40Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init-arm64"},"sds":{"enabled":false,"udsPath":"","useNormalJwt":false,"useTrustworthyJwt":false},"tag":"1.2.3","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"grafana":{"accessMode":"ReadWriteMany","contextPath":"/grafana","dashboardProviders":{"dashboardproviders.yaml":{"apiVersion":1,"providers":[{"disableDeletion":false,"folder":"istio","name":"istio","options":{"path":"/var/lib/grafana/dashboards/istio"},"orgId":1,"type":"file"}]}},"datasources":{"datasources.yaml":{"apiVersion":1,"datasources":[{"access":"proxy","editable":true,"isDefault":true,"jsonData":{"timeInterval":"5s"},"name":"Prometheus","orgId":1,"type":"prometheus","url":"http://prometheus:9090"}]}},"enabled":true,"global":{"arch":{"amd64":2,"ppc64le":2,"arm64":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":false,"enableHelmTest":false,"enableTracing":true,"hub":"iecedge","imagePullPolicy":"IfNotPresent","imagePullSecrets":null,"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"/dev/stdout","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"envoyMetricsService":{"enabled":false,"host":null,"port":null},"envoyStatsd":{"enabled":false,"host":null,"port":null},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2-arm64","includeIPRanges":"*","includeInboundPorts":"*","kubevirtInterfaces":"","logLevel":"","privileged":false,"readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"10m","memory":"40Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init-arm64"},"sds":{"enabled":false,"udsPath":"","useNormalJwt":false,"useTrustworthyJwt":false},"tag":"1.2.3","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"image":{"repository":"grafana/grafana","tag":"6.1.6"},"ingress":{"annotations":null,"enabled":false,"hosts":["grafana.local"],"tls":null},"nodeSelector":{},"persist":false,"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"replicaCount":1,"security":{"enabled":false,"passphraseKey":"passphrase","secretName":"grafana","usernameKey":"username"},"service":{"annotations":{},"externalPort":3000,"loadBalancerIP":null,"loadBalancerSourceRanges":null,"name":"http","type":"ClusterIP"},"storageClassName":"","tolerations":[]},"istio_cni":{"enabled":false},"istiocoredns":{"enabled":false},"kiali":{"contextPath":"/kiali","createDemoSecret":true,"dashboard":{"grafanaURL":null,"jaegerURL":null,"secretName":"kiali","viewOnlyMode":false},"enabled":true,"global":{"arch":{"amd64":2,"ppc64le":2,"arm64":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":false,"enableHelmTest":false,"enableTracing":true,"hub":"iecedge","imagePullPolicy":"IfNotPresent","imagePullSecrets":null,"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"/dev/stdout","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"envoyMetricsService":{"enabled":false,"host":null,"port":null},"envoyStatsd":{"enabled":false,"host":null,"port":null},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2-arm64","includeIPRanges":"*","includeInboundPorts":"*","kubevirtInterfaces":"","logLevel":"","privileged":false,"readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"10m","memory":"40Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init-arm64"},"sds":{"enabled":false,"udsPath":"","useNormalJwt":false,"useTrustworthyJwt":false},"tag":"1.2.3","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"hub":"quay.io/kiali","ingress":{"annotations":null,"enabled":false,"hosts":["kiali.local"],"tls":null},"nodeSelector":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"prometheusAddr":"http://prometheus:9090","replicaCount":1,"tag":"v0.20","tolerations":[]},"mixer":{"adapters":{"kubernetesenv":{"enabled":true},"prometheus":{"enabled":true,"metricsExpiryDuration":"10m"},"stdio":{"enabled":true,"outputAsJson":true},"useAdapterCRDs":false},"env":{"GODEBUG":"gctrace=1","GOMAXPROCS":"6"},"global":{"arch":{"amd64":2,"ppc64le":2,"arm64":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":false,"enableHelmTest":false,"enableTracing":true,"hub":"iecedge","imagePullPolicy":"IfNotPresent","imagePullSecrets":null,"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"/dev/stdout","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"envoyMetricsService":{"enabled":false,"host":null,"port":null},"envoyStatsd":{"enabled":false,"host":null,"port":null},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2-arm64","includeIPRanges":"*","includeInboundPorts":"*","kubevirtInterfaces":"","logLevel":"","privileged":false,"readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"10m","memory":"40Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init-arm64"},"sds":{"enabled":false,"udsPath":"","useNormalJwt":false,"useTrustworthyJwt":false},"tag":"1.2.3","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"image":"mixer","nodeSelector":{},"podAnnotations":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"policy":{"autoscaleEnabled":false,"autoscaleMax":5,"autoscaleMin":1,"cpu":{"targetAverageUtilization":80},"enabled":true,"replicaCount":1,"resources":{"requests":{"cpu":"10m","memory":"100Mi"}}},"telemetry":{"autoscaleEnabled":false,"autoscaleMax":5,"autoscaleMin":1,"cpu":{"targetAverageUtilization":80},"enabled":true,"loadshedding":{"latencyThreshold":"100ms","mode":"enforce"},"replicaCount":1,"resources":{"limits":{"cpu":"4800m","memory":"4G"},"requests":{"cpu":"50m","memory":"100Mi"}},"sessionAffinityEnabled":false},"templates":{"useTemplateCRDs":false},"tolerations":[]},"nodeagent":{"enabled":false},"pilot":{"autoscaleEnabled":false,"autoscaleMax":5,"autoscaleMin":1,"cpu":{"targetAverageUtilization":80},"enabled":true,"env":{"GODEBUG":"gctrace=1","PILOT_PUSH_THROTTLE":100},"global":{"arch":{"amd64":2,"ppc64le":2,"arm64":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":false,"enableHelmTest":false,"enableTracing":true,"hub":"iecedge","imagePullPolicy":"IfNotPresent","imagePullSecrets":null,"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"/dev/stdout","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"envoyMetricsService":{"enabled":false,"host":null,"port":null},"envoyStatsd":{"enabled":false,"host":null,"port":null},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2-arm64","includeIPRanges":"*","includeInboundPorts":"*","kubevirtInterfaces":"","logLevel":"","privileged":false,"readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"10m","memory":"40Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init-arm64"},"sds":{"enabled":false,"udsPath":"","useNormalJwt":false,"useTrustworthyJwt":false},"tag":"1.2.3","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"image":"pilot","keepaliveMaxServerConnectionAge":"30m","nodeSelector":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"resources":{"requests":{"cpu":"10m","memory":"100Mi"}},"sidecar":true,"tolerations":[],"traceSampling":100},"prometheus":{"contextPath":"/prometheus","enabled":true,"global":{"arch":{"amd64":2,"ppc64le":2,"arm64":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":false,"enableHelmTest":false,"enableTracing":true,"hub":"iecedge","imagePullPolicy":"IfNotPresent","imagePullSecrets":null,"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"/dev/stdout","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"envoyMetricsService":{"enabled":false,"host":null,"port":null},"envoyStatsd":{"enabled":false,"host":null,"port":null},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2-arm64","includeIPRanges":"*","includeInboundPorts":"*","kubevirtInterfaces":"","logLevel":"","privileged":false,"readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"10m","memory":"40Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init-arm64"},"sds":{"enabled":false,"udsPath":"","useNormalJwt":false,"useTrustworthyJwt":false},"tag":"1.2.3","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"hub":"docker.io/prom","ingress":{"annotations":null,"enabled":false,"hosts":["prometheus.local"],"tls":null},"nodeSelector":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"replicaCount":1,"retention":"6h","scrapeInterval":"15s","security":{"enabled":true},"service":{"annotations":{},"nodePort":{"enabled":false,"port":32090}},"tag":"v2.8.0","tolerations":[]},"security":{"citadelHealthCheck":false,"createMeshPolicy":true,"enabled":true,"global":{"arch":{"amd64":2,"ppc64le":2,"arm64":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":false,"enableHelmTest":false,"enableTracing":true,"hub":"iecedge","imagePullPolicy":"IfNotPresent","imagePullSecrets":null,"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"/dev/stdout","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"envoyMetricsService":{"enabled":false,"host":null,"port":null},"envoyStatsd":{"enabled":false,"host":null,"port":null},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2-arm64","includeIPRanges":"*","includeInboundPorts":"*","kubevirtInterfaces":"","logLevel":"","privileged":false,"readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"10m","memory":"40Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init-arm64"},"sds":{"enabled":false,"udsPath":"","useNormalJwt":false,"useTrustworthyJwt":false},"tag":"1.2.3","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"image":"citadel","nodeSelector":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"replicaCount":1,"selfSigned":true,"tolerations":[],"workloadCertTtl":"2160h"},"sidecarInjectorWebhook":{"alwaysInjectSelector":[],"enableNamespacesByDefault":false,"enabled":true,"global":{"arch":{"amd64":2,"ppc64le":2,"arm64":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":false,"enableHelmTest":false,"enableTracing":true,"hub":"iecedge","imagePullPolicy":"IfNotPresent","imagePullSecrets":null,"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"/dev/stdout","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"envoyMetricsService":{"enabled":false,"host":null,"port":null},"envoyStatsd":{"enabled":false,"host":null,"port":null},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2-arm64","includeIPRanges":"*","includeInboundPorts":"*","kubevirtInterfaces":"","logLevel":"","privileged":false,"readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"10m","memory":"40Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init-arm64"},"sds":{"enabled":false,"udsPath":"","useNormalJwt":false,"useTrustworthyJwt":false},"tag":"1.2.3","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"image":"sidecar_injector","neverInjectSelector":[],"nodeSelector":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"replicaCount":1,"rewriteAppHTTPProbe":false,"tolerations":[]},"tracing":{"enabled":true,"global":{"arch":{"amd64":2,"ppc64le":2,"arm64":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":false,"enableHelmTest":false,"enableTracing":true,"hub":"iecedge","imagePullPolicy":"IfNotPresent","imagePullSecrets":null,"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"/dev/stdout","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"envoyMetricsService":{"enabled":false,"host":null,"port":null},"envoyStatsd":{"enabled":false,"host":null,"port":null},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2-arm64","includeIPRanges":"*","includeInboundPorts":"*","kubevirtInterfaces":"","logLevel":"","privileged":false,"readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"10m","memory":"40Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init-arm64"},"sds":{"enabled":false,"udsPath":"","useNormalJwt":false,"useTrustworthyJwt":false},"tag":"1.2.3","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"ingress":{"annotations":null,"enabled":false,"hosts":null,"tls":null},"jaeger":{"hub":"docker.io/jaegertracing","memory":{"max_traces":50000},"tag":1.9},"nodeSelector":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"provider":"jaeger","service":{"annotations":{},"externalPort":9411,"name":"http","type":"ClusterIP"},"tolerations":[],"zipkin":{"hub":"docker.io/openzipkin","javaOptsHeap":700,"maxSpans":500000,"node":{"cpus":2},"probeStartupDelay":200,"queryPort":9411,"resources":{"limits":{"cpu":"300m","memory":"900Mi"},"requests":{"cpu":"150m","memory":"900Mi"}},"tag":2}}}\r
+\r
+  config: |-\r
+    policy: enabled\r
+    alwaysInjectSelector:\r
+      []\r
+\r
+    neverInjectSelector:\r
+      []\r
+\r
+    template: |-\r
+      rewriteAppHTTPProbe: {{ valueOrDefault .Values.sidecarInjectorWebhook.rewriteAppHTTPProbe false }}\r
+      {{- if or (not .Values.istio_cni.enabled) .Values.global.proxy.enableCoreDump }}\r
+      initContainers:\r
+      {{ if ne (annotation .ObjectMeta `sidecar.istio.io/interceptionMode` .ProxyConfig.InterceptionMode) `NONE` }}\r
+      {{- if not .Values.istio_cni.enabled }}\r
+      - name: istio-init\r
+      {{- if contains "/" .Values.global.proxy_init.image }}\r
+        image: "{{ .Values.global.proxy_init.image }}"\r
+      {{- else }}\r
+        image: "{{ .Values.global.hub }}/{{ .Values.global.proxy_init.image }}:{{ .Values.global.tag }}"\r
+      {{- end }}\r
+        args:\r
+        - "-p"\r
+        - "15001"\r
+        - "-u"\r
+        - 1337\r
+        - "-m"\r
+        - "{{ annotation .ObjectMeta `sidecar.istio.io/interceptionMode` .ProxyConfig.InterceptionMode }}"\r
+        - "-i"\r
+        - "{{ annotation .ObjectMeta `traffic.sidecar.istio.io/includeOutboundIPRanges` .Values.global.proxy.includeIPRanges }}"\r
+        - "-x"\r
+        - "{{ annotation .ObjectMeta `traffic.sidecar.istio.io/excludeOutboundIPRanges` .Values.global.proxy.excludeIPRanges }}"\r
+        - "-b"\r
+        - "{{ annotation .ObjectMeta `traffic.sidecar.istio.io/includeInboundPorts` (includeInboundPorts .Spec.Containers) }}"\r
+        - "-d"\r
+        - "{{ excludeInboundPort (annotation .ObjectMeta `status.sidecar.istio.io/port` .Values.global.proxy.statusPort) (annotation .ObjectMeta `traffic.sidecar.istio.io/excludeInboundPorts` .Values.global.proxy.excludeInboundPorts) }}"\r
+        {{ if or (isset .ObjectMeta.Annotations `traffic.sidecar.istio.io/excludeOutboundPorts`) (ne .Values.global.proxy.excludeOutboundPorts "") -}}\r
+        - "-o"\r
+        - "{{ annotation .ObjectMeta `traffic.sidecar.istio.io/excludeOutboundPorts` .Values.global.proxy.excludeOutboundPorts }}"\r
+        {{ end -}}\r
+        {{ if (isset .ObjectMeta.Annotations `traffic.sidecar.istio.io/kubevirtInterfaces`) -}}\r
+        - "-k"\r
+        - "{{ index .ObjectMeta.Annotations `traffic.sidecar.istio.io/kubevirtInterfaces` }}"\r
+        {{ end -}}\r
+        imagePullPolicy: "{{ .Values.global.imagePullPolicy }}"\r
+        resources:\r
+          requests:\r
+            cpu: 10m\r
+            memory: 10Mi\r
+          limits:\r
+            cpu: 100m\r
+            memory: 50Mi\r
+        securityContext:\r
+          runAsUser: 0\r
+          runAsNonRoot: false\r
+          capabilities:\r
+            add:\r
+            - NET_ADMIN\r
+          {{- if .Values.global.proxy.privileged }}\r
+          privileged: true\r
+          {{- end }}\r
+        restartPolicy: Always\r
+        env:\r
+        {{- if contains "*" (annotation .ObjectMeta `traffic.sidecar.istio.io/includeInboundPorts` "") }}\r
+        - name: INBOUND_CAPTURE_PORT\r
+          value: 15006\r
+        {{- end }}\r
+      {{- end }}\r
+      {{  end -}}\r
+      {{- if eq .Values.global.proxy.enableCoreDump true }}\r
+      - name: enable-core-dump\r
+        args:\r
+        - -c\r
+        - sysctl -w kernel.core_pattern=/var/lib/istio/core.proxy && ulimit -c unlimited\r
+        command:\r
+          - /bin/sh\r
+      {{- if contains "/" .Values.global.proxy_init.image }}\r
+        image: "{{ .Values.global.proxy_init.image }}"\r
+      {{- else }}\r
+        image: "{{ .Values.global.hub }}/{{ .Values.global.proxy_init.image }}:{{ .Values.global.tag }}"\r
+      {{- end }}\r
+        imagePullPolicy: IfNotPresent\r
+        resources: {}\r
+        securityContext:\r
+          runAsUser: 0\r
+          runAsNonRoot: false\r
+          privileged: true\r
+      {{ end }}\r
+      {{- end }}\r
+      containers:\r
+      - name: istio-proxy\r
+      {{- if contains "/" .Values.global.proxy.image }}\r
+        image: "{{ annotation .ObjectMeta `sidecar.istio.io/proxyImage` .Values.global.proxy.image }}"\r
+      {{- else }}\r
+        image: "{{ annotation .ObjectMeta `sidecar.istio.io/proxyImage` .Values.global.hub }}/{{ .Values.global.proxy.image }}:{{ .Values.global.tag }}"\r
+      {{- end }}\r
+        ports:\r
+        - containerPort: 15090\r
+          protocol: TCP\r
+          name: http-envoy-prom\r
+        args:\r
+        - proxy\r
+        - sidecar\r
+        - --domain\r
+        - $(POD_NAMESPACE).svc.{{ .Values.global.proxy.clusterDomain }}\r
+        - --configPath\r
+        - "{{ .ProxyConfig.ConfigPath }}"\r
+        - --binaryPath\r
+        - "{{ .ProxyConfig.BinaryPath }}"\r
+        - --serviceCluster\r
+        {{ if ne "" (index .ObjectMeta.Labels "app") -}}\r
+        - "{{ index .ObjectMeta.Labels `app` }}.$(POD_NAMESPACE)"\r
+        {{ else -}}\r
+        - "{{ valueOrDefault .DeploymentMeta.Name `istio-proxy` }}.{{ valueOrDefault .DeploymentMeta.Namespace `default` }}"\r
+        {{ end -}}\r
+        - --drainDuration\r
+        - "{{ formatDuration .ProxyConfig.DrainDuration }}"\r
+        - --parentShutdownDuration\r
+        - "{{ formatDuration .ProxyConfig.ParentShutdownDuration }}"\r
+        - --discoveryAddress\r
+        - "{{ annotation .ObjectMeta `sidecar.istio.io/discoveryAddress` .ProxyConfig.DiscoveryAddress }}"\r
+      {{- if eq .Values.global.proxy.tracer "lightstep" }}\r
+        - --lightstepAddress\r
+        - "{{ .ProxyConfig.GetTracing.GetLightstep.GetAddress }}"\r
+        - --lightstepAccessToken\r
+        - "{{ .ProxyConfig.GetTracing.GetLightstep.GetAccessToken }}"\r
+        - --lightstepSecure={{ .ProxyConfig.GetTracing.GetLightstep.GetSecure }}\r
+        - --lightstepCacertPath\r
+        - "{{ .ProxyConfig.GetTracing.GetLightstep.GetCacertPath }}"\r
+      {{- else if eq .Values.global.proxy.tracer "zipkin" }}\r
+        - --zipkinAddress\r
+        - "{{ .ProxyConfig.GetTracing.GetZipkin.GetAddress }}"\r
+      {{- else if eq .Values.global.proxy.tracer "datadog" }}\r
+        - --datadogAgentAddress\r
+        - "{{ .ProxyConfig.GetTracing.GetDatadog.GetAddress }}"\r
+      {{- end }}\r
+      {{- if .Values.global.proxy.logLevel }}\r
+        - --proxyLogLevel={{ .Values.global.proxy.logLevel }}\r
+      {{- end}}\r
+      {{- if .Values.global.proxy.componentLogLevel }}\r
+        - --proxyComponentLogLevel={{ .Values.global.proxy.componentLogLevel }}\r
+      {{- end}}\r
+        - --dnsRefreshRate\r
+        - {{ .Values.global.proxy.dnsRefreshRate }}\r
+        - --connectTimeout\r
+        - "{{ formatDuration .ProxyConfig.ConnectTimeout }}"\r
+      {{- if .Values.global.proxy.envoyStatsd.enabled }}\r
+        - --statsdUdpAddress\r
+        - "{{ .ProxyConfig.StatsdUdpAddress }}"\r
+      {{- end }}\r
+      {{- if .Values.global.proxy.envoyMetricsService.enabled }}\r
+        - --envoyMetricsServiceAddress\r
+        - "{{ .ProxyConfig.EnvoyMetricsServiceAddress }}"\r
+      {{- end }}\r
+        - --proxyAdminPort\r
+        - "{{ .ProxyConfig.ProxyAdminPort }}"\r
+        {{ if gt .ProxyConfig.Concurrency 0 -}}\r
+        - --concurrency\r
+        - "{{ .ProxyConfig.Concurrency }}"\r
+        {{ end -}}\r
+        - --controlPlaneAuthPolicy\r
+        - "{{ annotation .ObjectMeta `sidecar.istio.io/controlPlaneAuthPolicy` .ProxyConfig.ControlPlaneAuthPolicy }}"\r
+      {{- if (ne (annotation .ObjectMeta "status.sidecar.istio.io/port" .Values.global.proxy.statusPort) "0") }}\r
+        - --statusPort\r
+        - "{{ annotation .ObjectMeta `status.sidecar.istio.io/port` .Values.global.proxy.statusPort }}"\r
+        - --applicationPorts\r
+        - "{{ annotation .ObjectMeta `readiness.status.sidecar.istio.io/applicationPorts` (applicationPorts .Spec.Containers) }}"\r
+      {{- end }}\r
+      {{- if .Values.global.trustDomain }}\r
+        - --trust-domain={{ .Values.global.trustDomain }}\r
+      {{- end }}\r
+        env:\r
+        - name: POD_NAME\r
+          valueFrom:\r
+            fieldRef:\r
+              fieldPath: metadata.name\r
+        - name: POD_NAMESPACE\r
+          valueFrom:\r
+            fieldRef:\r
+              fieldPath: metadata.namespace\r
+        - name: INSTANCE_IP\r
+          valueFrom:\r
+            fieldRef:\r
+              fieldPath: status.podIP\r
+      {{ if eq .Values.global.proxy.tracer "datadog" }}\r
+        - name: HOST_IP\r
+          valueFrom:\r
+            fieldRef:\r
+              fieldPath: status.hostIP\r
+      {{ end }}\r
+        - name: ISTIO_META_POD_NAME\r
+          valueFrom:\r
+            fieldRef:\r
+              fieldPath: metadata.name\r
+        - name: ISTIO_META_CONFIG_NAMESPACE\r
+          valueFrom:\r
+            fieldRef:\r
+              fieldPath: metadata.namespace\r
+        - name: ISTIO_META_INTERCEPTION_MODE\r
+          value: "{{ or (index .ObjectMeta.Annotations `sidecar.istio.io/interceptionMode`) .ProxyConfig.InterceptionMode.String }}"\r
+        - name: ISTIO_META_INCLUDE_INBOUND_PORTS\r
+          value: "{{ annotation .ObjectMeta `traffic.sidecar.istio.io/includeInboundPorts` (applicationPorts .Spec.Containers) }}"\r
+        {{- if .Values.global.network }}\r
+        - name: ISTIO_META_NETWORK\r
+          value: "{{ .Values.global.network }}"\r
+        {{- end }}\r
+        {{ if .ObjectMeta.Annotations }}\r
+        - name: ISTIO_METAJSON_ANNOTATIONS\r
+          value: |\r
+                 {{ toJSON .ObjectMeta.Annotations }}\r
+        {{ end }}\r
+        {{ if .ObjectMeta.Labels }}\r
+        - name: ISTIO_METAJSON_LABELS\r
+          value: |\r
+                 {{ toJSON .ObjectMeta.Labels }}\r
+        {{ end }}\r
+        {{- if (isset .ObjectMeta.Annotations `sidecar.istio.io/bootstrapOverride`) }}\r
+        - name: ISTIO_BOOTSTRAP_OVERRIDE\r
+          value: "/etc/istio/custom-bootstrap/custom_bootstrap.json"\r
+        {{- end }}\r
+        {{- if .Values.global.sds.customTokenDirectory }}\r
+        - name: ISTIO_META_SDS_TOKEN_PATH\r
+          value: "{{ .Values.global.sds.customTokenDirectory -}}/sdstoken"\r
+        {{- end }}\r
+        imagePullPolicy: {{ .Values.global.imagePullPolicy }}\r
+        {{ if ne (annotation .ObjectMeta `status.sidecar.istio.io/port` .Values.global.proxy.statusPort) `0` }}\r
+        readinessProbe:\r
+          httpGet:\r
+            path: /healthz/ready\r
+            port: {{ annotation .ObjectMeta `status.sidecar.istio.io/port` .Values.global.proxy.statusPort }}\r
+          initialDelaySeconds: {{ annotation .ObjectMeta `readiness.status.sidecar.istio.io/initialDelaySeconds` .Values.global.proxy.readinessInitialDelaySeconds }}\r
+          periodSeconds: {{ annotation .ObjectMeta `readiness.status.sidecar.istio.io/periodSeconds` .Values.global.proxy.readinessPeriodSeconds }}\r
+          failureThreshold: {{ annotation .ObjectMeta `readiness.status.sidecar.istio.io/failureThreshold` .Values.global.proxy.readinessFailureThreshold }}\r
+        {{ end -}}\r
+        securityContext:\r
+          {{- if .Values.global.proxy.privileged }}\r
+          privileged: true\r
+          {{- end }}\r
+          {{- if ne .Values.global.proxy.enableCoreDump true }}\r
+          readOnlyRootFilesystem: true\r
+          {{- end }}\r
+          {{ if eq (annotation .ObjectMeta `sidecar.istio.io/interceptionMode` .ProxyConfig.InterceptionMode) `TPROXY` -}}\r
+          capabilities:\r
+            add:\r
+            - NET_ADMIN\r
+          runAsGroup: 1337\r
+          {{ else -}}\r
+          {{ if and .Values.global.sds.enabled .Values.global.sds.useTrustworthyJwt }}\r
+          runAsGroup: 1337\r
+          {{- end }}\r
+          runAsUser: 1337\r
+          {{- end }}\r
+        resources:\r
+          {{ if or (isset .ObjectMeta.Annotations `sidecar.istio.io/proxyCPU`) (isset .ObjectMeta.Annotations `sidecar.istio.io/proxyMemory`) -}}\r
+          requests:\r
+            {{ if (isset .ObjectMeta.Annotations `sidecar.istio.io/proxyCPU`) -}}\r
+            cpu: "{{ index .ObjectMeta.Annotations `sidecar.istio.io/proxyCPU` }}"\r
+            {{ end}}\r
+            {{ if (isset .ObjectMeta.Annotations `sidecar.istio.io/proxyMemory`) -}}\r
+            memory: "{{ index .ObjectMeta.Annotations `sidecar.istio.io/proxyMemory` }}"\r
+            {{ end }}\r
+        {{ else -}}\r
+      {{- if .Values.global.proxy.resources }}\r
+          {{ toYaml .Values.global.proxy.resources | indent 4 }}\r
+      {{- end }}\r
+        {{  end -}}\r
+        volumeMounts:\r
+        {{ if (isset .ObjectMeta.Annotations `sidecar.istio.io/bootstrapOverride`) }}\r
+        - mountPath: /etc/istio/custom-bootstrap\r
+          name: custom-bootstrap-volume\r
+        {{- end }}\r
+        - mountPath: /etc/istio/proxy\r
+          name: istio-envoy\r
+        {{- if .Values.global.sds.enabled }}\r
+        - mountPath: /var/run/sds\r
+          name: sds-uds-path\r
+          readOnly: true\r
+        {{- if .Values.global.sds.useTrustworthyJwt }}\r
+        - mountPath: /var/run/secrets/tokens\r
+          name: istio-token\r
+        {{- end }}\r
+        {{- if .Values.global.sds.customTokenDirectory }}\r
+        - mountPath: "{{ .Values.global.sds.customTokenDirectory -}}"\r
+          name: custom-sds-token\r
+          readOnly: true\r
+        {{- end }}\r
+        {{- else }}\r
+        - mountPath: /etc/certs/\r
+          name: istio-certs\r
+          readOnly: true\r
+        {{- end }}\r
+        {{- if and (eq .Values.global.proxy.tracer "lightstep") .Values.global.tracer.lightstep.cacertPath }}\r
+        - mountPath: {{ directory .ProxyConfig.GetTracing.GetLightstep.GetCacertPath }}\r
+          name: lightstep-certs\r
+          readOnly: true\r
+        {{- end }}\r
+          {{- if isset .ObjectMeta.Annotations `sidecar.istio.io/userVolumeMount` }}\r
+          {{ range $index, $value := fromJSON (index .ObjectMeta.Annotations `sidecar.istio.io/userVolumeMount`) }}\r
+        - name: "{{  $index }}"\r
+          {{ toYaml $value | indent 4 }}\r
+          {{ end }}\r
+          {{- end }}\r
+      volumes:\r
+      {{- if (isset .ObjectMeta.Annotations `sidecar.istio.io/bootstrapOverride`) }}\r
+      - name: custom-bootstrap-volume\r
+        configMap:\r
+          name: {{ annotation .ObjectMeta `sidecar.istio.io/bootstrapOverride` "" }}\r
+      {{- end }}\r
+      - emptyDir:\r
+          medium: Memory\r
+        name: istio-envoy\r
+      {{- if .Values.global.sds.enabled }}\r
+      - name: sds-uds-path\r
+        hostPath:\r
+          path: /var/run/sds\r
+      {{- if .Values.global.sds.customTokenDirectory }}\r
+      - name: custom-sds-token\r
+        secret:\r
+          secretName: sdstokensecret\r
+      {{- end }}\r
+      {{- if .Values.global.sds.useTrustworthyJwt }}\r
+      - name: istio-token\r
+        projected:\r
+          sources:\r
+          - serviceAccountToken:\r
+              path: istio-token\r
+              expirationSeconds: 43200\r
+              audience: {{ .Values.global.trustDomain }}\r
+      {{- end }}\r
+      {{- else }}\r
+      - name: istio-certs\r
+        secret:\r
+          optional: true\r
+          {{ if eq .Spec.ServiceAccountName "" }}\r
+          secretName: istio.default\r
+          {{ else -}}\r
+          secretName: {{  printf "istio.%s" .Spec.ServiceAccountName }}\r
+          {{  end -}}\r
+        {{- if isset .ObjectMeta.Annotations `sidecar.istio.io/userVolume` }}\r
+        {{range $index, $value := fromJSON (index .ObjectMeta.Annotations `sidecar.istio.io/userVolume`) }}\r
+      - name: "{{ $index }}"\r
+        {{ toYaml $value | indent 2 }}\r
+        {{ end }}\r
+        {{ end }}\r
+      {{- end }}\r
+      {{- if and (eq .Values.global.proxy.tracer "lightstep") .Values.global.tracer.lightstep.cacertPath }}\r
+      - name: lightstep-certs\r
+        secret:\r
+          optional: true\r
+          secretName: lightstep.cacert\r
+      {{- end }}\r
+      {{- if .Values.global.podDNSSearchNamespaces }}\r
+      dnsConfig:\r
+        searches:\r
+          {{- range .Values.global.podDNSSearchNamespaces }}\r
+          - {{ render . }}\r
+          {{- end }}\r
+      {{- end }}\r
+\r
+---\r
+# Source: istio/charts/galley/templates/serviceaccount.yaml\r
+apiVersion: v1\r
+kind: ServiceAccount\r
+metadata:\r
+  name: istio-galley-service-account\r
+  namespace: istio-system\r
+  labels:\r
+    app: galley\r
+    chart: galley\r
+    heritage: Tiller\r
+    release: istio\r
+\r
+---\r
+# Source: istio/charts/gateways/templates/serviceaccount.yaml\r
+\r
+apiVersion: v1\r
+kind: ServiceAccount\r
+metadata:\r
+  name: istio-egressgateway-service-account\r
+  namespace: istio-system\r
+  labels:\r
+    app: istio-egressgateway\r
+    chart: gateways\r
+    heritage: Tiller\r
+    release: istio\r
+---\r
+apiVersion: v1\r
+kind: ServiceAccount\r
+metadata:\r
+  name: istio-ingressgateway-service-account\r
+  namespace: istio-system\r
+  labels:\r
+    app: istio-ingressgateway\r
+    chart: gateways\r
+    heritage: Tiller\r
+    release: istio\r
+---\r
+\r
+\r
+---\r
+# Source: istio/charts/grafana/templates/create-custom-resources-job.yaml\r
+apiVersion: v1\r
+kind: ServiceAccount\r
+metadata:\r
+  name: istio-grafana-post-install-account\r
+  namespace: istio-system\r
+  labels:\r
+    app: grafana\r
+    chart: grafana\r
+    heritage: Tiller\r
+    release: istio\r
+---\r
+apiVersion: rbac.authorization.k8s.io/v1\r
+kind: ClusterRole\r
+metadata:\r
+  name: istio-grafana-post-install-istio-system\r
+  labels:\r
+    app: grafana\r
+    chart: grafana\r
+    heritage: Tiller\r
+    release: istio\r
+rules:\r
+- apiGroups: ["authentication.istio.io"] # needed to create default authn policy\r
+  resources: ["*"]\r
+  verbs: ["*"]\r
+---\r
+apiVersion: rbac.authorization.k8s.io/v1\r
+kind: ClusterRoleBinding\r
+metadata:\r
+  name: istio-grafana-post-install-role-binding-istio-system\r
+  labels:\r
+    app: grafana\r
+    chart: grafana\r
+    heritage: Tiller\r
+    release: istio\r
+roleRef:\r
+  apiGroup: rbac.authorization.k8s.io\r
+  kind: ClusterRole\r
+  name: istio-grafana-post-install-istio-system\r
+subjects:\r
+  - kind: ServiceAccount\r
+    name: istio-grafana-post-install-account\r
+    namespace: istio-system\r
+---\r
+apiVersion: batch/v1\r
+kind: Job\r
+metadata:\r
+  name: istio-grafana-post-install-1.2.3\r
+  namespace: istio-system\r
+  annotations:\r
+    "helm.sh/hook": post-install\r
+    "helm.sh/hook-delete-policy": hook-succeeded\r
+  labels:\r
+    app: grafana\r
+    chart: grafana\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  template:\r
+    metadata:\r
+      name: istio-grafana-post-install\r
+      labels:\r
+        app: istio-grafana\r
+        chart: grafana\r
+        heritage: Tiller\r
+        release: istio\r
+    spec:\r
+      serviceAccountName: istio-grafana-post-install-account\r
+      containers:\r
+        - name: kubectl\r
+          image: "iecedge/kubectl-arm64:1.2.3"\r
+          imagePullPolicy: IfNotPresent\r
+          command: [ "/bin/bash", "/tmp/grafana/run.sh", "/tmp/grafana/custom-resources.yaml" ]\r
+          volumeMounts:\r
+            - mountPath: "/tmp/grafana"\r
+              name: tmp-configmap-grafana\r
+      volumes:\r
+        - name: tmp-configmap-grafana\r
+          configMap:\r
+            name: istio-grafana-custom-resources\r
+      restartPolicy: OnFailure\r
+      affinity:\r
+        nodeAffinity:\r
+          requiredDuringSchedulingIgnoredDuringExecution:\r
+            nodeSelectorTerms:\r
+            - matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+                - ppc64le\r
+                - arm64\r
+          preferredDuringSchedulingIgnoredDuringExecution:\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - ppc64le\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - arm64\r
+\r
+---\r
+# Source: istio/charts/kiali/templates/serviceaccount.yaml\r
+apiVersion: v1\r
+kind: ServiceAccount\r
+metadata:\r
+  name: kiali-service-account\r
+  namespace: istio-system\r
+  labels:\r
+    app: kiali\r
+    chart: kiali\r
+    heritage: Tiller\r
+    release: istio\r
+\r
+---\r
+# Source: istio/charts/mixer/templates/serviceaccount.yaml\r
+\r
+apiVersion: v1\r
+kind: ServiceAccount\r
+metadata:\r
+  name: istio-mixer-service-account\r
+  namespace: istio-system\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+\r
+---\r
+# Source: istio/charts/pilot/templates/serviceaccount.yaml\r
+apiVersion: v1\r
+kind: ServiceAccount\r
+metadata:\r
+  name: istio-pilot-service-account\r
+  namespace: istio-system\r
+  labels:\r
+    app: pilot\r
+    chart: pilot\r
+    heritage: Tiller\r
+    release: istio\r
+\r
+---\r
+# Source: istio/charts/prometheus/templates/serviceaccount.yaml\r
+apiVersion: v1\r
+kind: ServiceAccount\r
+metadata:\r
+  name: prometheus\r
+  namespace: istio-system\r
+  labels:\r
+    app: prometheus\r
+    chart: prometheus\r
+    heritage: Tiller\r
+    release: istio\r
+\r
+---\r
+# Source: istio/charts/security/templates/cleanup-secrets.yaml\r
+# The reason for creating a ServiceAccount and ClusterRole specifically for this\r
+# post-delete hooked job is because the citadel ServiceAccount is being deleted\r
+# before this hook is launched. On the other hand, running this hook before the\r
+# deletion of the citadel (e.g. pre-delete) won't delete the secrets because they\r
+# will be re-created immediately by the to-be-deleted citadel.\r
+#\r
+# It's also important that the ServiceAccount, ClusterRole and ClusterRoleBinding\r
+# will be ready before running the hooked Job therefore the hook weights.\r
+\r
+apiVersion: v1\r
+kind: ServiceAccount\r
+metadata:\r
+  name: istio-cleanup-secrets-service-account\r
+  namespace: istio-system\r
+  annotations:\r
+    "helm.sh/hook": post-delete\r
+    "helm.sh/hook-delete-policy": hook-succeeded\r
+    "helm.sh/hook-weight": "1"\r
+  labels:\r
+    app: security\r
+    chart: security\r
+    heritage: Tiller\r
+    release: istio\r
+---\r
+apiVersion: rbac.authorization.k8s.io/v1\r
+kind: ClusterRole\r
+metadata:\r
+  name: istio-cleanup-secrets-istio-system\r
+  annotations:\r
+    "helm.sh/hook": post-delete\r
+    "helm.sh/hook-delete-policy": hook-succeeded\r
+    "helm.sh/hook-weight": "1"\r
+  labels:\r
+    app: security\r
+    chart: security\r
+    heritage: Tiller\r
+    release: istio\r
+rules:\r
+- apiGroups: [""]\r
+  resources: ["secrets"]\r
+  verbs: ["list", "delete"]\r
+---\r
+apiVersion: rbac.authorization.k8s.io/v1\r
+kind: ClusterRoleBinding\r
+metadata:\r
+  name: istio-cleanup-secrets-istio-system\r
+  annotations:\r
+    "helm.sh/hook": post-delete\r
+    "helm.sh/hook-delete-policy": hook-succeeded\r
+    "helm.sh/hook-weight": "2"\r
+  labels:\r
+    app: security\r
+    chart: security\r
+    heritage: Tiller\r
+    release: istio\r
+roleRef:\r
+  apiGroup: rbac.authorization.k8s.io\r
+  kind: ClusterRole\r
+  name: istio-cleanup-secrets-istio-system\r
+subjects:\r
+  - kind: ServiceAccount\r
+    name: istio-cleanup-secrets-service-account\r
+    namespace: istio-system\r
+---\r
+apiVersion: batch/v1\r
+kind: Job\r
+metadata:\r
+  name: istio-cleanup-secrets-1.2.3\r
+  namespace: istio-system\r
+  annotations:\r
+    "helm.sh/hook": post-delete\r
+    "helm.sh/hook-delete-policy": hook-succeeded\r
+    "helm.sh/hook-weight": "3"\r
+  labels:\r
+    app: security\r
+    chart: security\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  template:\r
+    metadata:\r
+      name: istio-cleanup-secrets\r
+      labels:\r
+        app: security\r
+        chart: security\r
+        heritage: Tiller\r
+        release: istio\r
+    spec:\r
+      serviceAccountName: istio-cleanup-secrets-service-account\r
+      containers:\r
+        - name: kubectl\r
+          image: "iecedge/kubectl-arm64:1.2.3"\r
+          imagePullPolicy: IfNotPresent\r
+          command:\r
+          - /bin/bash\r
+          - -c\r
+          - >\r
+              kubectl get secret --all-namespaces | grep "istio.io/key-and-cert" |  while read -r entry; do\r
+                ns=$(echo $entry | awk '{print $1}');\r
+                name=$(echo $entry | awk '{print $2}');\r
+                kubectl delete secret $name -n $ns;\r
+              done\r
+      restartPolicy: OnFailure\r
+      affinity:\r
+        nodeAffinity:\r
+          requiredDuringSchedulingIgnoredDuringExecution:\r
+            nodeSelectorTerms:\r
+            - matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+                - ppc64le\r
+                - arm64\r
+          preferredDuringSchedulingIgnoredDuringExecution:\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - ppc64le\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - arm64\r
+\r
+---\r
+# Source: istio/charts/security/templates/create-custom-resources-job.yaml\r
+\r
+apiVersion: v1\r
+kind: ServiceAccount\r
+metadata:\r
+  name: istio-security-post-install-account\r
+  namespace: istio-system\r
+  labels:\r
+    app: security\r
+    chart: security\r
+    heritage: Tiller\r
+    release: istio\r
+---\r
+apiVersion: rbac.authorization.k8s.io/v1beta1\r
+kind: ClusterRole\r
+metadata:\r
+  name: istio-security-post-install-istio-system\r
+  labels:\r
+    app: security\r
+    chart: security\r
+    heritage: Tiller\r
+    release: istio\r
+rules:\r
+- apiGroups: ["authentication.istio.io"] # needed to create default authn policy\r
+  resources: ["*"]\r
+  verbs: ["*"]\r
+- apiGroups: ["networking.istio.io"] # needed to create security destination rules\r
+  resources: ["*"]\r
+  verbs: ["*"]\r
+- apiGroups: ["admissionregistration.k8s.io"]\r
+  resources: ["validatingwebhookconfigurations"]\r
+  verbs: ["get"]\r
+- apiGroups: ["extensions", "apps"]\r
+  resources: ["deployments", "replicasets"]\r
+  verbs: ["get", "list", "watch"]\r
+---\r
+apiVersion: rbac.authorization.k8s.io/v1beta1\r
+kind: ClusterRoleBinding\r
+metadata:\r
+  name: istio-security-post-install-role-binding-istio-system\r
+  labels:\r
+    app: security\r
+    chart: security\r
+    heritage: Tiller\r
+    release: istio\r
+roleRef:\r
+  apiGroup: rbac.authorization.k8s.io\r
+  kind: ClusterRole\r
+  name: istio-security-post-install-istio-system\r
+subjects:\r
+  - kind: ServiceAccount\r
+    name: istio-security-post-install-account\r
+    namespace: istio-system\r
+---\r
+apiVersion: batch/v1\r
+kind: Job\r
+metadata:\r
+  name: istio-security-post-install-1.2.3\r
+  namespace: istio-system\r
+  annotations:\r
+    "helm.sh/hook": post-install\r
+    "helm.sh/hook-delete-policy": hook-succeeded\r
+  labels:\r
+    app: security\r
+    chart: security\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  template:\r
+    metadata:\r
+      name: istio-security-post-install\r
+      labels:\r
+        app: security\r
+        chart: security\r
+        heritage: Tiller\r
+        release: istio\r
+    spec:\r
+      serviceAccountName: istio-security-post-install-account\r
+      containers:\r
+        - name: kubectl\r
+          image: "iecedge/kubectl-arm64:1.2.3"\r
+          imagePullPolicy: IfNotPresent\r
+          command: [ "/bin/bash", "/tmp/security/run.sh", "/tmp/security/custom-resources.yaml" ]\r
+          volumeMounts:\r
+            - mountPath: "/tmp/security"\r
+              name: tmp-configmap-security\r
+      volumes:\r
+        - name: tmp-configmap-security\r
+          configMap:\r
+            name: istio-security-custom-resources\r
+      restartPolicy: OnFailure\r
+      affinity:\r
+        nodeAffinity:\r
+          requiredDuringSchedulingIgnoredDuringExecution:\r
+            nodeSelectorTerms:\r
+            - matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+                - ppc64le\r
+                - arm64\r
+          preferredDuringSchedulingIgnoredDuringExecution:\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - ppc64le\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - arm64\r
+\r
+---\r
+# Source: istio/charts/security/templates/serviceaccount.yaml\r
+apiVersion: v1\r
+kind: ServiceAccount\r
+metadata:\r
+  name: istio-citadel-service-account\r
+  namespace: istio-system\r
+  labels:\r
+    app: security\r
+    chart: security\r
+    heritage: Tiller\r
+    release: istio\r
+\r
+---\r
+# Source: istio/charts/sidecarInjectorWebhook/templates/serviceaccount.yaml\r
+apiVersion: v1\r
+kind: ServiceAccount\r
+metadata:\r
+  name: istio-sidecar-injector-service-account\r
+  namespace: istio-system\r
+  labels:\r
+    app: sidecarInjectorWebhook\r
+    chart: sidecarInjectorWebhook\r
+    heritage: Tiller\r
+    release: istio\r
+    istio: sidecar-injector\r
+\r
+---\r
+# Source: istio/templates/serviceaccount.yaml\r
+apiVersion: v1\r
+kind: ServiceAccount\r
+metadata:\r
+  name: istio-multi\r
+  namespace: istio-system\r
+\r
+---\r
+# Source: istio/charts/galley/templates/clusterrole.yaml\r
+apiVersion: rbac.authorization.k8s.io/v1\r
+kind: ClusterRole\r
+metadata:\r
+  name: istio-galley-istio-system\r
+  labels:\r
+    app: galley\r
+    chart: galley\r
+    heritage: Tiller\r
+    release: istio\r
+rules:\r
+- apiGroups: ["admissionregistration.k8s.io"]\r
+  resources: ["validatingwebhookconfigurations"]\r
+  verbs: ["*"]\r
+- apiGroups: ["config.istio.io"] # istio mixer CRD watcher\r
+  resources: ["*"]\r
+  verbs: ["get", "list", "watch"]\r
+- apiGroups: ["networking.istio.io"]\r
+  resources: ["*"]\r
+  verbs: ["get", "list", "watch"]\r
+- apiGroups: ["authentication.istio.io"]\r
+  resources: ["*"]\r
+  verbs: ["get", "list", "watch"]\r
+- apiGroups: ["rbac.istio.io"]\r
+  resources: ["*"]\r
+  verbs: ["get", "list", "watch"]\r
+- apiGroups: ["extensions","apps"]\r
+  resources: ["deployments"]\r
+  resourceNames: ["istio-galley"]\r
+  verbs: ["get"]\r
+- apiGroups: [""]\r
+  resources: ["pods", "nodes", "services", "endpoints"]\r
+  verbs: ["get", "list", "watch"]\r
+- apiGroups: ["extensions"]\r
+  resources: ["ingresses"]\r
+  verbs: ["get", "list", "watch"]\r
+- apiGroups: ["extensions"]\r
+  resources: ["deployments/finalizers"]\r
+  resourceNames: ["istio-galley"]\r
+  verbs: ["update"]\r
+\r
+---\r
+# Source: istio/charts/kiali/templates/clusterrole.yaml\r
+apiVersion: rbac.authorization.k8s.io/v1\r
+kind: ClusterRole\r
+metadata:\r
+  name: kiali\r
+  labels:\r
+    app: kiali\r
+    chart: kiali\r
+    heritage: Tiller\r
+    release: istio\r
+rules:\r
+- apiGroups: [""]\r
+  resources:\r
+  - configmaps\r
+  - endpoints\r
+  - namespaces\r
+  - nodes\r
+  - pods\r
+  - pods/log\r
+  - replicationcontrollers\r
+  - services\r
+  verbs:\r
+  - get\r
+  - list\r
+  - watch\r
+- apiGroups: ["extensions", "apps"]\r
+  resources:\r
+  - deployments\r
+  - replicasets\r
+  - statefulsets\r
+  verbs:\r
+  - get\r
+  - list\r
+  - watch\r
+- apiGroups: ["autoscaling"]\r
+  resources:\r
+  - horizontalpodautoscalers\r
+  verbs:\r
+  - get\r
+  - list\r
+  - watch\r
+- apiGroups: ["batch"]\r
+  resources:\r
+  - cronjobs\r
+  - jobs\r
+  verbs:\r
+  - get\r
+  - list\r
+  - watch\r
+- apiGroups: ["config.istio.io"]\r
+  resources:\r
+  - adapters\r
+  - apikeys\r
+  - bypasses\r
+  - authorizations\r
+  - checknothings\r
+  - circonuses\r
+  - cloudwatches\r
+  - deniers\r
+  - dogstatsds\r
+  - edges\r
+  - fluentds\r
+  - handlers\r
+  - instances\r
+  - kubernetesenvs\r
+  - kuberneteses\r
+  - listcheckers\r
+  - listentries\r
+  - logentries\r
+  - memquotas\r
+  - metrics\r
+  - noops\r
+  - opas\r
+  - prometheuses\r
+  - quotas\r
+  - quotaspecbindings\r
+  - quotaspecs\r
+  - rbacs\r
+  - redisquotas\r
+  - reportnothings\r
+  - rules\r
+  - signalfxs\r
+  - solarwindses\r
+  - stackdrivers\r
+  - statsds\r
+  - stdios\r
+  - templates\r
+  - tracespans\r
+  - zipkins\r
+  verbs:\r
+  - create\r
+  - delete\r
+  - get\r
+  - list\r
+  - patch\r
+  - watch\r
+- apiGroups: ["networking.istio.io"]\r
+  resources:\r
+  - destinationrules\r
+  - gateways\r
+  - serviceentries\r
+  - virtualservices\r
+  verbs:\r
+  - create\r
+  - delete\r
+  - get\r
+  - list\r
+  - patch\r
+  - watch\r
+- apiGroups: ["authentication.istio.io"]\r
+  resources:\r
+  - meshpolicies\r
+  - policies\r
+  verbs:\r
+  - create\r
+  - delete\r
+  - get\r
+  - list\r
+  - patch\r
+  - watch\r
+- apiGroups: ["rbac.istio.io"]\r
+  resources:\r
+  - clusterrbacconfigs\r
+  - rbacconfigs\r
+  - servicerolebindings\r
+  - serviceroles\r
+  verbs:\r
+  - create\r
+  - delete\r
+  - get\r
+  - list\r
+  - patch\r
+  - watch\r
+- apiGroups: ["monitoring.kiali.io"]\r
+  resources:\r
+  - monitoringdashboards\r
+  verbs:\r
+  - get\r
+  - list\r
+---\r
+apiVersion: rbac.authorization.k8s.io/v1\r
+kind: ClusterRole\r
+metadata:\r
+  name: kiali-viewer\r
+  labels:\r
+    app: kiali\r
+    chart: kiali\r
+    heritage: Tiller\r
+    release: istio\r
+rules:\r
+- apiGroups: [""]\r
+  resources:\r
+  - configmaps\r
+  - endpoints\r
+  - namespaces\r
+  - nodes\r
+  - pods\r
+  - pods/log\r
+  - replicationcontrollers\r
+  - services\r
+  verbs:\r
+  - get\r
+  - list\r
+  - watch\r
+- apiGroups: ["extensions", "apps"]\r
+  resources:\r
+  - deployments\r
+  - replicasets\r
+  - statefulsets\r
+  verbs:\r
+  - get\r
+  - list\r
+  - watch\r
+- apiGroups: ["autoscaling"]\r
+  resources:\r
+  - horizontalpodautoscalers\r
+  verbs:\r
+  - get\r
+  - list\r
+  - watch\r
+- apiGroups: ["batch"]\r
+  resources:\r
+  - cronjobs\r
+  - jobs\r
+  verbs:\r
+  - get\r
+  - list\r
+  - watch\r
+- apiGroups: ["config.istio.io"]\r
+  resources:\r
+  - adapters\r
+  - apikeys\r
+  - bypasses\r
+  - authorizations\r
+  - checknothings\r
+  - circonuses\r
+  - cloudwatches\r
+  - deniers\r
+  - dogstatsds\r
+  - edges\r
+  - fluentds\r
+  - handlers\r
+  - instances\r
+  - kubernetesenvs\r
+  - kuberneteses\r
+  - listcheckers\r
+  - listentries\r
+  - logentries\r
+  - memquotas\r
+  - metrics\r
+  - noops\r
+  - opas\r
+  - prometheuses\r
+  - quotas\r
+  - quotaspecbindings\r
+  - quotaspecs\r
+  - rbacs\r
+  - redisquotas\r
+  - reportnothings\r
+  - rules\r
+  - signalfxs\r
+  - solarwindses\r
+  - stackdrivers\r
+  - statsds\r
+  - stdios\r
+  - templates\r
+  - tracespans\r
+  - zipkins\r
+  verbs:\r
+  - get\r
+  - list\r
+  - watch\r
+- apiGroups: ["networking.istio.io"]\r
+  resources:\r
+  - destinationrules\r
+  - gateways\r
+  - serviceentries\r
+  - virtualservices\r
+  verbs:\r
+  - get\r
+  - list\r
+  - watch\r
+- apiGroups: ["authentication.istio.io"]\r
+  resources:\r
+  - meshpolicies\r
+  - policies\r
+  verbs:\r
+  - get\r
+  - list\r
+  - watch\r
+- apiGroups: ["rbac.istio.io"]\r
+  resources:\r
+  - clusterrbacconfigs\r
+  - rbacconfigs\r
+  - servicerolebindings\r
+  - serviceroles\r
+  verbs:\r
+  - get\r
+  - list\r
+  - watch\r
+- apiGroups: ["monitoring.kiali.io"]\r
+  resources:\r
+  - monitoringdashboards\r
+  verbs:\r
+  - get\r
+  - list\r
+\r
+---\r
+# Source: istio/charts/mixer/templates/clusterrole.yaml\r
+\r
+apiVersion: rbac.authorization.k8s.io/v1\r
+kind: ClusterRole\r
+metadata:\r
+  name: istio-mixer-istio-system\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+rules:\r
+- apiGroups: ["config.istio.io"] # istio CRD watcher\r
+  resources: ["*"]\r
+  verbs: ["create", "get", "list", "watch", "patch"]\r
+- apiGroups: ["apiextensions.k8s.io"]\r
+  resources: ["customresourcedefinitions"]\r
+  verbs: ["get", "list", "watch"]\r
+- apiGroups: [""]\r
+  resources: ["configmaps", "endpoints", "pods", "services", "namespaces", "secrets", "replicationcontrollers"]\r
+  verbs: ["get", "list", "watch"]\r
+- apiGroups: ["extensions", "apps"]\r
+  resources: ["replicasets"]\r
+  verbs: ["get", "list", "watch"]\r
+\r
+---\r
+# Source: istio/charts/pilot/templates/clusterrole.yaml\r
+apiVersion: rbac.authorization.k8s.io/v1\r
+kind: ClusterRole\r
+metadata:\r
+  name: istio-pilot-istio-system\r
+  labels:\r
+    app: pilot\r
+    chart: pilot\r
+    heritage: Tiller\r
+    release: istio\r
+rules:\r
+- apiGroups: ["config.istio.io"]\r
+  resources: ["*"]\r
+  verbs: ["*"]\r
+- apiGroups: ["rbac.istio.io"]\r
+  resources: ["*"]\r
+  verbs: ["get", "watch", "list"]\r
+- apiGroups: ["networking.istio.io"]\r
+  resources: ["*"]\r
+  verbs: ["*"]\r
+- apiGroups: ["authentication.istio.io"]\r
+  resources: ["*"]\r
+  verbs: ["*"]\r
+- apiGroups: ["apiextensions.k8s.io"]\r
+  resources: ["customresourcedefinitions"]\r
+  verbs: ["*"]\r
+- apiGroups: ["extensions"]\r
+  resources: ["ingresses", "ingresses/status"]\r
+  verbs: ["*"]\r
+- apiGroups: [""]\r
+  resources: ["configmaps"]\r
+  verbs: ["create", "get", "list", "watch", "update"]\r
+- apiGroups: [""]\r
+  resources: ["endpoints", "pods", "services", "namespaces", "nodes", "secrets"]\r
+  verbs: ["get", "list", "watch"]\r
+\r
+---\r
+# Source: istio/charts/prometheus/templates/clusterrole.yaml\r
+apiVersion: rbac.authorization.k8s.io/v1\r
+kind: ClusterRole\r
+metadata:\r
+  name: prometheus-istio-system\r
+  labels:\r
+    app: prometheus\r
+    chart: prometheus\r
+    heritage: Tiller\r
+    release: istio\r
+rules:\r
+- apiGroups: [""]\r
+  resources:\r
+  - nodes\r
+  - services\r
+  - endpoints\r
+  - pods\r
+  - nodes/proxy\r
+  verbs: ["get", "list", "watch"]\r
+- apiGroups: [""]\r
+  resources:\r
+  - configmaps\r
+  verbs: ["get"]\r
+- nonResourceURLs: ["/metrics"]\r
+  verbs: ["get"]\r
+\r
+---\r
+# Source: istio/charts/security/templates/clusterrole.yaml\r
+apiVersion: rbac.authorization.k8s.io/v1\r
+kind: ClusterRole\r
+metadata:\r
+  name: istio-citadel-istio-system\r
+  labels:\r
+    app: security\r
+    chart: security\r
+    heritage: Tiller\r
+    release: istio\r
+rules:\r
+- apiGroups: [""]\r
+  resources: ["configmaps"]\r
+  verbs: ["create", "get", "update"]\r
+- apiGroups: [""]\r
+  resources: ["secrets"]\r
+  verbs: ["create", "get", "watch", "list", "update", "delete"]\r
+- apiGroups: [""]\r
+  resources: ["serviceaccounts", "services"]\r
+  verbs: ["get", "watch", "list"]\r
+- apiGroups: ["authentication.k8s.io"]\r
+  resources: ["tokenreviews"]\r
+  verbs: ["create"]\r
+\r
+---\r
+# Source: istio/charts/sidecarInjectorWebhook/templates/clusterrole.yaml\r
+apiVersion: rbac.authorization.k8s.io/v1\r
+kind: ClusterRole\r
+metadata:\r
+  name: istio-sidecar-injector-istio-system\r
+  labels:\r
+    app: sidecarInjectorWebhook\r
+    chart: sidecarInjectorWebhook\r
+    heritage: Tiller\r
+    release: istio\r
+    istio: sidecar-injector\r
+rules:\r
+- apiGroups: [""]\r
+  resources: ["configmaps"]\r
+  verbs: ["get", "list", "watch"]\r
+- apiGroups: ["admissionregistration.k8s.io"]\r
+  resources: ["mutatingwebhookconfigurations"]\r
+  verbs: ["get", "list", "watch", "patch"]\r
+\r
+---\r
+# Source: istio/templates/clusterrole.yaml\r
+kind: ClusterRole\r
+apiVersion: rbac.authorization.k8s.io/v1\r
+metadata:\r
+  name: istio-reader\r
+rules:\r
+  - apiGroups: ['']\r
+    resources: ['nodes', 'pods', 'services', 'endpoints', "replicationcontrollers"]\r
+    verbs: ['get', 'watch', 'list']\r
+  - apiGroups: ["extensions", "apps"]\r
+    resources: ["replicasets"]\r
+    verbs: ["get", "list", "watch"]\r
+\r
+---\r
+# Source: istio/charts/galley/templates/clusterrolebinding.yaml\r
+apiVersion: rbac.authorization.k8s.io/v1\r
+kind: ClusterRoleBinding\r
+metadata:\r
+  name: istio-galley-admin-role-binding-istio-system\r
+  labels:\r
+    app: galley\r
+    chart: galley\r
+    heritage: Tiller\r
+    release: istio\r
+roleRef:\r
+  apiGroup: rbac.authorization.k8s.io\r
+  kind: ClusterRole\r
+  name: istio-galley-istio-system\r
+subjects:\r
+  - kind: ServiceAccount\r
+    name: istio-galley-service-account\r
+    namespace: istio-system\r
+\r
+---\r
+# Source: istio/charts/kiali/templates/clusterrolebinding.yaml\r
+apiVersion: rbac.authorization.k8s.io/v1\r
+kind: ClusterRoleBinding\r
+metadata:\r
+  name: istio-kiali-admin-role-binding-istio-system\r
+  labels:\r
+    app: kiali\r
+    chart: kiali\r
+    heritage: Tiller\r
+    release: istio\r
+roleRef:\r
+  apiGroup: rbac.authorization.k8s.io\r
+  kind: ClusterRole\r
+  name: kiali\r
+subjects:\r
+- kind: ServiceAccount\r
+  name: kiali-service-account\r
+  namespace: istio-system\r
+\r
+---\r
+# Source: istio/charts/mixer/templates/clusterrolebinding.yaml\r
+\r
+apiVersion: rbac.authorization.k8s.io/v1\r
+kind: ClusterRoleBinding\r
+metadata:\r
+  name: istio-mixer-admin-role-binding-istio-system\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+roleRef:\r
+  apiGroup: rbac.authorization.k8s.io\r
+  kind: ClusterRole\r
+  name: istio-mixer-istio-system\r
+subjects:\r
+  - kind: ServiceAccount\r
+    name: istio-mixer-service-account\r
+    namespace: istio-system\r
+\r
+---\r
+# Source: istio/charts/pilot/templates/clusterrolebinding.yaml\r
+apiVersion: rbac.authorization.k8s.io/v1\r
+kind: ClusterRoleBinding\r
+metadata:\r
+  name: istio-pilot-istio-system\r
+  labels:\r
+    app: pilot\r
+    chart: pilot\r
+    heritage: Tiller\r
+    release: istio\r
+roleRef:\r
+  apiGroup: rbac.authorization.k8s.io\r
+  kind: ClusterRole\r
+  name: istio-pilot-istio-system\r
+subjects:\r
+  - kind: ServiceAccount\r
+    name: istio-pilot-service-account\r
+    namespace: istio-system\r
+\r
+---\r
+# Source: istio/charts/prometheus/templates/clusterrolebindings.yaml\r
+apiVersion: rbac.authorization.k8s.io/v1\r
+kind: ClusterRoleBinding\r
+metadata:\r
+  name: prometheus-istio-system\r
+  labels:\r
+    app: prometheus\r
+    chart: prometheus\r
+    heritage: Tiller\r
+    release: istio\r
+roleRef:\r
+  apiGroup: rbac.authorization.k8s.io\r
+  kind: ClusterRole\r
+  name: prometheus-istio-system\r
+subjects:\r
+- kind: ServiceAccount\r
+  name: prometheus\r
+  namespace: istio-system\r
+\r
+---\r
+# Source: istio/charts/security/templates/clusterrolebinding.yaml\r
+apiVersion: rbac.authorization.k8s.io/v1\r
+kind: ClusterRoleBinding\r
+metadata:\r
+  name: istio-citadel-istio-system\r
+  labels:\r
+    app: security\r
+    chart: security\r
+    heritage: Tiller\r
+    release: istio\r
+roleRef:\r
+  apiGroup: rbac.authorization.k8s.io\r
+  kind: ClusterRole\r
+  name: istio-citadel-istio-system\r
+subjects:\r
+  - kind: ServiceAccount\r
+    name: istio-citadel-service-account\r
+    namespace: istio-system\r
+\r
+---\r
+# Source: istio/charts/sidecarInjectorWebhook/templates/clusterrolebinding.yaml\r
+apiVersion: rbac.authorization.k8s.io/v1\r
+kind: ClusterRoleBinding\r
+metadata:\r
+  name: istio-sidecar-injector-admin-role-binding-istio-system\r
+  labels:\r
+    app: sidecarInjectorWebhook\r
+    chart: sidecarInjectorWebhook\r
+    heritage: Tiller\r
+    release: istio\r
+    istio: sidecar-injector\r
+roleRef:\r
+  apiGroup: rbac.authorization.k8s.io\r
+  kind: ClusterRole\r
+  name: istio-sidecar-injector-istio-system\r
+subjects:\r
+  - kind: ServiceAccount\r
+    name: istio-sidecar-injector-service-account\r
+    namespace: istio-system\r
+\r
+---\r
+# Source: istio/templates/clusterrolebinding.yaml\r
+apiVersion: rbac.authorization.k8s.io/v1\r
+kind: ClusterRoleBinding\r
+metadata:\r
+  name: istio-multi\r
+  labels:\r
+    chart: istio-1.1.0\r
+roleRef:\r
+  apiGroup: rbac.authorization.k8s.io\r
+  kind: ClusterRole\r
+  name: istio-reader\r
+subjects:\r
+- kind: ServiceAccount\r
+  name: istio-multi\r
+  namespace: istio-system\r
+\r
+---\r
+# Source: istio/charts/gateways/templates/role.yaml\r
+\r
+apiVersion: rbac.authorization.k8s.io/v1\r
+kind: Role\r
+metadata:\r
+  name: istio-ingressgateway-sds\r
+  namespace: istio-system\r
+rules:\r
+- apiGroups: [""]\r
+  resources: ["secrets"]\r
+  verbs: ["get", "watch", "list"]\r
+---\r
+\r
+---\r
+# Source: istio/charts/gateways/templates/rolebindings.yaml\r
+\r
+apiVersion: rbac.authorization.k8s.io/v1\r
+kind: RoleBinding\r
+metadata:\r
+  name: istio-ingressgateway-sds\r
+  namespace: istio-system\r
+roleRef:\r
+  apiGroup: rbac.authorization.k8s.io\r
+  kind: Role\r
+  name: istio-ingressgateway-sds\r
+subjects:\r
+- kind: ServiceAccount\r
+  name: istio-ingressgateway-service-account\r
+---\r
+\r
+---\r
+# Source: istio/charts/galley/templates/service.yaml\r
+apiVersion: v1\r
+kind: Service\r
+metadata:\r
+  name: istio-galley\r
+  namespace: istio-system\r
+  labels:\r
+    app: galley\r
+    chart: galley\r
+    heritage: Tiller\r
+    release: istio\r
+    istio: galley\r
+spec:\r
+  ports:\r
+  - port: 443\r
+    name: https-validation\r
+  - port: 15014\r
+    name: http-monitoring\r
+  - port: 9901\r
+    name: grpc-mcp\r
+  selector:\r
+    istio: galley\r
+\r
+---\r
+# Source: istio/charts/gateways/templates/service.yaml\r
+\r
+apiVersion: v1\r
+kind: Service\r
+metadata:\r
+  name: istio-egressgateway\r
+  namespace: istio-system\r
+  annotations:\r
+  labels:\r
+    chart: gateways\r
+    heritage: Tiller\r
+    release: istio\r
+    app: istio-egressgateway\r
+    istio: egressgateway\r
+spec:\r
+  type: ClusterIP\r
+  selector:\r
+    release: istio\r
+    app: istio-egressgateway\r
+    istio: egressgateway\r
+  ports:\r
+    -\r
+      name: http2\r
+      port: 80\r
+    -\r
+      name: https\r
+      port: 443\r
+    -\r
+      name: tls\r
+      port: 15443\r
+      targetPort: 15443\r
+---\r
+apiVersion: v1\r
+kind: Service\r
+metadata:\r
+  name: istio-ingressgateway\r
+  namespace: istio-system\r
+  annotations:\r
+  labels:\r
+    chart: gateways\r
+    heritage: Tiller\r
+    release: istio\r
+    app: istio-ingressgateway\r
+    istio: ingressgateway\r
+spec:\r
+  type: LoadBalancer\r
+  selector:\r
+    release: istio\r
+    app: istio-ingressgateway\r
+    istio: ingressgateway\r
+  ports:\r
+    -\r
+      name: status-port\r
+      port: 15020\r
+      targetPort: 15020\r
+    -\r
+      name: http2\r
+      nodePort: 31380\r
+      port: 80\r
+      targetPort: 80\r
+    -\r
+      name: https\r
+      nodePort: 31390\r
+      port: 443\r
+    -\r
+      name: tcp\r
+      nodePort: 31400\r
+      port: 31400\r
+    -\r
+      name: https-kiali\r
+      port: 15029\r
+      targetPort: 15029\r
+    -\r
+      name: https-prometheus\r
+      port: 15030\r
+      targetPort: 15030\r
+    -\r
+      name: https-grafana\r
+      port: 15031\r
+      targetPort: 15031\r
+    -\r
+      name: https-tracing\r
+      port: 15032\r
+      targetPort: 15032\r
+    -\r
+      name: tls\r
+      port: 15443\r
+      targetPort: 15443\r
+---\r
+\r
+---\r
+# Source: istio/charts/grafana/templates/service.yaml\r
+apiVersion: v1\r
+kind: Service\r
+metadata:\r
+  name: grafana\r
+  namespace: istio-system\r
+  annotations:\r
+  labels:\r
+    app: grafana\r
+    chart: grafana\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  type: ClusterIP\r
+  ports:\r
+    - port: 3000\r
+      targetPort: 3000\r
+      protocol: TCP\r
+      name: http\r
+  selector:\r
+    app: grafana\r
+\r
+---\r
+# Source: istio/charts/kiali/templates/service.yaml\r
+apiVersion: v1\r
+kind: Service\r
+metadata:\r
+  name: kiali\r
+  namespace: istio-system\r
+  labels:\r
+    app: kiali\r
+    chart: kiali\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  ports:\r
+  - name: http-kiali\r
+    protocol: TCP\r
+    port: 20001\r
+  selector:\r
+    app: kiali\r
+\r
+---\r
+# Source: istio/charts/mixer/templates/service.yaml\r
+\r
+apiVersion: v1\r
+kind: Service\r
+metadata:\r
+  name: istio-policy\r
+  namespace: istio-system\r
+  annotations:\r
+   networking.istio.io/exportTo: "*"\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+    istio: mixer\r
+spec:\r
+  ports:\r
+  - name: grpc-mixer\r
+    port: 9091\r
+  - name: grpc-mixer-mtls\r
+    port: 15004\r
+  - name: http-monitoring\r
+    port: 15014\r
+  selector:\r
+    istio: mixer\r
+    istio-mixer-type: policy\r
+---\r
+apiVersion: v1\r
+kind: Service\r
+metadata:\r
+  name: istio-telemetry\r
+  namespace: istio-system\r
+  annotations:\r
+   networking.istio.io/exportTo: "*"\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+    istio: mixer\r
+spec:\r
+  ports:\r
+  - name: grpc-mixer\r
+    port: 9091\r
+  - name: grpc-mixer-mtls\r
+    port: 15004\r
+  - name: http-monitoring\r
+    port: 15014\r
+  - name: prometheus\r
+    port: 42422\r
+  selector:\r
+    istio: mixer\r
+    istio-mixer-type: telemetry\r
+---\r
+\r
+\r
+---\r
+# Source: istio/charts/pilot/templates/service.yaml\r
+apiVersion: v1\r
+kind: Service\r
+metadata:\r
+  name: istio-pilot\r
+  namespace: istio-system\r
+  labels:\r
+    app: pilot\r
+    chart: pilot\r
+    heritage: Tiller\r
+    release: istio\r
+    istio: pilot\r
+spec:\r
+  ports:\r
+  - port: 15010\r
+    name: grpc-xds # direct\r
+  - port: 15011\r
+    name: https-xds # mTLS\r
+  - port: 8080\r
+    name: http-legacy-discovery # direct\r
+  - port: 15014\r
+    name: http-monitoring\r
+  selector:\r
+    istio: pilot\r
+\r
+---\r
+# Source: istio/charts/prometheus/templates/service.yaml\r
+apiVersion: v1\r
+kind: Service\r
+metadata:\r
+  name: prometheus\r
+  namespace: istio-system\r
+  annotations:\r
+    prometheus.io/scrape: 'true'\r
+  labels:\r
+    app: prometheus\r
+    chart: prometheus\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  selector:\r
+    app: prometheus\r
+  ports:\r
+  - name: http-prometheus\r
+    protocol: TCP\r
+    port: 9090\r
+\r
+---\r
+# Source: istio/charts/security/templates/service.yaml\r
+apiVersion: v1\r
+kind: Service\r
+metadata:\r
+  # we use the normal name here (e.g. 'prometheus')\r
+  # as grafana is configured to use this as a data source\r
+  name: istio-citadel\r
+  namespace: istio-system\r
+  labels:\r
+    app: security\r
+    chart: security\r
+    heritage: Tiller\r
+    release: istio\r
+    istio: citadel\r
+spec:\r
+  ports:\r
+    - name: grpc-citadel\r
+      port: 8060\r
+      targetPort: 8060\r
+      protocol: TCP\r
+    - name: http-monitoring\r
+      port: 15014\r
+  selector:\r
+    istio: citadel\r
+\r
+---\r
+# Source: istio/charts/sidecarInjectorWebhook/templates/service.yaml\r
+apiVersion: v1\r
+kind: Service\r
+metadata:\r
+  name: istio-sidecar-injector\r
+  namespace: istio-system\r
+  labels:\r
+    app: sidecarInjectorWebhook\r
+    chart: sidecarInjectorWebhook\r
+    heritage: Tiller\r
+    release: istio\r
+    istio: sidecar-injector\r
+spec:\r
+  ports:\r
+  - port: 443\r
+  selector:\r
+    istio: sidecar-injector\r
+\r
+---\r
+# Source: istio/charts/galley/templates/deployment.yaml\r
+apiVersion: apps/v1\r
+kind: Deployment\r
+metadata:\r
+  name: istio-galley\r
+  namespace: istio-system\r
+  labels:\r
+    app: galley\r
+    chart: galley\r
+    heritage: Tiller\r
+    release: istio\r
+    istio: galley\r
+spec:\r
+  replicas: 1\r
+  selector:\r
+    matchLabels:\r
+      istio: galley\r
+  strategy:\r
+    rollingUpdate:\r
+      maxSurge: 1\r
+      maxUnavailable: 0\r
+  template:\r
+    metadata:\r
+      labels:\r
+        app: galley\r
+        chart: galley\r
+        heritage: Tiller\r
+        release:   istio\r
+        istio: galley\r
+      annotations:\r
+        sidecar.istio.io/inject: "false"\r
+    spec:\r
+      serviceAccountName: istio-galley-service-account\r
+      containers:\r
+        - name: galley\r
+          image: "iecedge/galley-arm64:1.2.3"\r
+          imagePullPolicy: IfNotPresent\r
+          ports:\r
+          - containerPort: 443\r
+          - containerPort: 15014\r
+          - containerPort: 9901\r
+          command:\r
+          - /usr/local/bin/galley\r
+          - server\r
+          - --meshConfigFile=/etc/mesh-config/mesh\r
+          - --livenessProbeInterval=1s\r
+          - --livenessProbePath=/healthliveness\r
+          - --readinessProbePath=/healthready\r
+          - --readinessProbeInterval=1s\r
+          - --deployment-namespace=istio-system\r
+          - --insecure=true\r
+          - --validation-webhook-config-file\r
+          - /etc/config/validatingwebhookconfiguration.yaml\r
+          - --monitoringPort=15014\r
+          - --log_output_level=default:info\r
+          volumeMounts:\r
+          - name: certs\r
+            mountPath: /etc/certs\r
+            readOnly: true\r
+          - name: config\r
+            mountPath: /etc/config\r
+            readOnly: true\r
+          - name: mesh-config\r
+            mountPath: /etc/mesh-config\r
+            readOnly: true\r
+          livenessProbe:\r
+            exec:\r
+              command:\r
+                - /usr/local/bin/galley\r
+                - probe\r
+                - --probe-path=/healthliveness\r
+                - --interval=10s\r
+            initialDelaySeconds: 5\r
+            periodSeconds: 5\r
+          readinessProbe:\r
+            exec:\r
+              command:\r
+                - /usr/local/bin/galley\r
+                - probe\r
+                - --probe-path=/healthready\r
+                - --interval=10s\r
+            initialDelaySeconds: 5\r
+            periodSeconds: 5\r
+          resources:\r
+            requests:\r
+              cpu: 10m\r
+            \r
+      volumes:\r
+      - name: certs\r
+        secret:\r
+          secretName: istio.istio-galley-service-account\r
+      - name: config\r
+        configMap:\r
+          name: istio-galley-configuration\r
+      - name: mesh-config\r
+        configMap:\r
+          name: istio\r
+      affinity:\r
+        nodeAffinity:\r
+          requiredDuringSchedulingIgnoredDuringExecution:\r
+            nodeSelectorTerms:\r
+            - matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+                - ppc64le\r
+                - arm64\r
+          preferredDuringSchedulingIgnoredDuringExecution:\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - ppc64le\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - arm64\r
+\r
+---\r
+# Source: istio/charts/gateways/templates/deployment.yaml\r
+\r
+apiVersion: apps/v1\r
+kind: Deployment\r
+metadata:\r
+  name: istio-egressgateway\r
+  namespace: istio-system\r
+  labels:\r
+    chart: gateways\r
+    heritage: Tiller\r
+    release: istio\r
+    app: istio-egressgateway\r
+    istio: egressgateway\r
+spec:\r
+  replicas: 1\r
+  selector:\r
+    matchLabels:\r
+      app: istio-egressgateway\r
+      istio: egressgateway\r
+  template:\r
+    metadata:\r
+      labels:\r
+        chart: gateways\r
+        heritage: Tiller\r
+        release: istio\r
+        app: istio-egressgateway\r
+        istio: egressgateway\r
+      annotations:\r
+        sidecar.istio.io/inject: "false"\r
+    spec:\r
+      serviceAccountName: istio-egressgateway-service-account\r
+      containers:\r
+        - name: istio-proxy\r
+          image: "iecedge/proxyv2-arm64:1.2.3"\r
+          imagePullPolicy: IfNotPresent\r
+          ports:\r
+            - containerPort: 80\r
+            - containerPort: 443\r
+            - containerPort: 15443\r
+            - containerPort: 15090\r
+              protocol: TCP\r
+              name: http-envoy-prom\r
+          args:\r
+          - proxy\r
+          - router\r
+          - --domain\r
+          - $(POD_NAMESPACE).svc.cluster.local\r
+          - --log_output_level=default:info\r
+          - --drainDuration\r
+          - '45s' #drainDuration\r
+          - --parentShutdownDuration\r
+          - '1m0s' #parentShutdownDuration\r
+          - --connectTimeout\r
+          - '10s' #connectTimeout\r
+          - --serviceCluster\r
+          - istio-egressgateway\r
+          - --zipkinAddress\r
+          - zipkin:9411\r
+          - --proxyAdminPort\r
+          - "15000"\r
+          - --statusPort\r
+          - "15020"\r
+          - --controlPlaneAuthPolicy\r
+          - NONE\r
+          - --discoveryAddress\r
+          - istio-pilot:15010\r
+          readinessProbe:\r
+            failureThreshold: 30\r
+            httpGet:\r
+              path: /healthz/ready\r
+              port: 15020\r
+              scheme: HTTP\r
+            initialDelaySeconds: 1\r
+            periodSeconds: 2\r
+            successThreshold: 1\r
+            timeoutSeconds: 1\r
+          resources:\r
+            limits:\r
+              cpu: 2000m\r
+              memory: 256Mi\r
+            requests:\r
+              cpu: 10m\r
+              memory: 40Mi\r
+\r
+          env:\r
+          - name: NODE_NAME\r
+            valueFrom:\r
+              fieldRef:\r
+                apiVersion: v1\r
+                fieldPath: spec.nodeName\r
+          - name: POD_NAME\r
+            valueFrom:\r
+              fieldRef:\r
+                apiVersion: v1\r
+                fieldPath: metadata.name\r
+          - name: POD_NAMESPACE\r
+            valueFrom:\r
+              fieldRef:\r
+                apiVersion: v1\r
+                fieldPath: metadata.namespace\r
+          - name: INSTANCE_IP\r
+            valueFrom:\r
+              fieldRef:\r
+                apiVersion: v1\r
+                fieldPath: status.podIP\r
+          - name: HOST_IP\r
+            valueFrom:\r
+              fieldRef:\r
+                apiVersion: v1\r
+                fieldPath: status.hostIP\r
+          - name: ISTIO_META_POD_NAME\r
+            valueFrom:\r
+              fieldRef:\r
+                apiVersion: v1\r
+                fieldPath: metadata.name\r
+          - name: ISTIO_META_CONFIG_NAMESPACE\r
+            valueFrom:\r
+              fieldRef:\r
+                fieldPath: metadata.namespace\r
+          - name: ISTIO_META_ROUTER_MODE\r
+            value: sni-dnat\r
+          volumeMounts:\r
+          - name: istio-certs\r
+            mountPath: /etc/certs\r
+            readOnly: true\r
+          - name: egressgateway-certs\r
+            mountPath: "/etc/istio/egressgateway-certs"\r
+            readOnly: true\r
+          - name: egressgateway-ca-certs\r
+            mountPath: "/etc/istio/egressgateway-ca-certs"\r
+            readOnly: true\r
+      volumes:\r
+      - name: istio-certs\r
+        secret:\r
+          secretName: istio.istio-egressgateway-service-account\r
+          optional: true\r
+      - name: egressgateway-certs\r
+        secret:\r
+          secretName: "istio-egressgateway-certs"\r
+          optional: true\r
+      - name: egressgateway-ca-certs\r
+        secret:\r
+          secretName: "istio-egressgateway-ca-certs"\r
+          optional: true\r
+      affinity:\r
+        nodeAffinity:\r
+          requiredDuringSchedulingIgnoredDuringExecution:\r
+            nodeSelectorTerms:\r
+            - matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+                - ppc64le\r
+                - arm64\r
+          preferredDuringSchedulingIgnoredDuringExecution:\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - ppc64le\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - arm64\r
+---\r
+apiVersion: apps/v1\r
+kind: Deployment\r
+metadata:\r
+  name: istio-ingressgateway\r
+  namespace: istio-system\r
+  labels:\r
+    chart: gateways\r
+    heritage: Tiller\r
+    release: istio\r
+    app: istio-ingressgateway\r
+    istio: ingressgateway\r
+spec:\r
+  replicas: 1\r
+  selector:\r
+    matchLabels:\r
+      app: istio-ingressgateway\r
+      istio: ingressgateway\r
+  template:\r
+    metadata:\r
+      labels:\r
+        chart: gateways\r
+        heritage: Tiller\r
+        release: istio\r
+        app: istio-ingressgateway\r
+        istio: ingressgateway\r
+      annotations:\r
+        sidecar.istio.io/inject: "false"\r
+    spec:\r
+      serviceAccountName: istio-ingressgateway-service-account\r
+      containers:\r
+        - name: istio-proxy\r
+          image: "iecedge/proxyv2-arm64:1.2.3"\r
+          imagePullPolicy: IfNotPresent\r
+          ports:\r
+            - containerPort: 15020\r
+            - containerPort: 80\r
+            - containerPort: 443\r
+            - containerPort: 31400\r
+            - containerPort: 15029\r
+            - containerPort: 15030\r
+            - containerPort: 15031\r
+            - containerPort: 15032\r
+            - containerPort: 15443\r
+            - containerPort: 15090\r
+              protocol: TCP\r
+              name: http-envoy-prom\r
+          args:\r
+          - proxy\r
+          - router\r
+          - --domain\r
+          - $(POD_NAMESPACE).svc.cluster.local\r
+          - --log_output_level=default:info\r
+          - --drainDuration\r
+          - '45s' #drainDuration\r
+          - --parentShutdownDuration\r
+          - '1m0s' #parentShutdownDuration\r
+          - --connectTimeout\r
+          - '10s' #connectTimeout\r
+          - --serviceCluster\r
+          - istio-ingressgateway\r
+          - --zipkinAddress\r
+          - zipkin:9411\r
+          - --proxyAdminPort\r
+          - "15000"\r
+          - --statusPort\r
+          - "15020"\r
+          - --controlPlaneAuthPolicy\r
+          - NONE\r
+          - --discoveryAddress\r
+          - istio-pilot:15010\r
+          readinessProbe:\r
+            failureThreshold: 30\r
+            httpGet:\r
+              path: /healthz/ready\r
+              port: 15020\r
+              scheme: HTTP\r
+            initialDelaySeconds: 1\r
+            periodSeconds: 2\r
+            successThreshold: 1\r
+            timeoutSeconds: 1\r
+          resources:\r
+            limits:\r
+              cpu: 2000m\r
+              memory: 1024Mi\r
+            requests:\r
+              cpu: 10m\r
+              memory: 40Mi\r
+\r
+          env:\r
+          - name: NODE_NAME\r
+            valueFrom:\r
+              fieldRef:\r
+                apiVersion: v1\r
+                fieldPath: spec.nodeName\r
+          - name: POD_NAME\r
+            valueFrom:\r
+              fieldRef:\r
+                apiVersion: v1\r
+                fieldPath: metadata.name\r
+          - name: POD_NAMESPACE\r
+            valueFrom:\r
+              fieldRef:\r
+                apiVersion: v1\r
+                fieldPath: metadata.namespace\r
+          - name: INSTANCE_IP\r
+            valueFrom:\r
+              fieldRef:\r
+                apiVersion: v1\r
+                fieldPath: status.podIP\r
+          - name: HOST_IP\r
+            valueFrom:\r
+              fieldRef:\r
+                apiVersion: v1\r
+                fieldPath: status.hostIP\r
+          - name: ISTIO_META_POD_NAME\r
+            valueFrom:\r
+              fieldRef:\r
+                apiVersion: v1\r
+                fieldPath: metadata.name\r
+          - name: ISTIO_META_CONFIG_NAMESPACE\r
+            valueFrom:\r
+              fieldRef:\r
+                fieldPath: metadata.namespace\r
+          - name: ISTIO_META_ROUTER_MODE\r
+            value: sni-dnat\r
+          volumeMounts:\r
+          - name: istio-certs\r
+            mountPath: /etc/certs\r
+            readOnly: true\r
+          - name: ingressgateway-certs\r
+            mountPath: "/etc/istio/ingressgateway-certs"\r
+            readOnly: true\r
+          - name: ingressgateway-ca-certs\r
+            mountPath: "/etc/istio/ingressgateway-ca-certs"\r
+            readOnly: true\r
+      volumes:\r
+      - name: istio-certs\r
+        secret:\r
+          secretName: istio.istio-ingressgateway-service-account\r
+          optional: true\r
+      - name: ingressgateway-certs\r
+        secret:\r
+          secretName: "istio-ingressgateway-certs"\r
+          optional: true\r
+      - name: ingressgateway-ca-certs\r
+        secret:\r
+          secretName: "istio-ingressgateway-ca-certs"\r
+          optional: true\r
+      affinity:\r
+        nodeAffinity:\r
+          requiredDuringSchedulingIgnoredDuringExecution:\r
+            nodeSelectorTerms:\r
+            - matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+                - ppc64le\r
+                - arm64\r
+          preferredDuringSchedulingIgnoredDuringExecution:\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - ppc64le\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - arm64\r
+---\r
+\r
+---\r
+# Source: istio/charts/grafana/templates/deployment.yaml\r
+apiVersion: apps/v1\r
+kind: Deployment\r
+metadata:\r
+  name: grafana\r
+  namespace: istio-system\r
+  labels:\r
+    app: grafana\r
+    chart: grafana\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  replicas: 1\r
+  selector:\r
+    matchLabels:\r
+      app: grafana\r
+  template:\r
+    metadata:\r
+      labels:\r
+        app: grafana\r
+        chart: grafana\r
+        heritage: Tiller\r
+        release: istio\r
+      annotations:\r
+        sidecar.istio.io/inject: "false"\r
+        prometheus.io/scrape: "true"\r
+    spec:\r
+      securityContext:\r
+        runAsUser: 472\r
+        fsGroup: 472\r
+      containers:\r
+        - name: grafana\r
+          image: "grafana/grafana:6.1.6"\r
+          imagePullPolicy: IfNotPresent\r
+          ports:\r
+          - containerPort: 3000\r
+          readinessProbe:\r
+            httpGet:\r
+              path: /login\r
+              port: 3000\r
+          env:\r
+          - name: GRAFANA_PORT\r
+            value: "3000"\r
+          - name: GF_AUTH_BASIC_ENABLED\r
+            value: "false"\r
+          - name: GF_AUTH_ANONYMOUS_ENABLED\r
+            value: "true"\r
+          - name: GF_AUTH_ANONYMOUS_ORG_ROLE\r
+            value: Admin\r
+          - name: GF_PATHS_DATA\r
+            value: /data/grafana\r
+          resources:\r
+            requests:\r
+              cpu: 10m\r
+\r
+          volumeMounts:\r
+          - name: data\r
+            mountPath: /data/grafana\r
+          - name: dashboards-istio-galley-dashboard\r
+            mountPath: "/var/lib/grafana/dashboards/istio/galley-dashboard.json"\r
+            subPath: galley-dashboard.json\r
+            readOnly: true\r
+          - name: dashboards-istio-istio-mesh-dashboard\r
+            mountPath: "/var/lib/grafana/dashboards/istio/istio-mesh-dashboard.json"\r
+            subPath: istio-mesh-dashboard.json\r
+            readOnly: true\r
+          - name: dashboards-istio-istio-performance-dashboard\r
+            mountPath: "/var/lib/grafana/dashboards/istio/istio-performance-dashboard.json"\r
+            subPath: istio-performance-dashboard.json\r
+            readOnly: true\r
+          - name: dashboards-istio-istio-service-dashboard\r
+            mountPath: "/var/lib/grafana/dashboards/istio/istio-service-dashboard.json"\r
+            subPath: istio-service-dashboard.json\r
+            readOnly: true\r
+          - name: dashboards-istio-istio-workload-dashboard\r
+            mountPath: "/var/lib/grafana/dashboards/istio/istio-workload-dashboard.json"\r
+            subPath: istio-workload-dashboard.json\r
+            readOnly: true\r
+          - name: dashboards-istio-mixer-dashboard\r
+            mountPath: "/var/lib/grafana/dashboards/istio/mixer-dashboard.json"\r
+            subPath: mixer-dashboard.json\r
+            readOnly: true\r
+          - name: dashboards-istio-pilot-dashboard\r
+            mountPath: "/var/lib/grafana/dashboards/istio/pilot-dashboard.json"\r
+            subPath: pilot-dashboard.json\r
+            readOnly: true\r
+          - name: config\r
+            mountPath: "/etc/grafana/provisioning/datasources/datasources.yaml"\r
+            subPath: datasources.yaml\r
+          - name: config\r
+            mountPath: "/etc/grafana/provisioning/dashboards/dashboardproviders.yaml"\r
+            subPath: dashboardproviders.yaml\r
+      affinity:\r
+        nodeAffinity:\r
+          requiredDuringSchedulingIgnoredDuringExecution:\r
+            nodeSelectorTerms:\r
+            - matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+                - ppc64le\r
+                - arm64\r
+          preferredDuringSchedulingIgnoredDuringExecution:\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - ppc64le\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - arm64\r
+      volumes:\r
+      - name: config\r
+        configMap:\r
+          name: istio-grafana\r
+      - name: data\r
+        emptyDir: {}\r
+      - name: dashboards-istio-galley-dashboard\r
+        configMap:\r
+          name:  istio-grafana-configuration-dashboards-galley-dashboard\r
+      - name: dashboards-istio-istio-mesh-dashboard\r
+        configMap:\r
+          name:  istio-grafana-configuration-dashboards-istio-mesh-dashboard\r
+      - name: dashboards-istio-istio-performance-dashboard\r
+        configMap:\r
+          name:  istio-grafana-configuration-dashboards-istio-performance-dashboard\r
+      - name: dashboards-istio-istio-service-dashboard\r
+        configMap:\r
+          name:  istio-grafana-configuration-dashboards-istio-service-dashboard\r
+      - name: dashboards-istio-istio-workload-dashboard\r
+        configMap:\r
+          name:  istio-grafana-configuration-dashboards-istio-workload-dashboard\r
+      - name: dashboards-istio-mixer-dashboard\r
+        configMap:\r
+          name:  istio-grafana-configuration-dashboards-mixer-dashboard\r
+      - name: dashboards-istio-pilot-dashboard\r
+        configMap:\r
+          name:  istio-grafana-configuration-dashboards-pilot-dashboard\r
+\r
+---\r
+# Source: istio/charts/kiali/templates/deployment.yaml\r
+apiVersion: apps/v1\r
+kind: Deployment\r
+metadata:\r
+  name: kiali\r
+  namespace: istio-system\r
+  labels:\r
+    app: kiali\r
+    chart: kiali\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  replicas: 1\r
+  selector:\r
+    matchLabels:\r
+      app: kiali\r
+  template:\r
+    metadata:\r
+      name: kiali\r
+      labels:\r
+        app: kiali\r
+        chart: kiali\r
+        heritage: Tiller\r
+        release: istio\r
+      annotations:\r
+        sidecar.istio.io/inject: "false"\r
+        scheduler.alpha.kubernetes.io/critical-pod: ""\r
+        prometheus.io/scrape: "true"\r
+        prometheus.io/port: "9090"\r
+    spec:\r
+      serviceAccountName: kiali-service-account\r
+      containers:\r
+      - image: "lurenjia/kiali:v1.11.0"\r
+        imagePullPolicy: IfNotPresent\r
+        name: kiali\r
+        command:\r
+        - "/opt/kiali/kiali"\r
+        - "-config"\r
+        - "/kiali-configuration/config.yaml"\r
+        - "-v"\r
+        - "4"\r
+        env:\r
+        - name: ACTIVE_NAMESPACE\r
+          valueFrom:\r
+            fieldRef:\r
+              fieldPath: metadata.namespace\r
+        volumeMounts:\r
+        - name: kiali-configuration\r
+          mountPath: "/kiali-configuration"\r
+        - name: kiali-secret\r
+          mountPath: "/kiali-secret"\r
+        resources:\r
+          requests:\r
+            cpu: 10m\r
+          \r
+      volumes:\r
+      - name: kiali-configuration\r
+        configMap:\r
+          name: kiali\r
+      - name: kiali-secret\r
+        secret:\r
+          secretName: kiali\r
+          optional: true\r
+      affinity:\r
+        nodeAffinity:\r
+          requiredDuringSchedulingIgnoredDuringExecution:\r
+            nodeSelectorTerms:\r
+            - matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+                - ppc64le\r
+                - arm64\r
+          preferredDuringSchedulingIgnoredDuringExecution:\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - ppc64le\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - arm64\r
+\r
+---\r
+# Source: istio/charts/mixer/templates/deployment.yaml\r
+\r
+apiVersion: apps/v1\r
+kind: Deployment\r
+metadata:\r
+  name: istio-policy\r
+  namespace: istio-system\r
+  labels:\r
+    app: istio-mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+    istio: mixer\r
+spec:\r
+  replicas: 1\r
+  strategy:\r
+    rollingUpdate:\r
+      maxSurge: 1\r
+      maxUnavailable: 0\r
+  selector:\r
+    matchLabels:\r
+      istio: mixer\r
+      istio-mixer-type: policy\r
+  template:\r
+    metadata:\r
+      labels:\r
+        app: policy\r
+        chart: mixer\r
+        heritage: Tiller\r
+        release: istio\r
+        istio: mixer\r
+        istio-mixer-type: policy\r
+      annotations:\r
+        sidecar.istio.io/inject: "false"\r
+    spec:\r
+      serviceAccountName: istio-mixer-service-account\r
+      volumes:\r
+      - name: istio-certs\r
+        secret:\r
+          secretName: istio.istio-mixer-service-account\r
+          optional: true\r
+      - name: uds-socket\r
+        emptyDir: {}\r
+      - name: policy-adapter-secret\r
+        secret:\r
+          secretName: policy-adapter-secret\r
+          optional: true\r
+      affinity:\r
+        nodeAffinity:\r
+          requiredDuringSchedulingIgnoredDuringExecution:\r
+            nodeSelectorTerms:\r
+            - matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+                - ppc64le\r
+                - arm64\r
+          preferredDuringSchedulingIgnoredDuringExecution:\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - ppc64le\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - arm64\r
+      containers:\r
+      - name: mixer\r
+        image: "iecedge/mixer-arm64:1.2.3"\r
+        imagePullPolicy: IfNotPresent\r
+        ports:\r
+        - containerPort: 15014\r
+        - containerPort: 42422\r
+        args:\r
+          - --monitoringPort=15014\r
+          - --address\r
+          - unix:///sock/mixer.socket\r
+          - --log_output_level=default:info\r
+          - --configStoreURL=mcp://istio-galley.istio-system.svc:9901\r
+          - --configDefaultNamespace=istio-system\r
+          - --useAdapterCRDs=false\r
+          - --useTemplateCRDs=false\r
+          - --trace_zipkin_url=http://zipkin.istio-system:9411/api/v1/spans\r
+        env:\r
+        - name: GODEBUG\r
+          value: "gctrace=1"\r
+        - name: GOMAXPROCS\r
+          value: "6"\r
+        resources:\r
+          requests:\r
+            cpu: 10m\r
+            memory: 100Mi\r
+          \r
+        volumeMounts:\r
+        - name: istio-certs\r
+          mountPath: /etc/certs\r
+          readOnly: true\r
+        - name: uds-socket\r
+          mountPath: /sock\r
+        livenessProbe:\r
+          httpGet:\r
+            path: /version\r
+            port: 15014\r
+          initialDelaySeconds: 5\r
+          periodSeconds: 5\r
+      - name: istio-proxy\r
+        image: "iecedge/proxyv2-arm64:1.2.3"\r
+        imagePullPolicy: IfNotPresent\r
+        ports:\r
+        - containerPort: 9091\r
+        - containerPort: 15004\r
+        - containerPort: 15090\r
+          protocol: TCP\r
+          name: http-envoy-prom\r
+        args:\r
+        - proxy\r
+        - --domain\r
+        - $(POD_NAMESPACE).svc.cluster.local\r
+        - --serviceCluster\r
+        - istio-policy\r
+        - --templateFile\r
+        - /etc/istio/proxy/envoy_policy.yaml.tmpl\r
+        - --controlPlaneAuthPolicy\r
+        - NONE\r
+        env:\r
+        - name: POD_NAME\r
+          valueFrom:\r
+            fieldRef:\r
+              apiVersion: v1\r
+              fieldPath: metadata.name\r
+        - name: POD_NAMESPACE\r
+          valueFrom:\r
+            fieldRef:\r
+              apiVersion: v1\r
+              fieldPath: metadata.namespace\r
+        - name: INSTANCE_IP\r
+          valueFrom:\r
+            fieldRef:\r
+              apiVersion: v1\r
+              fieldPath: status.podIP\r
+        resources:\r
+          limits:\r
+            cpu: 2000m\r
+            memory: 1024Mi\r
+          requests:\r
+            cpu: 10m\r
+            memory: 40Mi\r
+          \r
+        volumeMounts:\r
+        - name: istio-certs\r
+          mountPath: /etc/certs\r
+          readOnly: true\r
+        - name: uds-socket\r
+          mountPath: /sock\r
+        - name: policy-adapter-secret\r
+          mountPath: /var/run/secrets/istio.io/policy/adapter\r
+          readOnly: true\r
+\r
+---\r
+apiVersion: apps/v1\r
+kind: Deployment\r
+metadata:\r
+  name: istio-telemetry\r
+  namespace: istio-system\r
+  labels:\r
+    app: istio-mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+    istio: mixer\r
+spec:\r
+  replicas: 1\r
+  strategy:\r
+    rollingUpdate:\r
+      maxSurge: 1\r
+      maxUnavailable: 0\r
+  selector:\r
+    matchLabels:\r
+      istio: mixer\r
+      istio-mixer-type: telemetry\r
+  template:\r
+    metadata:\r
+      labels:\r
+        app: telemetry\r
+        chart: mixer\r
+        heritage: Tiller\r
+        release: istio\r
+        istio: mixer\r
+        istio-mixer-type: telemetry\r
+      annotations:\r
+        sidecar.istio.io/inject: "false"\r
+    spec:\r
+      serviceAccountName: istio-mixer-service-account\r
+      volumes:\r
+      - name: istio-certs\r
+        secret:\r
+          secretName: istio.istio-mixer-service-account\r
+          optional: true\r
+      - name: uds-socket\r
+        emptyDir: {}\r
+      - name: telemetry-adapter-secret\r
+        secret:\r
+          secretName: telemetry-adapter-secret\r
+          optional: true\r
+      affinity:\r
+        nodeAffinity:\r
+          requiredDuringSchedulingIgnoredDuringExecution:\r
+            nodeSelectorTerms:\r
+            - matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+                - ppc64le\r
+                - arm64\r
+          preferredDuringSchedulingIgnoredDuringExecution:\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - ppc64le\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - arm64\r
+      containers:\r
+      - name: mixer\r
+        image: "iecedge/mixer-arm64:1.2.3"\r
+        imagePullPolicy: IfNotPresent\r
+        ports:\r
+        - containerPort: 15014\r
+        - containerPort: 42422\r
+        args:\r
+          - --monitoringPort=15014\r
+          - --address\r
+          - unix:///sock/mixer.socket\r
+          - --log_output_level=default:info\r
+          - --configStoreURL=mcp://istio-galley.istio-system.svc:9901\r
+          - --configDefaultNamespace=istio-system\r
+          - --useAdapterCRDs=false\r
+          - --useTemplateCRDs=false\r
+          - --trace_zipkin_url=http://zipkin.istio-system:9411/api/v1/spans\r
+          - --averageLatencyThreshold\r
+          - 100ms\r
+          - --loadsheddingMode\r
+          - enforce\r
+        env:\r
+        - name: GODEBUG\r
+          value: "gctrace=1"\r
+        - name: GOMAXPROCS\r
+          value: "6"\r
+        resources:\r
+          limits:\r
+            cpu: 4800m\r
+            memory: 4G\r
+          requests:\r
+            cpu: 50m\r
+            memory: 100Mi\r
+\r
+        volumeMounts:\r
+        - name: istio-certs\r
+          mountPath: /etc/certs\r
+          readOnly: true\r
+        - name: telemetry-adapter-secret\r
+          mountPath: /var/run/secrets/istio.io/telemetry/adapter\r
+          readOnly: true\r
+        - name: uds-socket\r
+          mountPath: /sock\r
+        livenessProbe:\r
+          httpGet:\r
+            path: /version\r
+            port: 15014\r
+          initialDelaySeconds: 5\r
+          periodSeconds: 5\r
+      - name: istio-proxy\r
+        image: "iecedge/proxyv2-arm64:1.2.3"\r
+        imagePullPolicy: IfNotPresent\r
+        ports:\r
+        - containerPort: 9091\r
+        - containerPort: 15004\r
+        - containerPort: 15090\r
+          protocol: TCP\r
+          name: http-envoy-prom\r
+        args:\r
+        - proxy\r
+        - --domain\r
+        - $(POD_NAMESPACE).svc.cluster.local\r
+        - --serviceCluster\r
+        - istio-telemetry\r
+        - --templateFile\r
+        - /etc/istio/proxy/envoy_telemetry.yaml.tmpl\r
+        - --controlPlaneAuthPolicy\r
+        - NONE\r
+        env:\r
+        - name: POD_NAME\r
+          valueFrom:\r
+            fieldRef:\r
+              apiVersion: v1\r
+              fieldPath: metadata.name\r
+        - name: POD_NAMESPACE\r
+          valueFrom:\r
+            fieldRef:\r
+              apiVersion: v1\r
+              fieldPath: metadata.namespace\r
+        - name: INSTANCE_IP\r
+          valueFrom:\r
+            fieldRef:\r
+              apiVersion: v1\r
+              fieldPath: status.podIP\r
+        resources:\r
+          limits:\r
+            cpu: 2000m\r
+            memory: 1024Mi\r
+          requests:\r
+            cpu: 10m\r
+            memory: 40Mi\r
+          \r
+        volumeMounts:\r
+        - name: istio-certs\r
+          mountPath: /etc/certs\r
+          readOnly: true\r
+        - name: uds-socket\r
+          mountPath: /sock\r
+\r
+---\r
+\r
+---\r
+# Source: istio/charts/pilot/templates/deployment.yaml\r
+apiVersion: apps/v1\r
+kind: Deployment\r
+metadata:\r
+  name: istio-pilot\r
+  namespace: istio-system\r
+  # TODO: default template doesn't have this, which one is right ?\r
+  labels:\r
+    app: pilot\r
+    chart: pilot\r
+    heritage: Tiller\r
+    release: istio\r
+    istio: pilot\r
+  annotations:\r
+    checksum/config-volume: f8da08b6b8c170dde721efd680270b2901e750d4aa186ebb6c22bef5b78a43f9\r
+spec:\r
+  replicas: 1\r
+  strategy:\r
+    rollingUpdate:\r
+      maxSurge: 1\r
+      maxUnavailable: 0\r
+  selector:\r
+    matchLabels:\r
+      istio: pilot\r
+  template:\r
+    metadata:\r
+      labels:\r
+        app: pilot\r
+        chart: pilot\r
+        heritage: Tiller\r
+        release: istio\r
+        istio: pilot\r
+      annotations:\r
+        sidecar.istio.io/inject: "false"\r
+    spec:\r
+      serviceAccountName: istio-pilot-service-account\r
+      containers:\r
+        - name: discovery\r
+          image: "iecedge/pilot-arm64:1.2.3"\r
+          imagePullPolicy: IfNotPresent\r
+          args:\r
+          - "discovery"\r
+          - --monitoringAddr=:15014\r
+          - --log_output_level=default:info\r
+          - --domain\r
+          - cluster.local\r
+          - --secureGrpcAddr\r
+          - ""\r
+          - --keepaliveMaxServerConnectionAge\r
+          - "30m"\r
+          ports:\r
+          - containerPort: 8080\r
+          - containerPort: 15010\r
+          readinessProbe:\r
+            httpGet:\r
+              path: /ready\r
+              port: 8080\r
+            initialDelaySeconds: 5\r
+            periodSeconds: 30\r
+            timeoutSeconds: 5\r
+          env:\r
+          - name: POD_NAME\r
+            valueFrom:\r
+              fieldRef:\r
+                apiVersion: v1\r
+                fieldPath: metadata.name\r
+          - name: POD_NAMESPACE\r
+            valueFrom:\r
+              fieldRef:\r
+                apiVersion: v1\r
+                fieldPath: metadata.namespace\r
+          - name: GODEBUG\r
+            value: "gctrace=1"\r
+          - name: PILOT_PUSH_THROTTLE\r
+            value: "100"\r
+          - name: PILOT_TRACE_SAMPLING\r
+            value: "100"\r
+          - name: PILOT_DISABLE_XDS_MARSHALING_TO_ANY\r
+            value: "1"\r
+          resources:\r
+            requests:\r
+              cpu: 10m\r
+              memory: 100Mi\r
+            \r
+          volumeMounts:\r
+          - name: config-volume\r
+            mountPath: /etc/istio/config\r
+          - name: istio-certs\r
+            mountPath: /etc/certs\r
+            readOnly: true\r
+        - name: istio-proxy\r
+          image: "iecedge/proxyv2-arm64:1.2.3"\r
+          imagePullPolicy: IfNotPresent\r
+          ports:\r
+          - containerPort: 15003\r
+          - containerPort: 15005\r
+          - containerPort: 15007\r
+          - containerPort: 15011\r
+          args:\r
+          - proxy\r
+          - --domain\r
+          - $(POD_NAMESPACE).svc.cluster.local\r
+          - --serviceCluster\r
+          - istio-pilot\r
+          - --templateFile\r
+          - /etc/istio/proxy/envoy_pilot.yaml.tmpl\r
+          - --controlPlaneAuthPolicy\r
+          - NONE\r
+          env:\r
+          - name: POD_NAME\r
+            valueFrom:\r
+              fieldRef:\r
+                apiVersion: v1\r
+                fieldPath: metadata.name\r
+          - name: POD_NAMESPACE\r
+            valueFrom:\r
+              fieldRef:\r
+                apiVersion: v1\r
+                fieldPath: metadata.namespace\r
+          - name: INSTANCE_IP\r
+            valueFrom:\r
+              fieldRef:\r
+                apiVersion: v1\r
+                fieldPath: status.podIP\r
+          resources:\r
+            limits:\r
+              cpu: 2000m\r
+              memory: 1024Mi\r
+            requests:\r
+              cpu: 10m\r
+              memory: 40Mi\r
+\r
+          volumeMounts:\r
+          - name: istio-certs\r
+            mountPath: /etc/certs\r
+            readOnly: true\r
+      volumes:\r
+      - name: config-volume\r
+        configMap:\r
+          name: istio\r
+      - name: istio-certs\r
+        secret:\r
+          secretName: istio.istio-pilot-service-account\r
+          optional: true\r
+      affinity:\r
+        nodeAffinity:\r
+          requiredDuringSchedulingIgnoredDuringExecution:\r
+            nodeSelectorTerms:\r
+            - matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+                - ppc64le\r
+                - arm64\r
+          preferredDuringSchedulingIgnoredDuringExecution:\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - ppc64le\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - arm64\r
+\r
+---\r
+# Source: istio/charts/prometheus/templates/deployment.yaml\r
+# TODO: the original template has service account, roles, etc\r
+apiVersion: apps/v1\r
+kind: Deployment\r
+metadata:\r
+  name: prometheus\r
+  namespace: istio-system\r
+  labels:\r
+    app: prometheus\r
+    chart: prometheus\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  replicas: 1\r
+  selector:\r
+    matchLabels:\r
+      app: prometheus\r
+  template:\r
+    metadata:\r
+      labels:\r
+        app: prometheus\r
+        chart: prometheus\r
+        heritage: Tiller\r
+        release: istio\r
+      annotations:\r
+        sidecar.istio.io/inject: "false"\r
+    spec:\r
+      serviceAccountName: prometheus\r
+      containers:\r
+        - name: prometheus\r
+          image: "carlosedp/prometheus:v2.8.0-arm64"\r
+          imagePullPolicy: IfNotPresent\r
+          args:\r
+            - '--storage.tsdb.retention=6h'\r
+            - '--config.file=/etc/prometheus/prometheus.yml'\r
+          ports:\r
+            - containerPort: 9090\r
+              name: http\r
+          livenessProbe:\r
+            httpGet:\r
+              path: /-/healthy\r
+              port: 9090\r
+          readinessProbe:\r
+            httpGet:\r
+              path: /-/ready\r
+              port: 9090\r
+          resources:\r
+            requests:\r
+              cpu: 10m\r
+            \r
+          volumeMounts:\r
+          - name: config-volume\r
+            mountPath: /etc/prometheus\r
+          - mountPath: /etc/istio-certs\r
+            name: istio-certs\r
+      volumes:\r
+      - name: config-volume\r
+        configMap:\r
+          name: prometheus\r
+      - name: istio-certs\r
+        secret:\r
+          defaultMode: 420\r
+          secretName: istio.default\r
+      affinity:\r
+        nodeAffinity:\r
+          requiredDuringSchedulingIgnoredDuringExecution:\r
+            nodeSelectorTerms:\r
+            - matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+                - ppc64le\r
+                - arm64\r
+          preferredDuringSchedulingIgnoredDuringExecution:\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - ppc64le\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - arm64\r
+\r
+---\r
+# Source: istio/charts/security/templates/deployment.yaml\r
+# istio CA watching all namespaces\r
+apiVersion: apps/v1\r
+kind: Deployment\r
+metadata:\r
+  name: istio-citadel\r
+  namespace: istio-system\r
+  labels:\r
+    app: security\r
+    chart: security\r
+    heritage: Tiller\r
+    release: istio\r
+    istio: citadel\r
+spec:\r
+  replicas: 1\r
+  selector:\r
+    matchLabels:\r
+      istio: citadel\r
+  strategy:\r
+    rollingUpdate:\r
+      maxSurge: 1\r
+      maxUnavailable: 0\r
+  template:\r
+    metadata:\r
+      labels:\r
+        app: security\r
+        chart: security\r
+        heritage: Tiller\r
+        release: istio\r
+        istio: citadel\r
+      annotations:\r
+        sidecar.istio.io/inject: "false"\r
+    spec:\r
+      serviceAccountName: istio-citadel-service-account\r
+      containers:\r
+        - name: citadel\r
+          image: "iecedge/citadel-arm64:1.2.3"\r
+          imagePullPolicy: IfNotPresent\r
+          args:\r
+            - --append-dns-names=true\r
+            - --grpc-port=8060\r
+            - --citadel-storage-namespace=istio-system\r
+            - --custom-dns-names=istio-pilot-service-account.istio-system:istio-pilot.istio-system\r
+            - --monitoring-port=15014\r
+            - --self-signed-ca=true\r
+            - --workload-cert-ttl=2160h\r
+          resources:\r
+            requests:\r
+              cpu: 10m\r
+            \r
+      affinity:\r
+        nodeAffinity:\r
+          requiredDuringSchedulingIgnoredDuringExecution:\r
+            nodeSelectorTerms:\r
+            - matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+                - ppc64le\r
+                - arm64\r
+          preferredDuringSchedulingIgnoredDuringExecution:\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - ppc64le\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - arm64\r
+\r
+---\r
+# Source: istio/charts/sidecarInjectorWebhook/templates/deployment.yaml\r
+apiVersion: apps/v1\r
+kind: Deployment\r
+metadata:\r
+  name: istio-sidecar-injector\r
+  namespace: istio-system\r
+  labels:\r
+    app: sidecarInjectorWebhook\r
+    chart: sidecarInjectorWebhook\r
+    heritage: Tiller\r
+    release: istio\r
+    istio: sidecar-injector\r
+spec:\r
+  replicas: 1\r
+  selector:\r
+    matchLabels:\r
+      istio: sidecar-injector\r
+  strategy:\r
+    rollingUpdate:\r
+      maxSurge: 1\r
+      maxUnavailable: 0\r
+  template:\r
+    metadata:\r
+      labels:\r
+        app: sidecarInjectorWebhook\r
+        chart: sidecarInjectorWebhook\r
+        heritage: Tiller\r
+        release: istio\r
+        istio: sidecar-injector\r
+      annotations:\r
+        sidecar.istio.io/inject: "false"\r
+    spec:\r
+      serviceAccountName: istio-sidecar-injector-service-account\r
+      containers:\r
+        - name: sidecar-injector-webhook\r
+          image: "iecedge/sidecar_injector-arm64:1.2.3"\r
+          imagePullPolicy: IfNotPresent\r
+          args:\r
+            - --caCertFile=/etc/istio/certs/root-cert.pem\r
+            - --tlsCertFile=/etc/istio/certs/cert-chain.pem\r
+            - --tlsKeyFile=/etc/istio/certs/key.pem\r
+            - --injectConfig=/etc/istio/inject/config\r
+            - --meshConfig=/etc/istio/config/mesh\r
+            - --healthCheckInterval=2s\r
+            - --healthCheckFile=/health\r
+          volumeMounts:\r
+          - name: config-volume\r
+            mountPath: /etc/istio/config\r
+            readOnly: true\r
+          - name: certs\r
+            mountPath: /etc/istio/certs\r
+            readOnly: true\r
+          - name: inject-config\r
+            mountPath: /etc/istio/inject\r
+            readOnly: true\r
+          livenessProbe:\r
+            exec:\r
+              command:\r
+                - /usr/local/bin/sidecar-injector\r
+                - probe\r
+                - --probe-path=/health\r
+                - --interval=4s\r
+            initialDelaySeconds: 4\r
+            periodSeconds: 4\r
+          readinessProbe:\r
+            exec:\r
+              command:\r
+                - /usr/local/bin/sidecar-injector\r
+                - probe\r
+                - --probe-path=/health\r
+                - --interval=4s\r
+            initialDelaySeconds: 4\r
+            periodSeconds: 4\r
+          resources:\r
+            requests:\r
+              cpu: 10m\r
+            \r
+      volumes:\r
+      - name: config-volume\r
+        configMap:\r
+          name: istio\r
+      - name: certs\r
+        secret:\r
+          secretName: istio.istio-sidecar-injector-service-account\r
+      - name: inject-config\r
+        configMap:\r
+          name: istio-sidecar-injector\r
+          items:\r
+          - key: config\r
+            path: config\r
+          - key: values\r
+            path: values\r
+      affinity:\r
+        nodeAffinity:\r
+          requiredDuringSchedulingIgnoredDuringExecution:\r
+            nodeSelectorTerms:\r
+            - matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+                - ppc64le\r
+                - arm64\r
+          preferredDuringSchedulingIgnoredDuringExecution:\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - ppc64le\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - arm64\r
+\r
+---\r
+# Source: istio/charts/tracing/templates/deployment-jaeger.yaml\r
+\r
+\r
+apiVersion: apps/v1\r
+kind: Deployment\r
+metadata:\r
+  name: istio-tracing\r
+  namespace: istio-system\r
+  labels:\r
+    app: jaeger\r
+    chart: tracing\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  selector:\r
+    matchLabels:\r
+      app: jaeger\r
+  template:\r
+    metadata:\r
+      labels:\r
+        app: jaeger\r
+        chart: tracing\r
+        heritage: Tiller\r
+        release: istio\r
+      annotations:\r
+        sidecar.istio.io/inject: "false"\r
+        prometheus.io/scrape: "true"\r
+        prometheus.io/port: "16686"\r
+        prometheus.io/path: "/jaeger/metrics"\r
+    spec:\r
+      containers:\r
+        - name: jaeger\r
+          image: "desaegher/jaeger-all-in-one:arm64"\r
+          imagePullPolicy: IfNotPresent\r
+          ports:\r
+            - containerPort: 9411\r
+            - containerPort: 16686\r
+            - containerPort: 5775\r
+              protocol: UDP\r
+            - containerPort: 6831\r
+              protocol: UDP\r
+            - containerPort: 6832\r
+              protocol: UDP\r
+          env:\r
+          - name: POD_NAMESPACE\r
+            valueFrom:\r
+              fieldRef:\r
+                apiVersion: v1\r
+                fieldPath: metadata.namespace\r
+          - name: COLLECTOR_ZIPKIN_HTTP_PORT\r
+            value: "9411"\r
+          - name: MEMORY_MAX_TRACES\r
+            value: "50000"\r
+          - name: QUERY_BASE_PATH\r
+            value:  /jaeger \r
+          livenessProbe:\r
+            httpGet:\r
+              path: /\r
+              port: 16686\r
+          readinessProbe:\r
+            httpGet:\r
+              path: /\r
+              port: 16686\r
+          resources:\r
+            requests:\r
+              cpu: 10m\r
+            \r
+      affinity:\r
+        nodeAffinity:\r
+          requiredDuringSchedulingIgnoredDuringExecution:\r
+            nodeSelectorTerms:\r
+            - matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+                - ppc64le\r
+                - arm64\r
+          preferredDuringSchedulingIgnoredDuringExecution:\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - amd64\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - ppc64le\r
+          - weight: 2\r
+            preference:\r
+              matchExpressions:\r
+              - key: beta.kubernetes.io/arch\r
+                operator: In\r
+                values:\r
+                - arm64\r
+\r
+\r
+---\r
+# Source: istio/charts/tracing/templates/service-jaeger.yaml\r
+\r
+\r
+apiVersion: v1\r
+kind: List\r
+metadata:\r
+  name: jaeger-services\r
+  namespace: istio-system\r
+  labels:\r
+    app: jaeger\r
+    chart: tracing\r
+    heritage: Tiller\r
+    release: istio\r
+items:\r
+- apiVersion: v1\r
+  kind: Service\r
+  metadata:\r
+    name: jaeger-query\r
+    namespace: istio-system\r
+    annotations:\r
+    labels:\r
+      app: jaeger\r
+      jaeger-infra: jaeger-service\r
+      chart: tracing\r
+      heritage: Tiller\r
+      release: istio\r
+  spec:\r
+    ports:\r
+      - name: query-http\r
+        port: 16686\r
+        protocol: TCP\r
+        targetPort: 16686\r
+    selector:\r
+      app: jaeger\r
+- apiVersion: v1\r
+  kind: Service\r
+  metadata:\r
+    name: jaeger-collector\r
+    namespace: istio-system\r
+    labels:\r
+      app: jaeger\r
+      jaeger-infra: collector-service\r
+      chart: tracing\r
+      heritage: Tiller\r
+      release: istio\r
+  spec:\r
+    ports:\r
+    - name: jaeger-collector-tchannel\r
+      port: 14267\r
+      protocol: TCP\r
+      targetPort: 14267\r
+    - name: jaeger-collector-http\r
+      port: 14268\r
+      targetPort: 14268\r
+      protocol: TCP\r
+    selector:\r
+      app: jaeger\r
+    type: ClusterIP\r
+- apiVersion: v1\r
+  kind: Service\r
+  metadata:\r
+    name: jaeger-agent\r
+    namespace: istio-system\r
+    labels:\r
+      app: jaeger\r
+      jaeger-infra: agent-service\r
+      chart: tracing\r
+      heritage: Tiller\r
+      release: istio\r
+  spec:\r
+    ports:\r
+    - name: agent-zipkin-thrift\r
+      port: 5775\r
+      protocol: UDP\r
+      targetPort: 5775\r
+    - name: agent-compact\r
+      port: 6831\r
+      protocol: UDP\r
+      targetPort: 6831\r
+    - name: agent-binary\r
+      port: 6832\r
+      protocol: UDP\r
+      targetPort: 6832\r
+    clusterIP: None\r
+    selector:\r
+      app: jaeger\r
+\r
+\r
+\r
+---\r
+# Source: istio/charts/tracing/templates/service.yaml\r
+apiVersion: v1\r
+kind: List\r
+metadata:\r
+  name: tracing-services\r
+  namespace: istio-system\r
+  labels:\r
+    app: jaeger\r
+    chart: tracing\r
+    heritage: Tiller\r
+    release: istio\r
+items:\r
+- apiVersion: v1\r
+  kind: Service\r
+  metadata:\r
+    name: zipkin\r
+    namespace: istio-system\r
+    labels:\r
+      app: jaeger\r
+      chart: tracing\r
+      heritage: Tiller\r
+      release: istio\r
+  spec:\r
+    type: ClusterIP\r
+    ports:\r
+      - port: 9411\r
+        targetPort: 9411\r
+        protocol: TCP\r
+        name: http\r
+    selector:\r
+      app: jaeger\r
+- apiVersion: v1\r
+  kind: Service\r
+  metadata:\r
+    name: tracing\r
+    namespace: istio-system\r
+    annotations:\r
+    labels:\r
+      app: jaeger\r
+      chart: tracing\r
+      heritage: Tiller\r
+      release: istio\r
+  spec:\r
+    ports:\r
+      - name: http-query\r
+        port: 80\r
+        protocol: TCP\r
+\r
+        targetPort: 16686\r
+\r
+    selector:\r
+      app: jaeger\r
+\r
+---\r
+# Source: istio/charts/sidecarInjectorWebhook/templates/mutatingwebhook.yaml\r
+apiVersion: admissionregistration.k8s.io/v1beta1\r
+kind: MutatingWebhookConfiguration\r
+metadata:\r
+  name: istio-sidecar-injector\r
+  labels:\r
+    app: sidecarInjectorWebhook\r
+    chart: sidecarInjectorWebhook\r
+    heritage: Tiller\r
+    release: istio\r
+webhooks:\r
+  - name: sidecar-injector.istio.io\r
+    clientConfig:\r
+      service:\r
+        name: istio-sidecar-injector\r
+        namespace: istio-system\r
+        path: "/inject"\r
+      caBundle: ""\r
+    rules:\r
+      - operations: [ "CREATE" ]\r
+        apiGroups: [""]\r
+        apiVersions: ["v1"]\r
+        resources: ["pods"]\r
+    failurePolicy: Fail\r
+    namespaceSelector:\r
+      matchLabels:\r
+        istio-injection: enabled\r
+\r
+\r
+---\r
+# Source: istio/charts/galley/templates/poddisruptionbudget.yaml\r
+\r
+apiVersion: policy/v1beta1\r
+kind: PodDisruptionBudget\r
+metadata:\r
+  name: istio-galley\r
+  namespace: istio-system\r
+  labels:\r
+    app: galley\r
+    chart: galley\r
+    heritage: Tiller\r
+    release: istio\r
+    istio: galley\r
+spec:\r
+\r
+  minAvailable: 1\r
+  selector:\r
+    matchLabels:\r
+      app: galley\r
+      release: istio\r
+      istio: galley\r
+\r
+---\r
+# Source: istio/charts/gateways/templates/poddisruptionbudget.yaml\r
+\r
+apiVersion: policy/v1beta1\r
+kind: PodDisruptionBudget\r
+metadata:\r
+  name: istio-egressgateway\r
+  namespace: istio-system\r
+  labels:\r
+    chart: gateways\r
+    heritage: Tiller\r
+    release: istio\r
+    app: istio-egressgateway\r
+    istio: egressgateway\r
+spec:\r
+\r
+  minAvailable: 1\r
+  selector:\r
+    matchLabels:\r
+      release: istio\r
+      app: istio-egressgateway\r
+      istio: egressgateway\r
+---\r
+apiVersion: policy/v1beta1\r
+kind: PodDisruptionBudget\r
+metadata:\r
+  name: istio-ingressgateway\r
+  namespace: istio-system\r
+  labels:\r
+    chart: gateways\r
+    heritage: Tiller\r
+    release: istio\r
+    app: istio-ingressgateway\r
+    istio: ingressgateway\r
+spec:\r
+\r
+  minAvailable: 1\r
+  selector:\r
+    matchLabels:\r
+      release: istio\r
+      app: istio-ingressgateway\r
+      istio: ingressgateway\r
+---\r
+\r
+---\r
+# Source: istio/charts/mixer/templates/poddisruptionbudget.yaml\r
+\r
+apiVersion: policy/v1beta1\r
+kind: PodDisruptionBudget\r
+metadata:\r
+  name: istio-policy\r
+  namespace: istio-system\r
+  labels:\r
+    app: policy\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+    version: 1.2.3\r
+    istio: mixer\r
+    istio-mixer-type: policy\r
+spec:\r
+\r
+  minAvailable: 1\r
+  selector:\r
+    matchLabels:\r
+      app: policy\r
+      release: istio\r
+      istio: mixer\r
+      istio-mixer-type: policy\r
+---\r
+apiVersion: policy/v1beta1\r
+kind: PodDisruptionBudget\r
+metadata:\r
+  name: istio-telemetry\r
+  namespace: istio-system\r
+  labels:\r
+    app: telemetry\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+    version: 1.2.3\r
+    istio: mixer\r
+    istio-mixer-type: telemetry\r
+spec:\r
+\r
+  minAvailable: 1\r
+  selector:\r
+    matchLabels:\r
+      app: telemetry\r
+      release: istio\r
+      istio: mixer\r
+      istio-mixer-type: telemetry\r
+---\r
+\r
+---\r
+# Source: istio/charts/pilot/templates/poddisruptionbudget.yaml\r
+\r
+apiVersion: policy/v1beta1\r
+kind: PodDisruptionBudget\r
+metadata:\r
+  name: istio-pilot\r
+  namespace: istio-system\r
+  labels:\r
+    app: pilot\r
+    chart: pilot\r
+    heritage: Tiller\r
+    release: istio\r
+    istio: pilot\r
+spec:\r
+\r
+  minAvailable: 1\r
+  selector:\r
+    matchLabels:\r
+      app: pilot\r
+      release: istio\r
+      istio: pilot\r
+\r
+---\r
+# Source: istio/charts/sidecarInjectorWebhook/templates/poddisruptionbudget.yaml\r
+\r
+apiVersion: policy/v1beta1\r
+kind: PodDisruptionBudget\r
+metadata:\r
+  name: istio-sidecar-injector\r
+  namespace: istio-system\r
+  labels:\r
+    app: sidecarInjectorWebhook\r
+    release: istio\r
+    istio: sidecar-injector\r
+spec:\r
+\r
+  minAvailable: 1\r
+  selector:\r
+    matchLabels:\r
+      app: sidecarInjectorWebhook\r
+      release: istio\r
+      istio: sidecar-injector\r
+---\r
+# Source: istio/charts/galley/templates/validatingwebhookconfiguration.yaml.tpl\r
+\r
+\r
+---\r
+# Source: istio/charts/gateways/templates/autoscale.yaml\r
+\r
+\r
+---\r
+# Source: istio/charts/gateways/templates/preconfigured.yaml\r
+\r
+\r
+---\r
+# Source: istio/charts/grafana/templates/grafana-ports-mtls.yaml\r
+\r
+\r
+---\r
+# Source: istio/charts/grafana/templates/ingress.yaml\r
+\r
+---\r
+# Source: istio/charts/grafana/templates/pvc.yaml\r
+\r
+\r
+---\r
+# Source: istio/charts/grafana/templates/tests/test-grafana-connection.yaml\r
+\r
+\r
+---\r
+# Source: istio/charts/kiali/templates/ingress.yaml\r
+\r
+---\r
+# Source: istio/charts/kiali/templates/tests/test-kiali-connection.yaml\r
+\r
+\r
+---\r
+# Source: istio/charts/mixer/templates/autoscale.yaml\r
+\r
+\r
+---\r
+# Source: istio/charts/pilot/templates/autoscale.yaml\r
+\r
+\r
+---\r
+# Source: istio/charts/pilot/templates/meshexpansion.yaml\r
+\r
+\r
+\r
+---\r
+# Source: istio/charts/prometheus/templates/ingress.yaml\r
+\r
+---\r
+# Source: istio/charts/prometheus/templates/tests/test-prometheus-connection.yaml\r
+\r
+\r
+---\r
+# Source: istio/charts/security/templates/enable-mesh-mtls.yaml\r
+\r
+\r
+---\r
+# Source: istio/charts/security/templates/enable-mesh-permissive.yaml\r
+\r
+\r
+---\r
+# Source: istio/charts/security/templates/meshexpansion.yaml\r
+\r
+\r
+---\r
+# Source: istio/charts/security/templates/tests/test-citadel-connection.yaml\r
+\r
+\r
+---\r
+# Source: istio/charts/tracing/templates/deployment-zipkin.yaml\r
+\r
+\r
+---\r
+# Source: istio/charts/tracing/templates/ingress.yaml\r
+\r
+---\r
+# Source: istio/charts/tracing/templates/tests/test-tracing-connection.yaml\r
+\r
+\r
+---\r
+# Source: istio/templates/endpoints.yaml\r
+\r
+\r
+---\r
+# Source: istio/templates/install-custom-resources.sh.tpl\r
+\r
+\r
+---\r
+# Source: istio/templates/service.yaml\r
+\r
+\r
+---\r
+# Source: istio/charts/mixer/templates/config.yaml\r
+\r
+apiVersion: "config.istio.io/v1alpha2"\r
+kind: attributemanifest\r
+metadata:\r
+  name: istioproxy\r
+  namespace: istio-system\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  attributes:\r
+    origin.ip:\r
+      valueType: IP_ADDRESS\r
+    origin.uid:\r
+      valueType: STRING\r
+    origin.user:\r
+      valueType: STRING\r
+    request.headers:\r
+      valueType: STRING_MAP\r
+    request.id:\r
+      valueType: STRING\r
+    request.host:\r
+      valueType: STRING\r
+    request.method:\r
+      valueType: STRING\r
+    request.path:\r
+      valueType: STRING\r
+    request.url_path:\r
+      valueType: STRING\r
+    request.query_params:\r
+      valueType: STRING_MAP\r
+    request.reason:\r
+      valueType: STRING\r
+    request.referer:\r
+      valueType: STRING\r
+    request.scheme:\r
+      valueType: STRING\r
+    request.total_size:\r
+      valueType: INT64\r
+    request.size:\r
+      valueType: INT64\r
+    request.time:\r
+      valueType: TIMESTAMP\r
+    request.useragent:\r
+      valueType: STRING\r
+    response.code:\r
+      valueType: INT64\r
+    response.duration:\r
+      valueType: DURATION\r
+    response.headers:\r
+      valueType: STRING_MAP\r
+    response.total_size:\r
+      valueType: INT64\r
+    response.size:\r
+      valueType: INT64\r
+    response.time:\r
+      valueType: TIMESTAMP\r
+    response.grpc_status:\r
+      valueType: STRING\r
+    response.grpc_message:\r
+      valueType: STRING\r
+    source.uid:\r
+      valueType: STRING\r
+    source.user: # DEPRECATED\r
+      valueType: STRING\r
+    source.principal:\r
+      valueType: STRING\r
+    destination.uid:\r
+      valueType: STRING\r
+    destination.principal:\r
+      valueType: STRING\r
+    destination.port:\r
+      valueType: INT64\r
+    connection.event:\r
+      valueType: STRING\r
+    connection.id:\r
+      valueType: STRING\r
+    connection.received.bytes:\r
+      valueType: INT64\r
+    connection.received.bytes_total:\r
+      valueType: INT64\r
+    connection.sent.bytes:\r
+      valueType: INT64\r
+    connection.sent.bytes_total:\r
+      valueType: INT64\r
+    connection.duration:\r
+      valueType: DURATION\r
+    connection.mtls:\r
+      valueType: BOOL\r
+    connection.requested_server_name:\r
+      valueType: STRING\r
+    context.protocol:\r
+      valueType: STRING\r
+    context.proxy_error_code:\r
+      valueType: STRING\r
+    context.timestamp:\r
+      valueType: TIMESTAMP\r
+    context.time:\r
+      valueType: TIMESTAMP\r
+    # Deprecated, kept for compatibility\r
+    context.reporter.local:\r
+      valueType: BOOL\r
+    context.reporter.kind:\r
+      valueType: STRING\r
+    context.reporter.uid:\r
+      valueType: STRING\r
+    api.service:\r
+      valueType: STRING\r
+    api.version:\r
+      valueType: STRING\r
+    api.operation:\r
+      valueType: STRING\r
+    api.protocol:\r
+      valueType: STRING\r
+    request.auth.principal:\r
+      valueType: STRING\r
+    request.auth.audiences:\r
+      valueType: STRING\r
+    request.auth.presenter:\r
+      valueType: STRING\r
+    request.auth.claims:\r
+      valueType: STRING_MAP\r
+    request.auth.raw_claims:\r
+      valueType: STRING\r
+    request.api_key:\r
+      valueType: STRING\r
+    rbac.permissive.response_code:\r
+      valueType: STRING\r
+    rbac.permissive.effective_policy_id:\r
+      valueType: STRING\r
+    check.error_code:\r
+      valueType: INT64\r
+    check.error_message:\r
+      valueType: STRING\r
+    check.cache_hit:\r
+      valueType: BOOL\r
+    quota.cache_hit:\r
+      valueType: BOOL\r
+\r
+---\r
+apiVersion: "config.istio.io/v1alpha2"\r
+kind: attributemanifest\r
+metadata:\r
+  name: kubernetes\r
+  namespace: istio-system\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  attributes:\r
+    source.ip:\r
+      valueType: IP_ADDRESS\r
+    source.labels:\r
+      valueType: STRING_MAP\r
+    source.metadata:\r
+      valueType: STRING_MAP\r
+    source.name:\r
+      valueType: STRING\r
+    source.namespace:\r
+      valueType: STRING\r
+    source.owner:\r
+      valueType: STRING\r
+    source.serviceAccount:\r
+      valueType: STRING\r
+    source.services:\r
+      valueType: STRING\r
+    source.workload.uid:\r
+      valueType: STRING\r
+    source.workload.name:\r
+      valueType: STRING\r
+    source.workload.namespace:\r
+      valueType: STRING\r
+    destination.ip:\r
+      valueType: IP_ADDRESS\r
+    destination.labels:\r
+      valueType: STRING_MAP\r
+    destination.metadata:\r
+      valueType: STRING_MAP\r
+    destination.owner:\r
+      valueType: STRING\r
+    destination.name:\r
+      valueType: STRING\r
+    destination.container.name:\r
+      valueType: STRING\r
+    destination.namespace:\r
+      valueType: STRING\r
+    destination.service.uid:\r
+      valueType: STRING\r
+    destination.service.name:\r
+      valueType: STRING\r
+    destination.service.namespace:\r
+      valueType: STRING\r
+    destination.service.host:\r
+      valueType: STRING\r
+    destination.serviceAccount:\r
+      valueType: STRING\r
+    destination.workload.uid:\r
+      valueType: STRING\r
+    destination.workload.name:\r
+      valueType: STRING\r
+    destination.workload.namespace:\r
+      valueType: STRING\r
+---\r
+apiVersion: "config.istio.io/v1alpha2"\r
+kind: handler\r
+metadata:\r
+  name: stdio\r
+  namespace: istio-system\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  compiledAdapter: stdio\r
+  params:\r
+    outputAsJson: true\r
+---\r
+apiVersion: "config.istio.io/v1alpha2"\r
+kind: instance\r
+metadata:\r
+  name: accesslog\r
+  namespace: istio-system\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  compiledTemplate: logentry\r
+  params:\r
+    severity: '"Info"'\r
+    timestamp: request.time\r
+    variables:\r
+      sourceIp: source.ip | ip("0.0.0.0")\r
+      sourceApp: source.labels["app"] | ""\r
+      sourcePrincipal: source.principal | ""\r
+      sourceName: source.name | ""\r
+      sourceWorkload: source.workload.name | ""\r
+      sourceNamespace: source.namespace | ""\r
+      sourceOwner: source.owner | ""\r
+      destinationApp: destination.labels["app"] | ""\r
+      destinationIp: destination.ip | ip("0.0.0.0")\r
+      destinationServiceHost: destination.service.host | ""\r
+      destinationWorkload: destination.workload.name | ""\r
+      destinationName: destination.name | ""\r
+      destinationNamespace: destination.namespace | ""\r
+      destinationOwner: destination.owner | ""\r
+      destinationPrincipal: destination.principal | ""\r
+      apiClaims: request.auth.raw_claims | ""\r
+      apiKey: request.api_key | request.headers["x-api-key"] | ""\r
+      protocol: request.scheme | context.protocol | "http"\r
+      method: request.method | ""\r
+      url: request.path | ""\r
+      responseCode: response.code | 0\r
+      responseFlags: context.proxy_error_code | ""\r
+      responseSize: response.size | 0\r
+      permissiveResponseCode: rbac.permissive.response_code | "none"\r
+      permissiveResponsePolicyID: rbac.permissive.effective_policy_id | "none"\r
+      requestSize: request.size | 0\r
+      requestId: request.headers["x-request-id"] | ""\r
+      clientTraceId: request.headers["x-client-trace-id"] | ""\r
+      latency: response.duration | "0ms"\r
+      connection_security_policy: conditional((context.reporter.kind | "inbound") == "outbound", "unknown", conditional(connection.mtls | false, "mutual_tls", "none"))\r
+      requestedServerName: connection.requested_server_name | ""\r
+      userAgent: request.useragent | ""\r
+      responseTimestamp: response.time\r
+      receivedBytes: request.total_size | 0\r
+      sentBytes: response.total_size | 0\r
+      referer: request.referer | ""\r
+      httpAuthority: request.headers[":authority"] | request.host | ""\r
+      xForwardedFor: request.headers["x-forwarded-for"] | "0.0.0.0"\r
+      reporter: conditional((context.reporter.kind | "inbound") == "outbound", "source", "destination")\r
+      grpcStatus: response.grpc_status | ""\r
+      grpcMessage: response.grpc_message | ""\r
+    monitored_resource_type: '"global"'\r
+---\r
+apiVersion: "config.istio.io/v1alpha2"\r
+kind: instance\r
+metadata:\r
+  name: tcpaccesslog\r
+  namespace: istio-system\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  compiledTemplate: logentry\r
+  params:\r
+    severity: '"Info"'\r
+    timestamp: context.time | timestamp("2017-01-01T00:00:00Z")\r
+    variables:\r
+      connectionEvent: connection.event | ""\r
+      sourceIp: source.ip | ip("0.0.0.0")\r
+      sourceApp: source.labels["app"] | ""\r
+      sourcePrincipal: source.principal | ""\r
+      sourceName: source.name | ""\r
+      sourceWorkload: source.workload.name | ""\r
+      sourceNamespace: source.namespace | ""\r
+      sourceOwner: source.owner | ""\r
+      destinationApp: destination.labels["app"] | ""\r
+      destinationIp: destination.ip | ip("0.0.0.0")\r
+      destinationServiceHost: destination.service.host | ""\r
+      destinationWorkload: destination.workload.name | ""\r
+      destinationName: destination.name | ""\r
+      destinationNamespace: destination.namespace | ""\r
+      destinationOwner: destination.owner | ""\r
+      destinationPrincipal: destination.principal | ""\r
+      protocol: context.protocol | "tcp"\r
+      connectionDuration: connection.duration | "0ms"\r
+      connection_security_policy: conditional((context.reporter.kind | "inbound") == "outbound", "unknown", conditional(connection.mtls | false, "mutual_tls", "none"))\r
+      requestedServerName: connection.requested_server_name | ""\r
+      receivedBytes: connection.received.bytes | 0\r
+      sentBytes: connection.sent.bytes | 0\r
+      totalReceivedBytes: connection.received.bytes_total | 0\r
+      totalSentBytes: connection.sent.bytes_total | 0\r
+      reporter: conditional((context.reporter.kind | "inbound") == "outbound", "source", "destination")\r
+      responseFlags: context.proxy_error_code | ""\r
+    monitored_resource_type: '"global"'\r
+---\r
+apiVersion: "config.istio.io/v1alpha2"\r
+kind: rule\r
+metadata:\r
+  name: stdio\r
+  namespace: istio-system\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  match: context.protocol == "http" || context.protocol == "grpc"\r
+  actions:\r
+  - handler: stdio\r
+    instances:\r
+    - accesslog\r
+---\r
+apiVersion: "config.istio.io/v1alpha2"\r
+kind: rule\r
+metadata:\r
+  name: stdiotcp\r
+  namespace: istio-system\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  match: context.protocol == "tcp"\r
+  actions:\r
+  - handler: stdio\r
+    instances:\r
+    - tcpaccesslog\r
+---\r
+apiVersion: "config.istio.io/v1alpha2"\r
+kind: instance\r
+metadata:\r
+  name: requestcount\r
+  namespace: istio-system\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  compiledTemplate: metric\r
+  params:\r
+    value: "1"\r
+    dimensions:\r
+      reporter: conditional((context.reporter.kind | "inbound") == "outbound", "source", "destination")\r
+      source_workload: source.workload.name | "unknown"\r
+      source_workload_namespace: source.workload.namespace | "unknown"\r
+      source_principal: source.principal | "unknown"\r
+      source_app: source.labels["app"] | "unknown"\r
+      source_version: source.labels["version"] | "unknown"\r
+      destination_workload: destination.workload.name | "unknown"\r
+      destination_workload_namespace: destination.workload.namespace | "unknown"\r
+      destination_principal: destination.principal | "unknown"\r
+      destination_app: destination.labels["app"] | "unknown"\r
+      destination_version: destination.labels["version"] | "unknown"\r
+      destination_service: destination.service.host | "unknown"\r
+      destination_service_name: destination.service.name | "unknown"\r
+      destination_service_namespace: destination.service.namespace | "unknown"\r
+      request_protocol: api.protocol | context.protocol | "unknown"\r
+      response_code: response.code | 200\r
+      response_flags: context.proxy_error_code | "-"\r
+      permissive_response_code: rbac.permissive.response_code | "none"\r
+      permissive_response_policyid: rbac.permissive.effective_policy_id | "none"\r
+      connection_security_policy: conditional((context.reporter.kind | "inbound") == "outbound", "unknown", conditional(connection.mtls | false, "mutual_tls", "none"))\r
+    monitored_resource_type: '"UNSPECIFIED"'\r
+---\r
+apiVersion: "config.istio.io/v1alpha2"\r
+kind: instance\r
+metadata:\r
+  name: requestduration\r
+  namespace: istio-system\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  compiledTemplate: metric\r
+  params:\r
+    value: response.duration | "0ms"\r
+    dimensions:\r
+      reporter: conditional((context.reporter.kind | "inbound") == "outbound", "source", "destination")\r
+      source_workload: source.workload.name | "unknown"\r
+      source_workload_namespace: source.workload.namespace | "unknown"\r
+      source_principal: source.principal | "unknown"\r
+      source_app: source.labels["app"] | "unknown"\r
+      source_version: source.labels["version"] | "unknown"\r
+      destination_workload: destination.workload.name | "unknown"\r
+      destination_workload_namespace: destination.workload.namespace | "unknown"\r
+      destination_principal: destination.principal | "unknown"\r
+      destination_app: destination.labels["app"] | "unknown"\r
+      destination_version: destination.labels["version"] | "unknown"\r
+      destination_service: destination.service.host | "unknown"\r
+      destination_service_name: destination.service.name | "unknown"\r
+      destination_service_namespace: destination.service.namespace | "unknown"\r
+      request_protocol: api.protocol | context.protocol | "unknown"\r
+      response_code: response.code | 200\r
+      response_flags: context.proxy_error_code | "-"\r
+      permissive_response_code: rbac.permissive.response_code | "none"\r
+      permissive_response_policyid: rbac.permissive.effective_policy_id | "none"\r
+      connection_security_policy: conditional((context.reporter.kind | "inbound") == "outbound", "unknown", conditional(connection.mtls | false, "mutual_tls", "none"))\r
+    monitored_resource_type: '"UNSPECIFIED"'\r
+---\r
+apiVersion: "config.istio.io/v1alpha2"\r
+kind: instance\r
+metadata:\r
+  name: requestsize\r
+  namespace: istio-system\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  compiledTemplate: metric\r
+  params:\r
+    value: request.size | 0\r
+    dimensions:\r
+      reporter: conditional((context.reporter.kind | "inbound") == "outbound", "source", "destination")\r
+      source_workload: source.workload.name | "unknown"\r
+      source_workload_namespace: source.workload.namespace | "unknown"\r
+      source_principal: source.principal | "unknown"\r
+      source_app: source.labels["app"] | "unknown"\r
+      source_version: source.labels["version"] | "unknown"\r
+      destination_workload: destination.workload.name | "unknown"\r
+      destination_workload_namespace: destination.workload.namespace | "unknown"\r
+      destination_principal: destination.principal | "unknown"\r
+      destination_app: destination.labels["app"] | "unknown"\r
+      destination_version: destination.labels["version"] | "unknown"\r
+      destination_service: destination.service.host | "unknown"\r
+      destination_service_name: destination.service.name | "unknown"\r
+      destination_service_namespace: destination.service.namespace | "unknown"\r
+      request_protocol: api.protocol | context.protocol | "unknown"\r
+      response_code: response.code | 200\r
+      response_flags: context.proxy_error_code | "-"\r
+      permissive_response_code: rbac.permissive.response_code | "none"\r
+      permissive_response_policyid: rbac.permissive.effective_policy_id | "none"\r
+      connection_security_policy: conditional((context.reporter.kind | "inbound") == "outbound", "unknown", conditional(connection.mtls | false, "mutual_tls", "none"))\r
+    monitored_resource_type: '"UNSPECIFIED"'\r
+---\r
+apiVersion: "config.istio.io/v1alpha2"\r
+kind: instance\r
+metadata:\r
+  name: responsesize\r
+  namespace: istio-system\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  compiledTemplate: metric\r
+  params:\r
+    value: response.size | 0\r
+    dimensions:\r
+      reporter: conditional((context.reporter.kind | "inbound") == "outbound", "source", "destination")\r
+      source_workload: source.workload.name | "unknown"\r
+      source_workload_namespace: source.workload.namespace | "unknown"\r
+      source_principal: source.principal | "unknown"\r
+      source_app: source.labels["app"] | "unknown"\r
+      source_version: source.labels["version"] | "unknown"\r
+      destination_workload: destination.workload.name | "unknown"\r
+      destination_workload_namespace: destination.workload.namespace | "unknown"\r
+      destination_principal: destination.principal | "unknown"\r
+      destination_app: destination.labels["app"] | "unknown"\r
+      destination_version: destination.labels["version"] | "unknown"\r
+      destination_service: destination.service.host | "unknown"\r
+      destination_service_name: destination.service.name | "unknown"\r
+      destination_service_namespace: destination.service.namespace | "unknown"\r
+      request_protocol: api.protocol | context.protocol | "unknown"\r
+      response_code: response.code | 200\r
+      response_flags: context.proxy_error_code | "-"\r
+      permissive_response_code: rbac.permissive.response_code | "none"\r
+      permissive_response_policyid: rbac.permissive.effective_policy_id | "none"\r
+      connection_security_policy: conditional((context.reporter.kind | "inbound") == "outbound", "unknown", conditional(connection.mtls | false, "mutual_tls", "none"))\r
+    monitored_resource_type: '"UNSPECIFIED"'\r
+---\r
+apiVersion: "config.istio.io/v1alpha2"\r
+kind: instance\r
+metadata:\r
+  name: tcpbytesent\r
+  namespace: istio-system\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  compiledTemplate: metric\r
+  params:\r
+    value: connection.sent.bytes | 0\r
+    dimensions:\r
+      reporter: conditional((context.reporter.kind | "inbound") == "outbound", "source", "destination")\r
+      source_workload: source.workload.name | "unknown"\r
+      source_workload_namespace: source.workload.namespace | "unknown"\r
+      source_principal: source.principal | "unknown"\r
+      source_app: source.labels["app"] | "unknown"\r
+      source_version: source.labels["version"] | "unknown"\r
+      destination_workload: destination.workload.name | "unknown"\r
+      destination_workload_namespace: destination.workload.namespace | "unknown"\r
+      destination_principal: destination.principal | "unknown"\r
+      destination_app: destination.labels["app"] | "unknown"\r
+      destination_version: destination.labels["version"] | "unknown"\r
+      destination_service: destination.service.host | "unknown"\r
+      destination_service_name: destination.service.name | "unknown"\r
+      destination_service_namespace: destination.service.namespace | "unknown"\r
+      connection_security_policy: conditional((context.reporter.kind | "inbound") == "outbound", "unknown", conditional(connection.mtls | false, "mutual_tls", "none"))\r
+      response_flags: context.proxy_error_code | "-"\r
+    monitored_resource_type: '"UNSPECIFIED"'\r
+---\r
+apiVersion: "config.istio.io/v1alpha2"\r
+kind: instance\r
+metadata:\r
+  name: tcpbytereceived\r
+  namespace: istio-system\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  compiledTemplate: metric\r
+  params:\r
+    value: connection.received.bytes | 0\r
+    dimensions:\r
+      reporter: conditional((context.reporter.kind | "inbound") == "outbound", "source", "destination")\r
+      source_workload: source.workload.name | "unknown"\r
+      source_workload_namespace: source.workload.namespace | "unknown"\r
+      source_principal: source.principal | "unknown"\r
+      source_app: source.labels["app"] | "unknown"\r
+      source_version: source.labels["version"] | "unknown"\r
+      destination_workload: destination.workload.name | "unknown"\r
+      destination_workload_namespace: destination.workload.namespace | "unknown"\r
+      destination_principal: destination.principal | "unknown"\r
+      destination_app: destination.labels["app"] | "unknown"\r
+      destination_version: destination.labels["version"] | "unknown"\r
+      destination_service: destination.service.host | "unknown"\r
+      destination_service_name: destination.service.name | "unknown"\r
+      destination_service_namespace: destination.service.namespace | "unknown"\r
+      connection_security_policy: conditional((context.reporter.kind | "inbound") == "outbound", "unknown", conditional(connection.mtls | false, "mutual_tls", "none"))\r
+      response_flags: context.proxy_error_code | "-"\r
+    monitored_resource_type: '"UNSPECIFIED"'\r
+---\r
+apiVersion: "config.istio.io/v1alpha2"\r
+kind: instance\r
+metadata:\r
+  name: tcpconnectionsopened\r
+  namespace: istio-system\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  compiledTemplate: metric\r
+  params:\r
+    value: "1"\r
+    dimensions:\r
+      reporter: conditional((context.reporter.kind | "inbound") == "outbound", "source", "destination")\r
+      source_workload: source.workload.name | "unknown"\r
+      source_workload_namespace: source.workload.namespace | "unknown"\r
+      source_principal: source.principal | "unknown"\r
+      source_app: source.labels["app"] | "unknown"\r
+      source_version: source.labels["version"] | "unknown"\r
+      destination_workload: destination.workload.name | "unknown"\r
+      destination_workload_namespace: destination.workload.namespace | "unknown"\r
+      destination_principal: destination.principal | "unknown"\r
+      destination_app: destination.labels["app"] | "unknown"\r
+      destination_version: destination.labels["version"] | "unknown"\r
+      destination_service: destination.service.name | "unknown"\r
+      destination_service_name: destination.service.name | "unknown"\r
+      destination_service_namespace: destination.service.namespace | "unknown"\r
+      connection_security_policy: conditional((context.reporter.kind | "inbound") == "outbound", "unknown", conditional(connection.mtls | false, "mutual_tls", "none"))\r
+      response_flags: context.proxy_error_code | "-"\r
+    monitored_resource_type: '"UNSPECIFIED"'\r
+---\r
+apiVersion: "config.istio.io/v1alpha2"\r
+kind: instance\r
+metadata:\r
+  name: tcpconnectionsclosed\r
+  namespace: istio-system\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  compiledTemplate: metric\r
+  params:\r
+    value: "1"\r
+    dimensions:\r
+      reporter: conditional((context.reporter.kind | "inbound") == "outbound", "source", "destination")\r
+      source_workload: source.workload.name | "unknown"\r
+      source_workload_namespace: source.workload.namespace | "unknown"\r
+      source_principal: source.principal | "unknown"\r
+      source_app: source.labels["app"] | "unknown"\r
+      source_version: source.labels["version"] | "unknown"\r
+      destination_workload: destination.workload.name | "unknown"\r
+      destination_workload_namespace: destination.workload.namespace | "unknown"\r
+      destination_principal: destination.principal | "unknown"\r
+      destination_app: destination.labels["app"] | "unknown"\r
+      destination_version: destination.labels["version"] | "unknown"\r
+      destination_service: destination.service.name | "unknown"\r
+      destination_service_name: destination.service.name | "unknown"\r
+      destination_service_namespace: destination.service.namespace | "unknown"\r
+      connection_security_policy: conditional((context.reporter.kind | "inbound") == "outbound", "unknown", conditional(connection.mtls | false, "mutual_tls", "none"))\r
+      response_flags: context.proxy_error_code | "-"\r
+    monitored_resource_type: '"UNSPECIFIED"'\r
+---\r
+apiVersion: "config.istio.io/v1alpha2"\r
+kind: handler\r
+metadata:\r
+  name: prometheus\r
+  namespace: istio-system\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  compiledAdapter: prometheus\r
+  params:\r
+    metricsExpirationPolicy:\r
+      metricsExpiryDuration: "10m"\r
+    metrics:\r
+    - name: requests_total\r
+      instance_name: requestcount.instance.istio-system\r
+      kind: COUNTER\r
+      label_names:\r
+      - reporter\r
+      - source_app\r
+      - source_principal\r
+      - source_workload\r
+      - source_workload_namespace\r
+      - source_version\r
+      - destination_app\r
+      - destination_principal\r
+      - destination_workload\r
+      - destination_workload_namespace\r
+      - destination_version\r
+      - destination_service\r
+      - destination_service_name\r
+      - destination_service_namespace\r
+      - request_protocol\r
+      - response_code\r
+      - response_flags\r
+      - permissive_response_code\r
+      - permissive_response_policyid\r
+      - connection_security_policy\r
+    - name: request_duration_seconds\r
+      instance_name: requestduration.instance.istio-system\r
+      kind: DISTRIBUTION\r
+      label_names:\r
+      - reporter\r
+      - source_app\r
+      - source_principal\r
+      - source_workload\r
+      - source_workload_namespace\r
+      - source_version\r
+      - destination_app\r
+      - destination_principal\r
+      - destination_workload\r
+      - destination_workload_namespace\r
+      - destination_version\r
+      - destination_service\r
+      - destination_service_name\r
+      - destination_service_namespace\r
+      - request_protocol\r
+      - response_code\r
+      - response_flags\r
+      - permissive_response_code\r
+      - permissive_response_policyid\r
+      - connection_security_policy\r
+      buckets:\r
+        explicit_buckets:\r
+          bounds: [0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10]\r
+    - name: request_bytes\r
+      instance_name: requestsize.instance.istio-system\r
+      kind: DISTRIBUTION\r
+      label_names:\r
+      - reporter\r
+      - source_app\r
+      - source_principal\r
+      - source_workload\r
+      - source_workload_namespace\r
+      - source_version\r
+      - destination_app\r
+      - destination_principal\r
+      - destination_workload\r
+      - destination_workload_namespace\r
+      - destination_version\r
+      - destination_service\r
+      - destination_service_name\r
+      - destination_service_namespace\r
+      - request_protocol\r
+      - response_code\r
+      - response_flags\r
+      - permissive_response_code\r
+      - permissive_response_policyid\r
+      - connection_security_policy\r
+      buckets:\r
+        exponentialBuckets:\r
+          numFiniteBuckets: 8\r
+          scale: 1\r
+          growthFactor: 10\r
+    - name: response_bytes\r
+      instance_name: responsesize.instance.istio-system\r
+      kind: DISTRIBUTION\r
+      label_names:\r
+      - reporter\r
+      - source_app\r
+      - source_principal\r
+      - source_workload\r
+      - source_workload_namespace\r
+      - source_version\r
+      - destination_app\r
+      - destination_principal\r
+      - destination_workload\r
+      - destination_workload_namespace\r
+      - destination_version\r
+      - destination_service\r
+      - destination_service_name\r
+      - destination_service_namespace\r
+      - request_protocol\r
+      - response_code\r
+      - response_flags\r
+      - permissive_response_code\r
+      - permissive_response_policyid\r
+      - connection_security_policy\r
+      buckets:\r
+        exponentialBuckets:\r
+          numFiniteBuckets: 8\r
+          scale: 1\r
+          growthFactor: 10\r
+    - name: tcp_sent_bytes_total\r
+      instance_name: tcpbytesent.instance.istio-system\r
+      kind: COUNTER\r
+      label_names:\r
+      - reporter\r
+      - source_app\r
+      - source_principal\r
+      - source_workload\r
+      - source_workload_namespace\r
+      - source_version\r
+      - destination_app\r
+      - destination_principal\r
+      - destination_workload\r
+      - destination_workload_namespace\r
+      - destination_version\r
+      - destination_service\r
+      - destination_service_name\r
+      - destination_service_namespace\r
+      - connection_security_policy\r
+      - response_flags\r
+    - name: tcp_received_bytes_total\r
+      instance_name: tcpbytereceived.instance.istio-system\r
+      kind: COUNTER\r
+      label_names:\r
+      - reporter\r
+      - source_app\r
+      - source_principal\r
+      - source_workload\r
+      - source_workload_namespace\r
+      - source_version\r
+      - destination_app\r
+      - destination_principal\r
+      - destination_workload\r
+      - destination_workload_namespace\r
+      - destination_version\r
+      - destination_service\r
+      - destination_service_name\r
+      - destination_service_namespace\r
+      - connection_security_policy\r
+      - response_flags\r
+    - name: tcp_connections_opened_total\r
+      instance_name: tcpconnectionsopened.instance.istio-system\r
+      kind: COUNTER\r
+      label_names:\r
+      - reporter\r
+      - source_app\r
+      - source_principal\r
+      - source_workload\r
+      - source_workload_namespace\r
+      - source_version\r
+      - destination_app\r
+      - destination_principal\r
+      - destination_workload\r
+      - destination_workload_namespace\r
+      - destination_version\r
+      - destination_service\r
+      - destination_service_name\r
+      - destination_service_namespace\r
+      - connection_security_policy\r
+      - response_flags\r
+    - name: tcp_connections_closed_total\r
+      instance_name: tcpconnectionsclosed.instance.istio-system\r
+      kind: COUNTER\r
+      label_names:\r
+      - reporter\r
+      - source_app\r
+      - source_principal\r
+      - source_workload\r
+      - source_workload_namespace\r
+      - source_version\r
+      - destination_app\r
+      - destination_principal\r
+      - destination_workload\r
+      - destination_workload_namespace\r
+      - destination_version\r
+      - destination_service\r
+      - destination_service_name\r
+      - destination_service_namespace\r
+      - connection_security_policy\r
+      - response_flags\r
+---\r
+apiVersion: "config.istio.io/v1alpha2"\r
+kind: rule\r
+metadata:\r
+  name: promhttp\r
+  namespace: istio-system\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  match: (context.protocol == "http" || context.protocol == "grpc") && (match((request.useragent | "-"), "kube-probe*") == false) && (match((request.useragent | "-"), "Prometheus*") == false)\r
+  actions:\r
+  - handler: prometheus\r
+    instances:\r
+    - requestcount\r
+    - requestduration\r
+    - requestsize\r
+    - responsesize\r
+---\r
+apiVersion: "config.istio.io/v1alpha2"\r
+kind: rule\r
+metadata:\r
+  name: promtcp\r
+  namespace: istio-system\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  match: context.protocol == "tcp"\r
+  actions:\r
+  - handler: prometheus\r
+    instances:\r
+    - tcpbytesent\r
+    - tcpbytereceived\r
+---\r
+apiVersion: "config.istio.io/v1alpha2"\r
+kind: rule\r
+metadata:\r
+  name: promtcpconnectionopen\r
+  namespace: istio-system\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  match: context.protocol == "tcp" && ((connection.event | "na") == "open")\r
+  actions:\r
+  - handler: prometheus\r
+    instances:\r
+    - tcpconnectionsopened\r
+---\r
+apiVersion: "config.istio.io/v1alpha2"\r
+kind: rule\r
+metadata:\r
+  name: promtcpconnectionclosed\r
+  namespace: istio-system\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  match: context.protocol == "tcp" && ((connection.event | "na") == "close")\r
+  actions:\r
+  - handler: prometheus\r
+    instances:\r
+    - tcpconnectionsclosed\r
+---\r
+apiVersion: "config.istio.io/v1alpha2"\r
+kind: handler\r
+metadata:\r
+  name: kubernetesenv\r
+  namespace: istio-system\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  compiledAdapter: kubernetesenv\r
+  params:\r
+    # when running from mixer root, use the following config after adding a\r
+    # symbolic link to a kubernetes config file via:\r
+    #\r
+    # $ ln -s ~/.kube/config mixer/adapter/kubernetes/kubeconfig\r
+    #\r
+    # kubeconfig_path: "mixer/adapter/kubernetes/kubeconfig"\r
+\r
+---\r
+apiVersion: "config.istio.io/v1alpha2"\r
+kind: rule\r
+metadata:\r
+  name: kubeattrgenrulerule\r
+  namespace: istio-system\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  actions:\r
+  - handler: kubernetesenv\r
+    instances:\r
+    - attributes\r
+---\r
+apiVersion: "config.istio.io/v1alpha2"\r
+kind: rule\r
+metadata:\r
+  name: tcpkubeattrgenrulerule\r
+  namespace: istio-system\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  match: context.protocol == "tcp"\r
+  actions:\r
+  - handler: kubernetesenv\r
+    instances:\r
+    - attributes\r
+---\r
+apiVersion: "config.istio.io/v1alpha2"\r
+kind: instance\r
+metadata:\r
+  name: attributes\r
+  namespace: istio-system\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  compiledTemplate: kubernetes\r
+  params:\r
+    # Pass the required attribute data to the adapter\r
+    source_uid: source.uid | ""\r
+    source_ip: source.ip | ip("0.0.0.0") # default to unspecified ip addr\r
+    destination_uid: destination.uid | ""\r
+    destination_port: destination.port | 0\r
+  attributeBindings:\r
+    # Fill the new attributes from the adapter produced output.\r
+    # $out refers to an instance of OutputTemplate message\r
+    source.ip: $out.source_pod_ip | ip("0.0.0.0")\r
+    source.uid: $out.source_pod_uid | "unknown"\r
+    source.labels: $out.source_labels | emptyStringMap()\r
+    source.name: $out.source_pod_name | "unknown"\r
+    source.namespace: $out.source_namespace | "default"\r
+    source.owner: $out.source_owner | "unknown"\r
+    source.serviceAccount: $out.source_service_account_name | "unknown"\r
+    source.workload.uid: $out.source_workload_uid | "unknown"\r
+    source.workload.name: $out.source_workload_name | "unknown"\r
+    source.workload.namespace: $out.source_workload_namespace | "unknown"\r
+    destination.ip: $out.destination_pod_ip | ip("0.0.0.0")\r
+    destination.uid: $out.destination_pod_uid | "unknown"\r
+    destination.labels: $out.destination_labels | emptyStringMap()\r
+    destination.name: $out.destination_pod_name | "unknown"\r
+    destination.container.name: $out.destination_container_name | "unknown"\r
+    destination.namespace: $out.destination_namespace | "default"\r
+    destination.owner: $out.destination_owner | "unknown"\r
+    destination.serviceAccount: $out.destination_service_account_name | "unknown"\r
+    destination.workload.uid: $out.destination_workload_uid | "unknown"\r
+    destination.workload.name: $out.destination_workload_name | "unknown"\r
+    destination.workload.namespace: $out.destination_workload_namespace | "unknown"\r
+---\r
+# Configuration needed by Mixer.\r
+# Mixer cluster is delivered via CDS\r
+# Specify mixer cluster settings\r
+apiVersion: networking.istio.io/v1alpha3\r
+kind: DestinationRule\r
+metadata:\r
+  name: istio-policy\r
+  namespace: istio-system\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  host: istio-policy.istio-system.svc.cluster.local\r
+  trafficPolicy:\r
+    connectionPool:\r
+      http:\r
+        http2MaxRequests: 10000\r
+        maxRequestsPerConnection: 10000\r
+---\r
+apiVersion: networking.istio.io/v1alpha3\r
+kind: DestinationRule\r
+metadata:\r
+  name: istio-telemetry\r
+  namespace: istio-system\r
+  labels:\r
+    app: mixer\r
+    chart: mixer\r
+    heritage: Tiller\r
+    release: istio\r
+spec:\r
+  host: istio-telemetry.istio-system.svc.cluster.local\r
+  trafficPolicy:\r
+    connectionPool:\r
+      http:\r
+        http2MaxRequests: 10000\r
+        maxRequestsPerConnection: 10000\r
+---\r
+\r
diff --git a/src/foundation/service_mesh/Istio/istio-inject-configmap-1.1.7.yaml b/src/foundation/service_mesh/Istio/istio-inject-configmap-1.1.7.yaml
new file mode 100644 (file)
index 0000000..3dd3034
--- /dev/null
@@ -0,0 +1,247 @@
+# yamllint disable rule:hyphens rule:commas rule:indentation rule:line-length
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: istio-sidecar-injector
+  namespace: istio-system
+  labels:
+    app: istio
+    chart: istio
+    heritage: Tiller
+    release: istio
+    istio: sidecar-injector
+data:
+  config: |-
+    policy: enabled
+    template: |-
+      rewriteAppHTTPProbe: false
+      initContainers:
+      [[ if ne (annotation .ObjectMeta `sidecar.istio.io/interceptionMode` .ProxyConfig.InterceptionMode) "NONE" ]]
+      - name: istio-init
+        image: "iecedge/proxy_init-arm64:1.2.3"
+        args:
+        - "-p"
+        - [[ .MeshConfig.ProxyListenPort ]]
+        - "-u"
+        - 1337
+        - "-m"
+        - [[ annotation .ObjectMeta `sidecar.istio.io/interceptionMode` .ProxyConfig.InterceptionMode ]]
+        - "-i"
+        - "[[ annotation .ObjectMeta `traffic.sidecar.istio.io/includeOutboundIPRanges`  "*"  ]]"
+        - "-x"
+        - "[[ annotation .ObjectMeta `traffic.sidecar.istio.io/excludeOutboundIPRanges`  ""  ]]"
+        - "-b"
+        - "[[ annotation .ObjectMeta `traffic.sidecar.istio.io/includeInboundPorts` (includeInboundPorts .Spec.Containers) ]]"
+        - "-d"
+        - "[[ excludeInboundPort (annotation .ObjectMeta `status.sidecar.istio.io/port`  15020 ) (annotation .ObjectMeta `traffic.sidecar.istio.io/excludeInboundPorts`  "" ) ]]"
+        [[ if (isset .ObjectMeta.Annotations `traffic.sidecar.istio.io/kubevirtInterfaces`) -]]
+        - "-k"
+        - "[[ index .ObjectMeta.Annotations `traffic.sidecar.istio.io/kubevirtInterfaces` ]]"
+        [[ end -]]
+        imagePullPolicy: IfNotPresent
+        resources:
+          requests:
+            cpu: 10m
+            memory: 10Mi
+          limits:
+            cpu: 100m
+            memory: 50Mi
+        securityContext:
+          runAsUser: 0
+          runAsNonRoot: false
+          capabilities:
+            add:
+            - NET_ADMIN
+        restartPolicy: Always
+      [[ end -]]
+      containers:
+      - name: istio-proxy
+        image: [[ annotation .ObjectMeta `sidecar.istio.io/proxyImage`  "iecedge/proxyv2-arm64:1.2.3"  ]]
+        ports:
+        - containerPort: 15090
+          protocol: TCP
+          name: http-envoy-prom
+        args:
+        - proxy
+        - sidecar
+        - --domain
+        - $(POD_NAMESPACE).svc.cluster.local
+        - --configPath
+        - [[ .ProxyConfig.ConfigPath ]]
+        - --binaryPath
+        - [[ .ProxyConfig.BinaryPath ]]
+        - --serviceCluster
+        [[ if ne "" (index .ObjectMeta.Labels "app") -]]
+        - [[ index .ObjectMeta.Labels "app" ]].$(POD_NAMESPACE)
+        [[ else -]]
+        - [[ valueOrDefault .DeploymentMeta.Name "istio-proxy" ]].[[ valueOrDefault .DeploymentMeta.Namespace "default" ]]
+        [[ end -]]
+        - --drainDuration
+        - [[ formatDuration .ProxyConfig.DrainDuration ]]
+        - --parentShutdownDuration
+        - [[ formatDuration .ProxyConfig.ParentShutdownDuration ]]
+        - --discoveryAddress
+        - [[ annotation .ObjectMeta `sidecar.istio.io/discoveryAddress` .ProxyConfig.DiscoveryAddress ]]
+        - --zipkinAddress
+        - [[ .ProxyConfig.GetTracing.GetZipkin.GetAddress ]]
+        - --connectTimeout
+        - [[ formatDuration .ProxyConfig.ConnectTimeout ]]
+        - --proxyAdminPort
+        - [[ .ProxyConfig.ProxyAdminPort ]]
+        [[ if gt .ProxyConfig.Concurrency 0 -]]
+        - --concurrency
+        - [[ .ProxyConfig.Concurrency ]]
+        [[ end -]]
+        - --controlPlaneAuthPolicy
+        - [[ annotation .ObjectMeta `sidecar.istio.io/controlPlaneAuthPolicy` .ProxyConfig.ControlPlaneAuthPolicy ]]
+      [[- if (ne (annotation .ObjectMeta `status.sidecar.istio.io/port`  15020 ) "0") ]]
+        - --statusPort
+        - [[ annotation .ObjectMeta `status.sidecar.istio.io/port`  15020  ]]
+        - --applicationPorts
+        - "[[ annotation .ObjectMeta `readiness.status.sidecar.istio.io/applicationPorts` (applicationPorts .Spec.Containers) ]]"
+      [[- end ]]
+        env:
+        - name: POD_NAME
+          valueFrom:
+            fieldRef:
+              fieldPath: metadata.name
+        - name: POD_NAMESPACE
+          valueFrom:
+            fieldRef:
+              fieldPath: metadata.namespace
+        - name: INSTANCE_IP
+          valueFrom:
+            fieldRef:
+              fieldPath: status.podIP
+
+        - name: ISTIO_META_POD_NAME
+          valueFrom:
+            fieldRef:
+              fieldPath: metadata.name
+        - name: ISTIO_META_CONFIG_NAMESPACE
+          valueFrom:
+            fieldRef:
+              fieldPath: metadata.namespace
+        - name: ISTIO_META_INTERCEPTION_MODE
+          value: [[ or (index .ObjectMeta.Annotations "sidecar.istio.io/interceptionMode") .ProxyConfig.InterceptionMode.String ]]
+        [[ if .ObjectMeta.Annotations ]]
+        - name: ISTIO_METAJSON_ANNOTATIONS
+          value: |
+                 [[ toJSON .ObjectMeta.Annotations ]]
+        [[ end ]]
+        [[ if .ObjectMeta.Labels ]]
+        - name: ISTIO_METAJSON_LABELS
+          value: |
+                 [[ toJSON .ObjectMeta.Labels ]]
+        [[ end ]]
+        [[- if (isset .ObjectMeta.Annotations `sidecar.istio.io/bootstrapOverride`) ]]
+        - name: ISTIO_BOOTSTRAP_OVERRIDE
+          value: "/etc/istio/custom-bootstrap/custom_bootstrap.json"
+        [[- end ]]
+        imagePullPolicy: IfNotPresent
+        [[ if (ne (annotation .ObjectMeta `status.sidecar.istio.io/port`  15020 ) "0") ]]
+        readinessProbe:
+          httpGet:
+            path: /healthz/ready
+            port: [[ annotation .ObjectMeta `status.sidecar.istio.io/port`  15020  ]]
+          initialDelaySeconds: [[ annotation .ObjectMeta `readiness.status.sidecar.istio.io/initialDelaySeconds`  1  ]]
+          periodSeconds: [[ annotation .ObjectMeta `readiness.status.sidecar.istio.io/periodSeconds`  2  ]]
+          failureThreshold: [[ annotation .ObjectMeta `readiness.status.sidecar.istio.io/failureThreshold`  30  ]]
+        [[ end -]]securityContext:
+          readOnlyRootFilesystem: true
+          [[ if eq (annotation .ObjectMeta `sidecar.istio.io/interceptionMode` .ProxyConfig.InterceptionMode) "TPROXY" -]]
+          capabilities:
+            add:
+            - NET_ADMIN
+          runAsGroup: 1337
+          [[ else -]]
+
+          runAsUser: 1337
+          [[- end ]]
+        resources:
+          [[ if or (isset .ObjectMeta.Annotations `sidecar.istio.io/proxyCPU`) (isset .ObjectMeta.Annotations `sidecar.istio.io/proxyMemory`) -]]
+          requests:
+            [[ if (isset .ObjectMeta.Annotations `sidecar.istio.io/proxyCPU`) -]]
+            cpu: "[[ index .ObjectMeta.Annotations `sidecar.istio.io/proxyCPU` ]]"
+            [[ end ]]
+            [[ if (isset .ObjectMeta.Annotations `sidecar.istio.io/proxyMemory`) -]]
+            memory: "[[ index .ObjectMeta.Annotations `sidecar.istio.io/proxyMemory` ]]"
+            [[ end ]]
+        [[ else -]]
+          limits:
+            cpu: 2000m
+            memory: 1024Mi
+          requests:
+            cpu: 10m
+            memory: 40Mi
+
+        [[ end -]]
+        volumeMounts:
+        [[- if (isset .ObjectMeta.Annotations `sidecar.istio.io/bootstrapOverride`) ]]
+        - mountPath: /etc/istio/custom-bootstrap
+          name: custom-bootstrap-volume
+        [[- end ]]
+        - mountPath: /etc/istio/proxy
+          name: istio-envoy
+        - mountPath: /etc/certs/
+          name: istio-certs
+          readOnly: true
+          [[- if isset .ObjectMeta.Annotations `sidecar.istio.io/userVolumeMount` ]]
+          [[ range $index, $value := fromJSON (index .ObjectMeta.Annotations `sidecar.istio.io/userVolumeMount`) ]]
+        - name: "[[ $index ]]"
+          [[ toYaml $value | indent 4 ]]
+          [[ end ]]
+          [[- end ]]
+        - mountPath: /var/run/dikastes
+          name: dikastes-sock
+      - name: dikastes
+        image: calico/dikastes:v3.3.6
+        args: ["/dikastes", "server", "-l", "/var/run/dikastes/dikastes.sock", "-d", "/var/run/felix/nodeagent/socket"]
+        livenessProbe:
+          exec:
+            command:
+            - /healthz
+            - liveness
+          initialDelaySeconds: 3
+          periodSeconds: 3
+        readinessProbe:
+          exec:
+            command:
+            - /healthz
+            - readiness
+          initialDelaySeconds: 3
+          periodSeconds: 3
+        volumeMounts:
+        - mountPath: /var/run/dikastes
+          name: dikastes-sock
+        - mountPath: /var/run/felix
+          name: felix-sync
+      volumes:
+      [[- if (isset .ObjectMeta.Annotations `sidecar.istio.io/bootstrapOverride`) ]]
+      - name: custom-bootstrap-volume
+        configMap:
+          name: [[ annotation .ObjectMeta `sidecar.istio.io/bootstrapOverride` `` ]]
+      [[- end ]]
+      - emptyDir:
+          medium: Memory
+        name: istio-envoy
+      - name: istio-certs
+        secret:
+          optional: true
+          [[ if eq .Spec.ServiceAccountName "" -]]
+          secretName: istio.default
+          [[ else -]]
+          secretName: [[ printf "istio.%s" .Spec.ServiceAccountName ]]
+          [[ end -]]
+        [[- if isset .ObjectMeta.Annotations `sidecar.istio.io/userVolume` ]]
+        [[ range $index, $value := fromJSON (index .ObjectMeta.Annotations `sidecar.istio.io/userVolume`) ]]
+      - name: "[[ $index ]]"
+        [[ toYaml $value | indent 2 ]]
+        [[ end ]]
+        [[ end ]]
+      - name: dikastes-sock
+        emptyDir:
+          medium: Memory
+      - name: felix-sync
+        flexVolume:
+          driver: nodeagent/uds
diff --git a/src/foundation/service_mesh/README.md b/src/foundation/service_mesh/README.md
new file mode 100644 (file)
index 0000000..095564c
--- /dev/null
@@ -0,0 +1,15 @@
+# Service Mesh on IEC
+The Service Mesh, the most popular word in Cloud Native technology area, is used to
+describe the network of Micro-Services. It makes up such applications and the
+interactions between them.
+Now, the Istio--the hottest Service-Mesh software--has been supported by IEC. In
+this document, we will introduce how to deploy it. For details, please refer to
+[Istio](https://istio.io).
+
+## Deploy Service-Mesh
+
+  ./install_Istio.sh
+
+## Verify Service-Mesh
+Please refer to README.md in iec/src/use_case/service_mesh/bookinfo folder to get
+more information.
diff --git a/src/foundation/service_mesh/install_Istio.sh b/src/foundation/service_mesh/install_Istio.sh
new file mode 100755 (executable)
index 0000000..a7feb35
--- /dev/null
@@ -0,0 +1,36 @@
+#!/bin/bash
+set -x
+
+function wait_for {
+  # Execute in a subshell to prevent local variable override during recursion
+  (
+    local total_attempts=$1; shift
+    local cmdstr=$*
+    local sleep_time=2
+    echo -e "\n[wait_for] Waiting for cmd to return success: ${cmdstr}"
+    # shellcheck disable=SC2034
+    for attempt in $(seq "${total_attempts}"); do
+      echo "[wait_for] Attempt ${attempt}/${total_attempts%.*} for: ${cmdstr}"
+      # shellcheck disable=SC2015
+      eval "${cmdstr}" && echo "[wait_for] OK: ${cmdstr}" && return 0 || true
+      sleep "${sleep_time}"
+    done
+    echo "[wait_for] ERROR: Failed after max attempts: ${cmdstr}"
+    return 1
+  )
+}
+
+
+for i in Istio/init/crd*yaml; do kubectl apply -f $i; done
+
+kubectl apply -f Istio/istio-demo-arm64.yaml
+
+# Waiting for Istio ready
+wait_for 100 'test $(kubectl get pods -n istio-system | grep -ce "Running") -eq 12'
+
+#Apply the following ConfigMap to enable injection of Dikastes alongside Envoy.(injection ConfigMap)
+kubectl apply -f Istio/istio-inject-configmap-1.1.7.yaml
+
+#Enable the default namespace auto inject
+kubectl label namespace default istio-injection=enabled --overwrite
+kubectl get namespace -L istio-injection
diff --git a/src/use_cases/service_mesh/bookinfo/README.md b/src/use_cases/service_mesh/bookinfo/README.md
new file mode 100644 (file)
index 0000000..8d4d5a7
--- /dev/null
@@ -0,0 +1,15 @@
+# Bookinfo example on Istio
+This example deploys a sample application composed of four separate microservices
+used to demonstrate various Istio features. The application displays information
+about a book, similar to a single catalog entry of an online book store. Displayed
+on the page is a description of the book, book details (ISBN, number of pages, and
+so on), and a few book reviews.
+For more detail informations, please refer to corresponding website:
+[Bookinfo](https://istio.io/docs/examples/bookinfo/).
+In this document, it will show you how to deploy it.
+
+## Deploy Bookinfo example
+Firstly, get to know the k8s master IP address.
+Secondly, run the install.sh scripts with master IP address.
+
+  ./install/install.sh $master_ip
diff --git a/src/use_cases/service_mesh/bookinfo/config/bookinfo-gateway.yaml b/src/use_cases/service_mesh/bookinfo/config/bookinfo-gateway.yaml
new file mode 100644 (file)
index 0000000..ff2800c
--- /dev/null
@@ -0,0 +1,42 @@
+# yamllint disable rule:hyphens rule:commas rule:indentation rule:line-length rule:comments
+apiVersion: networking.istio.io/v1alpha3
+kind: Gateway
+metadata:
+  name: bookinfo-gateway
+spec:
+  selector:
+    istio: ingressgateway # use istio default controller
+  servers:
+  - port:
+      number: 80
+      name: http
+      protocol: HTTP
+    hosts:
+    - "*"
+---
+apiVersion: networking.istio.io/v1alpha3
+kind: VirtualService
+metadata:
+  name: bookinfo
+spec:
+  hosts:
+  - "*"
+  gateways:
+  - bookinfo-gateway
+  http:
+  - match:
+    - uri:
+        exact: /productpage
+    - uri:
+        prefix: /static
+    - uri:
+        exact: /login
+    - uri:
+        exact: /logout
+    - uri:
+        prefix: /api/v1/products
+    route:
+    - destination:
+        host: productpage
+        port:
+          number: 9080
diff --git a/src/use_cases/service_mesh/bookinfo/config/bookinfo.yaml b/src/use_cases/service_mesh/bookinfo/config/bookinfo.yaml
new file mode 100644 (file)
index 0000000..131a8f9
--- /dev/null
@@ -0,0 +1,265 @@
+# yamllint disable rule:hyphens rule:commas rule:indentation rule:line-length
+# Copyright 2017 Istio Authors
+#
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+
+##################################################################################################
+# Details service
+##################################################################################################
+apiVersion: v1
+kind: Service
+metadata:
+  name: details
+  labels:
+    app: details
+    service: details
+spec:
+  ports:
+  - port: 9080
+    name: http
+  selector:
+    app: details
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: bookinfo-details
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: details-v1
+  labels:
+    app: details
+    version: v1
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: details
+      version: v1
+  template:
+    metadata:
+      labels:
+        app: details
+        version: v1
+    spec:
+      serviceAccountName: bookinfo-details
+      containers:
+      - name: details
+        image: iecedge/examples-bookinfo-details-v1-arm64:1.2.3
+        imagePullPolicy: IfNotPresent
+        ports:
+        - containerPort: 9080
+---
+##################################################################################################
+# Ratings service
+##################################################################################################
+apiVersion: v1
+kind: Service
+metadata:
+  name: ratings
+  labels:
+    app: ratings
+    service: ratings
+spec:
+  ports:
+  - port: 9080
+    name: http
+  selector:
+    app: ratings
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: bookinfo-ratings
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: ratings-v1
+  labels:
+    app: ratings
+    version: v1
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: ratings
+      version: v1
+  template:
+    metadata:
+      labels:
+        app: ratings
+        version: v1
+    spec:
+      serviceAccountName: bookinfo-ratings
+      containers:
+      - name: ratings
+        image: iecedge/examples-bookinfo-ratings-v1-arm64:1.2.3
+        imagePullPolicy: IfNotPresent
+        ports:
+        - containerPort: 9080
+---
+##################################################################################################
+# Reviews service
+##################################################################################################
+apiVersion: v1
+kind: Service
+metadata:
+  name: reviews
+  labels:
+    app: reviews
+    service: reviews
+spec:
+  ports:
+  - port: 9080
+    name: http
+  selector:
+    app: reviews
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: bookinfo-reviews
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: reviews-v1
+  labels:
+    app: reviews
+    version: v1
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: reviews
+      version: v1
+  template:
+    metadata:
+      labels:
+        app: reviews
+        version: v1
+    spec:
+      serviceAccountName: bookinfo-reviews
+      containers:
+      - name: reviews
+        image: iecedge/examples-bookinfo-reviews-v1-arm64:1.2.3
+        imagePullPolicy: IfNotPresent
+        ports:
+        - containerPort: 9080
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: reviews-v2
+  labels:
+    app: reviews
+    version: v2
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: reviews
+      version: v2
+  template:
+    metadata:
+      labels:
+        app: reviews
+        version: v2
+    spec:
+      serviceAccountName: bookinfo-reviews
+      containers:
+      - name: reviews
+        image: iecedge/examples-bookinfo-reviews-v2-arm64:1.2.3
+        imagePullPolicy: IfNotPresent
+        ports:
+        - containerPort: 9080
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: reviews-v3
+  labels:
+    app: reviews
+    version: v3
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: reviews
+      version: v3
+  template:
+    metadata:
+      labels:
+        app: reviews
+        version: v3
+    spec:
+      serviceAccountName: bookinfo-reviews
+      containers:
+      - name: reviews
+        image: iecedge/examples-bookinfo-reviews-v3-arm64:1.2.3
+        imagePullPolicy: IfNotPresent
+        ports:
+        - containerPort: 9080
+---
+##################################################################################################
+# Productpage services
+##################################################################################################
+apiVersion: v1
+kind: Service
+metadata:
+  name: productpage
+  labels:
+    app: productpage
+    service: productpage
+spec:
+  ports:
+  - port: 9080
+    name: http
+  selector:
+    app: productpage
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: bookinfo-productpage
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: productpage-v1
+  labels:
+    app: productpage
+    version: v1
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: productpage
+      version: v1
+  template:
+    metadata:
+      labels:
+        app: productpage
+        version: v1
+    spec:
+      serviceAccountName: bookinfo-productpage
+      containers:
+      - name: productpage
+        image: iecedge/examples-bookinfo-productpage-v1-arm64:1.2.3
+        imagePullPolicy: IfNotPresent
+        ports:
+        - containerPort: 9080
+---
diff --git a/src/use_cases/service_mesh/bookinfo/config/destination-rule-all.yaml b/src/use_cases/service_mesh/bookinfo/config/destination-rule-all.yaml
new file mode 100644 (file)
index 0000000..68bb6f3
--- /dev/null
@@ -0,0 +1,63 @@
+# yamllint disable rule:hyphens rule:commas rule:indentation rule:line-length
+apiVersion: networking.istio.io/v1alpha3
+kind: DestinationRule
+metadata:
+  name: productpage
+spec:
+  host: productpage
+  subsets:
+  - name: v1
+    labels:
+      version: v1
+---
+apiVersion: networking.istio.io/v1alpha3
+kind: DestinationRule
+metadata:
+  name: reviews
+spec:
+  host: reviews
+  subsets:
+  - name: v1
+    labels:
+      version: v1
+  - name: v2
+    labels:
+      version: v2
+  - name: v3
+    labels:
+      version: v3
+---
+apiVersion: networking.istio.io/v1alpha3
+kind: DestinationRule
+metadata:
+  name: ratings
+spec:
+  host: ratings
+  subsets:
+  - name: v1
+    labels:
+      version: v1
+  - name: v2
+    labels:
+      version: v2
+  - name: v2-mysql
+    labels:
+      version: v2-mysql
+  - name: v2-mysql-vm
+    labels:
+      version: v2-mysql-vm
+---
+apiVersion: networking.istio.io/v1alpha3
+kind: DestinationRule
+metadata:
+  name: details
+spec:
+  host: details
+  subsets:
+  - name: v1
+    labels:
+      version: v1
+  - name: v2
+    labels:
+      version: v2
+---
diff --git a/src/use_cases/service_mesh/bookinfo/config/virtual-service-reviews-80-20.yaml b/src/use_cases/service_mesh/bookinfo/config/virtual-service-reviews-80-20.yaml
new file mode 100644 (file)
index 0000000..52e365c
--- /dev/null
@@ -0,0 +1,18 @@
+# yamllint disable rule:hyphens rule:commas rule:indentation rule:line-length
+apiVersion: networking.istio.io/v1alpha3
+kind: VirtualService
+metadata:
+  name: reviews
+spec:
+  hosts:
+    - reviews
+  http:
+  - route:
+    - destination:
+        host: reviews
+        subset: v1
+      weight: 80
+    - destination:
+        host: reviews
+        subset: v2
+      weight: 20
diff --git a/src/use_cases/service_mesh/bookinfo/config/virtual-service-reviews-v3.yaml b/src/use_cases/service_mesh/bookinfo/config/virtual-service-reviews-v3.yaml
new file mode 100644 (file)
index 0000000..b58d89e
--- /dev/null
@@ -0,0 +1,12 @@
+apiVersion: networking.istio.io/v1alpha3
+kind: VirtualService
+metadata:
+  name: reviews
+spec:
+  hosts:
+    - reviews
+  http:
+    - route:
+        - destination:
+          host: reviews
+          subset: v3
diff --git a/src/use_cases/service_mesh/bookinfo/install/install.sh b/src/use_cases/service_mesh/bookinfo/install/install.sh
new file mode 100755 (executable)
index 0000000..0f4d9b1
--- /dev/null
@@ -0,0 +1,53 @@
+#!/bin/bash -ex
+# shellcheck disable=SC2016
+# shellcheck source=/dev/null
+
+NODE_IP=${1:-10.169.36.152}
+
+function wait_for {
+  # Execute in a subshell to prevent local variable override during recursion
+  (
+    local total_attempts=$1; shift
+    local cmdstr=$*
+    local sleep_time=2
+    echo -e "\n[wait_for] Waiting for cmd to return success: ${cmdstr}"
+    # shellcheck disable=SC2034
+    for attempt in $(seq "${total_attempts}"); do
+      echo "[wait_for] Attempt ${attempt}/${total_attempts%.*} for: ${cmdstr}"
+      # shellcheck disable=SC2015
+      eval "${cmdstr}" && echo "[wait_for] OK: ${cmdstr}" && return 0 || true
+      sleep "${sleep_time}"
+    done
+    echo "[wait_for] ERROR: Failed after max attempts: ${cmdstr}"
+    return 1
+  )
+}
+
+# Enable default namespace as auto-inject mode
+# kubectl label namespace default istio-injection=enabled
+
+basepath=$(cd "$(dirname "$0")"; pwd)
+INFO_YAML=${INFO_YAML:-${basepath}/../config}
+
+# TODO(alav): Make each step re-entrant
+
+# shellcheck source=/dev/null
+# Waiting for Istio ready
+wait_for 100 'test $(kubectl get pods -n istio-system | grep -ce "Running") -eq 12'
+
+# Start bookinfo pods
+kubectl apply -f $INFO_YAML/bookinfo.yaml
+
+# Waiting for sample case ready
+wait_for 100 'test $(kubectl get pods | grep -ce "Running") -eq 6'
+
+# Start gateway
+kubectl apply -f $INFO_YAML/bookinfo-gateway.yaml
+
+# Configure gate way
+INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')
+# SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].nodePort}')
+export GATEWAY_URL=$NODE_IP:$INGRESS_PORT
+
+# Confirm the result
+curl -s http://${GATEWAY_URL}/productpage | grep -o "<title>.*</title>"