diff --git a/templates/meshmodel/components/1.23.0/authorizationpolicy.Istio.meshery.layer5.io_meshmodel.json b/templates/meshmodel/components/1.23.0/authorizationpolicy.Istio.meshery.layer5.io_meshmodel.json new file mode 100644 index 00000000..ce58d0ce --- /dev/null +++ b/templates/meshmodel/components/1.23.0/authorizationpolicy.Istio.meshery.layer5.io_meshmodel.json @@ -0,0 +1 @@ +{"id":"00000000-0000-0000-0000-000000000000","kind":"AuthorizationPolicy","apiVersion":"security.istio.io/v1","displayName":"Authorization Policy","format":"JSON","hostID":"00000000-0000-0000-0000-000000000000","metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"20\" width=\"20\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg height=\"20\" width=\"20\" viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"model":{"id":"00000000-0000-0000-0000-000000000000","name":"istio","version":"1.23.0","displayName":"ISTIO","hostID":"00000000-0000-0000-0000-000000000000","category":{"name":"Cloud Native Network","metadata":null},"metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"20\" width=\"20\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg height=\"20\" width=\"20\" viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"components":null,"relationships":null},"schema":"{\n \"properties\": {\n \"spec\": {\n \"description\": \"Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html\",\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"provider\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"provider\"\n ]\n }\n ],\n \"properties\": {\n \"action\": {\n \"description\": \"Optional.\\n\\nValid Options: ALLOW, DENY, AUDIT, CUSTOM\",\n \"enum\": [\n \"ALLOW\",\n \"DENY\",\n \"AUDIT\",\n \"CUSTOM\"\n ],\n \"type\": \"string\"\n },\n \"provider\": {\n \"description\": \"Specifies detailed configuration of the CUSTOM action.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Specifies the name of the extension provider.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"rules\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"properties\": {\n \"from\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"properties\": {\n \"source\": {\n \"description\": \"Source specifies the source of a request.\",\n \"properties\": {\n \"ipBlocks\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"namespaces\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"notIpBlocks\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"notNamespaces\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"notPrincipals\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"notRemoteIpBlocks\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"notRequestPrincipals\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"principals\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"remoteIpBlocks\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"requestPrincipals\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"to\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"properties\": {\n \"operation\": {\n \"description\": \"Operation specifies the operation of a request.\",\n \"properties\": {\n \"hosts\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"notHosts\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"notMethods\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"notPaths\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"notPorts\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"paths\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"ports\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"when\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"properties\": {\n \"key\": {\n \"description\": \"The name of an Istio attribute.\",\n \"type\": \"string\"\n },\n \"notValues\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"values\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"selector\": {\n \"description\": \"Optional.\",\n \"properties\": {\n \"matchLabels\": {\n \"additionalProperties\": {\n \"maxLength\": 63,\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"wildcard not allowed in label value match\",\n \"rule\": \"!self.contains('*')\"\n }\n ]\n },\n \"description\": \"One or more labels that indicate a specific set of pods/VMs on which a policy should be applied.\",\n \"maxProperties\": 4096,\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"wildcard not allowed in label key match\",\n \"rule\": \"self.all(key, !key.contains('*'))\"\n },\n {\n \"message\": \"key must not be empty\",\n \"rule\": \"self.all(key, key.size() != 0)\"\n }\n ]\n }\n },\n \"type\": \"object\"\n },\n \"targetRef\": {\n \"properties\": {\n \"group\": {\n \"description\": \"group is the group of the target resource.\",\n \"maxLength\": 253,\n \"pattern\": \"^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"kind is kind of the target resource.\",\n \"maxLength\": 63,\n \"minLength\": 1,\n \"pattern\": \"^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name is the name of the target resource.\",\n \"maxLength\": 253,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"namespace is the namespace of the referent.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"cross namespace referencing is not currently supported\",\n \"rule\": \"self.size() == 0\"\n }\n ]\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"Support kinds are core/Service and gateway.networking.k8s.io/Gateway\",\n \"rule\": \"[self.group, self.kind] in [['core','Service'], ['','Service'], ['gateway.networking.k8s.io','Gateway']]\"\n }\n ]\n },\n \"targetRefs\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"properties\": {\n \"group\": {\n \"description\": \"group is the group of the target resource.\",\n \"maxLength\": 253,\n \"pattern\": \"^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"kind is kind of the target resource.\",\n \"maxLength\": 63,\n \"minLength\": 1,\n \"pattern\": \"^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name is the name of the target resource.\",\n \"maxLength\": 253,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"namespace is the namespace of the referent.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"cross namespace referencing is not currently supported\",\n \"rule\": \"self.size() == 0\"\n }\n ]\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"Support kinds are core/Service and gateway.networking.k8s.io/Gateway\",\n \"rule\": \"[self.group, self.kind] in [['core','Service'], ['','Service'], ['gateway.networking.k8s.io','Gateway']]\"\n }\n ]\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"status\": {\n \"type\": \"object\",\n \"x-kubernetes-preserve-unknown-fields\": true\n }\n },\n \"title\": \"Authorization Policy\",\n \"type\": \"object\"\n}"} \ No newline at end of file diff --git a/templates/meshmodel/components/1.23.0/destinationrule.Istio.meshery.layer5.io_meshmodel.json b/templates/meshmodel/components/1.23.0/destinationrule.Istio.meshery.layer5.io_meshmodel.json new file mode 100644 index 00000000..06e67d17 --- /dev/null +++ b/templates/meshmodel/components/1.23.0/destinationrule.Istio.meshery.layer5.io_meshmodel.json @@ -0,0 +1 @@ +{"id":"00000000-0000-0000-0000-000000000000","kind":"DestinationRule","apiVersion":"networking.istio.io/v1","displayName":"Destination Rule","format":"JSON","hostID":"00000000-0000-0000-0000-000000000000","metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"20\" width=\"20\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg height=\"20\" width=\"20\" viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"model":{"id":"00000000-0000-0000-0000-000000000000","name":"istio","version":"1.23.0","displayName":"ISTIO","hostID":"00000000-0000-0000-0000-000000000000","category":{"name":"Cloud Native Network","metadata":null},"metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"20\" width=\"20\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg height=\"20\" width=\"20\" viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"components":null,"relationships":null},"schema":"{\n \"properties\": {\n \"spec\": {\n \"description\": \"Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html\",\n \"properties\": {\n \"exportTo\": {\n \"description\": \"A list of namespaces to which this destination rule is exported.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"host\": {\n \"description\": \"The name of a service from the service registry.\",\n \"type\": \"string\"\n },\n \"subsets\": {\n \"description\": \"One or more named sets that represent individual versions of a service.\",\n \"items\": {\n \"properties\": {\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Labels apply a filter over the endpoints of a service in the service registry.\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the subset.\",\n \"type\": \"string\"\n },\n \"trafficPolicy\": {\n \"description\": \"Traffic policies that apply to this subset.\",\n \"properties\": {\n \"connectionPool\": {\n \"properties\": {\n \"http\": {\n \"description\": \"HTTP connection pool settings.\",\n \"properties\": {\n \"h2UpgradePolicy\": {\n \"description\": \"Specify if http1.1 connection should be upgraded to http2 for the associated destination.\\n\\nValid Options: DEFAULT, DO_NOT_UPGRADE, UPGRADE\",\n \"enum\": [\n \"DEFAULT\",\n \"DO_NOT_UPGRADE\",\n \"UPGRADE\"\n ],\n \"type\": \"string\"\n },\n \"http1MaxPendingRequests\": {\n \"description\": \"Maximum number of requests that will be queued while waiting for a ready connection pool connection.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"http2MaxRequests\": {\n \"description\": \"Maximum number of active requests to a destination.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"idleTimeout\": {\n \"description\": \"The idle timeout for upstream connection pool connections.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"maxConcurrentStreams\": {\n \"description\": \"The maximum number of concurrent streams allowed for a peer on one HTTP/2 connection.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"maxRequestsPerConnection\": {\n \"description\": \"Maximum number of requests per connection to a backend.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"maxRetries\": {\n \"description\": \"Maximum number of retries that can be outstanding to all hosts in a cluster at a given time.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"useClientProtocol\": {\n \"description\": \"If set to true, client protocol will be preserved while initiating connection to backend.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"tcp\": {\n \"description\": \"Settings common to both HTTP and TCP upstream connections.\",\n \"properties\": {\n \"connectTimeout\": {\n \"description\": \"TCP connection timeout.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"idleTimeout\": {\n \"description\": \"The idle timeout for TCP connections.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"maxConnectionDuration\": {\n \"description\": \"The maximum duration of a connection.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"maxConnections\": {\n \"description\": \"Maximum number of HTTP1 /TCP connections to a destination host.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpKeepalive\": {\n \"description\": \"If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.\",\n \"properties\": {\n \"interval\": {\n \"description\": \"The time duration between keep-alive probes.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"probes\": {\n \"description\": \"Maximum number of keepalive probes to send without response before deciding the connection is dead.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"time\": {\n \"description\": \"The time duration a connection needs to be idle before keep-alive probes start being sent.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"loadBalancer\": {\n \"description\": \"Settings controlling the load balancer algorithms.\",\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"simple\"\n ]\n },\n {\n \"required\": [\n \"consistentHash\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"simple\"\n ]\n },\n {\n \"required\": [\n \"consistentHash\"\n ]\n }\n ],\n \"properties\": {\n \"consistentHash\": {\n \"allOf\": [\n {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"httpHeaderName\"\n ]\n },\n {\n \"required\": [\n \"httpCookie\"\n ]\n },\n {\n \"required\": [\n \"useSourceIp\"\n ]\n },\n {\n \"required\": [\n \"httpQueryParameterName\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"httpHeaderName\"\n ]\n },\n {\n \"required\": [\n \"httpCookie\"\n ]\n },\n {\n \"required\": [\n \"useSourceIp\"\n ]\n },\n {\n \"required\": [\n \"httpQueryParameterName\"\n ]\n }\n ]\n },\n {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"ringHash\"\n ]\n },\n {\n \"required\": [\n \"maglev\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"ringHash\"\n ]\n },\n {\n \"required\": [\n \"maglev\"\n ]\n }\n ]\n }\n ],\n \"properties\": {\n \"httpCookie\": {\n \"description\": \"Hash based on HTTP cookie.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the cookie.\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path to set for the cookie.\",\n \"type\": \"string\"\n },\n \"ttl\": {\n \"description\": \"Lifetime of the cookie.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"httpHeaderName\": {\n \"description\": \"Hash based on a specific HTTP header.\",\n \"type\": \"string\"\n },\n \"httpQueryParameterName\": {\n \"description\": \"Hash based on a specific HTTP query parameter.\",\n \"type\": \"string\"\n },\n \"maglev\": {\n \"description\": \"The Maglev load balancer implements consistent hashing to backend hosts.\",\n \"properties\": {\n \"tableSize\": {\n \"description\": \"The table size for Maglev hashing.\",\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"minimumRingSize\": {\n \"description\": \"Deprecated.\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"ringHash\": {\n \"description\": \"The ring/modulo hash load balancer implements consistent hashing to backend hosts.\",\n \"properties\": {\n \"minimumRingSize\": {\n \"description\": \"The minimum number of virtual nodes to use for the hash ring.\",\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"useSourceIp\": {\n \"description\": \"Hash based on the source IP address.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"localityLbSetting\": {\n \"properties\": {\n \"distribute\": {\n \"description\": \"Optional: only one of distribute, failover or failoverPriority can be set.\",\n \"items\": {\n \"properties\": {\n \"from\": {\n \"description\": \"Originating locality, '/' separated, e.g.\",\n \"type\": \"string\"\n },\n \"to\": {\n \"additionalProperties\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"description\": \"Map of upstream localities to traffic distribution weights.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"enabled\": {\n \"description\": \"enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"failover\": {\n \"description\": \"Optional: only one of distribute, failover or failoverPriority can be set.\",\n \"items\": {\n \"properties\": {\n \"from\": {\n \"description\": \"Originating region.\",\n \"type\": \"string\"\n },\n \"to\": {\n \"description\": \"Destination region the traffic will fail over to when endpoints in the 'from' region becomes unhealthy.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"failoverPriority\": {\n \"description\": \"failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"simple\": {\n \"description\": \"\\n\\nValid Options: LEAST_CONN, RANDOM, PASSTHROUGH, ROUND_ROBIN, LEAST_REQUEST\",\n \"enum\": [\n \"UNSPECIFIED\",\n \"LEAST_CONN\",\n \"RANDOM\",\n \"PASSTHROUGH\",\n \"ROUND_ROBIN\",\n \"LEAST_REQUEST\"\n ],\n \"type\": \"string\"\n },\n \"warmupDurationSecs\": {\n \"description\": \"Represents the warmup duration of Service.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n }\n },\n \"type\": \"object\"\n },\n \"outlierDetection\": {\n \"properties\": {\n \"baseEjectionTime\": {\n \"description\": \"Minimum ejection duration.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"consecutive5xxErrors\": {\n \"description\": \"Number of 5xx errors before a host is ejected from the connection pool.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"consecutiveErrors\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"consecutiveGatewayErrors\": {\n \"description\": \"Number of gateway errors before a host is ejected from the connection pool.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"consecutiveLocalOriginFailures\": {\n \"description\": \"The number of consecutive locally originated failures before ejection occurs.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"interval\": {\n \"description\": \"Time interval between ejection sweep analysis.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"maxEjectionPercent\": {\n \"description\": \"Maximum % of hosts in the load balancing pool for the upstream service that can be ejected.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minHealthPercent\": {\n \"description\": \"Outlier detection will be enabled as long as the associated load balancing pool has at least min_health_percent hosts in healthy mode.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"splitExternalLocalOriginErrors\": {\n \"description\": \"Determines whether to distinguish local origin failures from external errors.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"portLevelSettings\": {\n \"description\": \"Traffic policies specific to individual ports.\",\n \"items\": {\n \"properties\": {\n \"connectionPool\": {\n \"properties\": {\n \"http\": {\n \"description\": \"HTTP connection pool settings.\",\n \"properties\": {\n \"h2UpgradePolicy\": {\n \"description\": \"Specify if http1.1 connection should be upgraded to http2 for the associated destination.\\n\\nValid Options: DEFAULT, DO_NOT_UPGRADE, UPGRADE\",\n \"enum\": [\n \"DEFAULT\",\n \"DO_NOT_UPGRADE\",\n \"UPGRADE\"\n ],\n \"type\": \"string\"\n },\n \"http1MaxPendingRequests\": {\n \"description\": \"Maximum number of requests that will be queued while waiting for a ready connection pool connection.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"http2MaxRequests\": {\n \"description\": \"Maximum number of active requests to a destination.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"idleTimeout\": {\n \"description\": \"The idle timeout for upstream connection pool connections.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"maxConcurrentStreams\": {\n \"description\": \"The maximum number of concurrent streams allowed for a peer on one HTTP/2 connection.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"maxRequestsPerConnection\": {\n \"description\": \"Maximum number of requests per connection to a backend.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"maxRetries\": {\n \"description\": \"Maximum number of retries that can be outstanding to all hosts in a cluster at a given time.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"useClientProtocol\": {\n \"description\": \"If set to true, client protocol will be preserved while initiating connection to backend.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"tcp\": {\n \"description\": \"Settings common to both HTTP and TCP upstream connections.\",\n \"properties\": {\n \"connectTimeout\": {\n \"description\": \"TCP connection timeout.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"idleTimeout\": {\n \"description\": \"The idle timeout for TCP connections.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"maxConnectionDuration\": {\n \"description\": \"The maximum duration of a connection.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"maxConnections\": {\n \"description\": \"Maximum number of HTTP1 /TCP connections to a destination host.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpKeepalive\": {\n \"description\": \"If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.\",\n \"properties\": {\n \"interval\": {\n \"description\": \"The time duration between keep-alive probes.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"probes\": {\n \"description\": \"Maximum number of keepalive probes to send without response before deciding the connection is dead.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"time\": {\n \"description\": \"The time duration a connection needs to be idle before keep-alive probes start being sent.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"loadBalancer\": {\n \"description\": \"Settings controlling the load balancer algorithms.\",\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"simple\"\n ]\n },\n {\n \"required\": [\n \"consistentHash\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"simple\"\n ]\n },\n {\n \"required\": [\n \"consistentHash\"\n ]\n }\n ],\n \"properties\": {\n \"consistentHash\": {\n \"allOf\": [\n {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"httpHeaderName\"\n ]\n },\n {\n \"required\": [\n \"httpCookie\"\n ]\n },\n {\n \"required\": [\n \"useSourceIp\"\n ]\n },\n {\n \"required\": [\n \"httpQueryParameterName\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"httpHeaderName\"\n ]\n },\n {\n \"required\": [\n \"httpCookie\"\n ]\n },\n {\n \"required\": [\n \"useSourceIp\"\n ]\n },\n {\n \"required\": [\n \"httpQueryParameterName\"\n ]\n }\n ]\n },\n {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"ringHash\"\n ]\n },\n {\n \"required\": [\n \"maglev\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"ringHash\"\n ]\n },\n {\n \"required\": [\n \"maglev\"\n ]\n }\n ]\n }\n ],\n \"properties\": {\n \"httpCookie\": {\n \"description\": \"Hash based on HTTP cookie.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the cookie.\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path to set for the cookie.\",\n \"type\": \"string\"\n },\n \"ttl\": {\n \"description\": \"Lifetime of the cookie.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"httpHeaderName\": {\n \"description\": \"Hash based on a specific HTTP header.\",\n \"type\": \"string\"\n },\n \"httpQueryParameterName\": {\n \"description\": \"Hash based on a specific HTTP query parameter.\",\n \"type\": \"string\"\n },\n \"maglev\": {\n \"description\": \"The Maglev load balancer implements consistent hashing to backend hosts.\",\n \"properties\": {\n \"tableSize\": {\n \"description\": \"The table size for Maglev hashing.\",\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"minimumRingSize\": {\n \"description\": \"Deprecated.\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"ringHash\": {\n \"description\": \"The ring/modulo hash load balancer implements consistent hashing to backend hosts.\",\n \"properties\": {\n \"minimumRingSize\": {\n \"description\": \"The minimum number of virtual nodes to use for the hash ring.\",\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"useSourceIp\": {\n \"description\": \"Hash based on the source IP address.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"localityLbSetting\": {\n \"properties\": {\n \"distribute\": {\n \"description\": \"Optional: only one of distribute, failover or failoverPriority can be set.\",\n \"items\": {\n \"properties\": {\n \"from\": {\n \"description\": \"Originating locality, '/' separated, e.g.\",\n \"type\": \"string\"\n },\n \"to\": {\n \"additionalProperties\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"description\": \"Map of upstream localities to traffic distribution weights.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"enabled\": {\n \"description\": \"enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"failover\": {\n \"description\": \"Optional: only one of distribute, failover or failoverPriority can be set.\",\n \"items\": {\n \"properties\": {\n \"from\": {\n \"description\": \"Originating region.\",\n \"type\": \"string\"\n },\n \"to\": {\n \"description\": \"Destination region the traffic will fail over to when endpoints in the 'from' region becomes unhealthy.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"failoverPriority\": {\n \"description\": \"failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"simple\": {\n \"description\": \"\\n\\nValid Options: LEAST_CONN, RANDOM, PASSTHROUGH, ROUND_ROBIN, LEAST_REQUEST\",\n \"enum\": [\n \"UNSPECIFIED\",\n \"LEAST_CONN\",\n \"RANDOM\",\n \"PASSTHROUGH\",\n \"ROUND_ROBIN\",\n \"LEAST_REQUEST\"\n ],\n \"type\": \"string\"\n },\n \"warmupDurationSecs\": {\n \"description\": \"Represents the warmup duration of Service.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n }\n },\n \"type\": \"object\"\n },\n \"outlierDetection\": {\n \"properties\": {\n \"baseEjectionTime\": {\n \"description\": \"Minimum ejection duration.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"consecutive5xxErrors\": {\n \"description\": \"Number of 5xx errors before a host is ejected from the connection pool.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"consecutiveErrors\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"consecutiveGatewayErrors\": {\n \"description\": \"Number of gateway errors before a host is ejected from the connection pool.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"consecutiveLocalOriginFailures\": {\n \"description\": \"The number of consecutive locally originated failures before ejection occurs.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"interval\": {\n \"description\": \"Time interval between ejection sweep analysis.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"maxEjectionPercent\": {\n \"description\": \"Maximum % of hosts in the load balancing pool for the upstream service that can be ejected.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minHealthPercent\": {\n \"description\": \"Outlier detection will be enabled as long as the associated load balancing pool has at least min_health_percent hosts in healthy mode.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"splitExternalLocalOriginErrors\": {\n \"description\": \"Determines whether to distinguish local origin failures from external errors.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"port\": {\n \"description\": \"Specifies the number of a port on the destination service on which this policy is being applied.\",\n \"properties\": {\n \"number\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"tls\": {\n \"description\": \"TLS related settings for connections to the upstream service.\",\n \"properties\": {\n \"caCertificates\": {\n \"description\": \"OPTIONAL: The path to the file containing certificate authority certificates to use in verifying a presented server certificate.\",\n \"type\": \"string\"\n },\n \"caCrl\": {\n \"description\": \"OPTIONAL: The path to the file containing the certificate revocation list (CRL) to use in verifying a presented server certificate.\",\n \"type\": \"string\"\n },\n \"clientCertificate\": {\n \"description\": \"REQUIRED if mode is `MUTUAL`.\",\n \"type\": \"string\"\n },\n \"credentialName\": {\n \"description\": \"The name of the secret that holds the TLS certs for the client including the CA certificates.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"`insecureSkipVerify` specifies whether the proxy should skip verifying the CA signature and SAN for the server certificate corresponding to the host.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"mode\": {\n \"description\": \"Indicates whether connections to this port should be secured using TLS.\\n\\nValid Options: DISABLE, SIMPLE, MUTUAL, ISTIO_MUTUAL\",\n \"enum\": [\n \"DISABLE\",\n \"SIMPLE\",\n \"MUTUAL\",\n \"ISTIO_MUTUAL\"\n ],\n \"type\": \"string\"\n },\n \"privateKey\": {\n \"description\": \"REQUIRED if mode is `MUTUAL`.\",\n \"type\": \"string\"\n },\n \"sni\": {\n \"description\": \"SNI string to present to the server during TLS handshake.\",\n \"type\": \"string\"\n },\n \"subjectAltNames\": {\n \"description\": \"A list of alternate names to verify the subject identity in the certificate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"maxItems\": 4096,\n \"type\": \"array\"\n },\n \"proxyProtocol\": {\n \"description\": \"The upstream PROXY protocol settings.\",\n \"properties\": {\n \"version\": {\n \"description\": \"The PROXY protocol version to use.\\n\\nValid Options: V1, V2\",\n \"enum\": [\n \"V1\",\n \"V2\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tls\": {\n \"description\": \"TLS related settings for connections to the upstream service.\",\n \"properties\": {\n \"caCertificates\": {\n \"description\": \"OPTIONAL: The path to the file containing certificate authority certificates to use in verifying a presented server certificate.\",\n \"type\": \"string\"\n },\n \"caCrl\": {\n \"description\": \"OPTIONAL: The path to the file containing the certificate revocation list (CRL) to use in verifying a presented server certificate.\",\n \"type\": \"string\"\n },\n \"clientCertificate\": {\n \"description\": \"REQUIRED if mode is `MUTUAL`.\",\n \"type\": \"string\"\n },\n \"credentialName\": {\n \"description\": \"The name of the secret that holds the TLS certs for the client including the CA certificates.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"`insecureSkipVerify` specifies whether the proxy should skip verifying the CA signature and SAN for the server certificate corresponding to the host.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"mode\": {\n \"description\": \"Indicates whether connections to this port should be secured using TLS.\\n\\nValid Options: DISABLE, SIMPLE, MUTUAL, ISTIO_MUTUAL\",\n \"enum\": [\n \"DISABLE\",\n \"SIMPLE\",\n \"MUTUAL\",\n \"ISTIO_MUTUAL\"\n ],\n \"type\": \"string\"\n },\n \"privateKey\": {\n \"description\": \"REQUIRED if mode is `MUTUAL`.\",\n \"type\": \"string\"\n },\n \"sni\": {\n \"description\": \"SNI string to present to the server during TLS handshake.\",\n \"type\": \"string\"\n },\n \"subjectAltNames\": {\n \"description\": \"A list of alternate names to verify the subject identity in the certificate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"tunnel\": {\n \"description\": \"Configuration of tunneling TCP over other transport or application layers for the host configured in the DestinationRule.\",\n \"properties\": {\n \"protocol\": {\n \"description\": \"Specifies which protocol to use for tunneling the downstream connection.\",\n \"type\": \"string\"\n },\n \"targetHost\": {\n \"description\": \"Specifies a host to which the downstream connection is tunneled.\",\n \"type\": \"string\"\n },\n \"targetPort\": {\n \"description\": \"Specifies a port to which the downstream connection is tunneled.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"targetHost\",\n \"targetPort\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"trafficPolicy\": {\n \"description\": \"Traffic policies to apply (load balancing policy, connection pool sizes, outlier detection).\",\n \"properties\": {\n \"connectionPool\": {\n \"properties\": {\n \"http\": {\n \"description\": \"HTTP connection pool settings.\",\n \"properties\": {\n \"h2UpgradePolicy\": {\n \"description\": \"Specify if http1.1 connection should be upgraded to http2 for the associated destination.\\n\\nValid Options: DEFAULT, DO_NOT_UPGRADE, UPGRADE\",\n \"enum\": [\n \"DEFAULT\",\n \"DO_NOT_UPGRADE\",\n \"UPGRADE\"\n ],\n \"type\": \"string\"\n },\n \"http1MaxPendingRequests\": {\n \"description\": \"Maximum number of requests that will be queued while waiting for a ready connection pool connection.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"http2MaxRequests\": {\n \"description\": \"Maximum number of active requests to a destination.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"idleTimeout\": {\n \"description\": \"The idle timeout for upstream connection pool connections.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"maxConcurrentStreams\": {\n \"description\": \"The maximum number of concurrent streams allowed for a peer on one HTTP/2 connection.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"maxRequestsPerConnection\": {\n \"description\": \"Maximum number of requests per connection to a backend.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"maxRetries\": {\n \"description\": \"Maximum number of retries that can be outstanding to all hosts in a cluster at a given time.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"useClientProtocol\": {\n \"description\": \"If set to true, client protocol will be preserved while initiating connection to backend.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"tcp\": {\n \"description\": \"Settings common to both HTTP and TCP upstream connections.\",\n \"properties\": {\n \"connectTimeout\": {\n \"description\": \"TCP connection timeout.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"idleTimeout\": {\n \"description\": \"The idle timeout for TCP connections.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"maxConnectionDuration\": {\n \"description\": \"The maximum duration of a connection.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"maxConnections\": {\n \"description\": \"Maximum number of HTTP1 /TCP connections to a destination host.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpKeepalive\": {\n \"description\": \"If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.\",\n \"properties\": {\n \"interval\": {\n \"description\": \"The time duration between keep-alive probes.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"probes\": {\n \"description\": \"Maximum number of keepalive probes to send without response before deciding the connection is dead.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"time\": {\n \"description\": \"The time duration a connection needs to be idle before keep-alive probes start being sent.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"loadBalancer\": {\n \"description\": \"Settings controlling the load balancer algorithms.\",\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"simple\"\n ]\n },\n {\n \"required\": [\n \"consistentHash\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"simple\"\n ]\n },\n {\n \"required\": [\n \"consistentHash\"\n ]\n }\n ],\n \"properties\": {\n \"consistentHash\": {\n \"allOf\": [\n {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"httpHeaderName\"\n ]\n },\n {\n \"required\": [\n \"httpCookie\"\n ]\n },\n {\n \"required\": [\n \"useSourceIp\"\n ]\n },\n {\n \"required\": [\n \"httpQueryParameterName\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"httpHeaderName\"\n ]\n },\n {\n \"required\": [\n \"httpCookie\"\n ]\n },\n {\n \"required\": [\n \"useSourceIp\"\n ]\n },\n {\n \"required\": [\n \"httpQueryParameterName\"\n ]\n }\n ]\n },\n {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"ringHash\"\n ]\n },\n {\n \"required\": [\n \"maglev\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"ringHash\"\n ]\n },\n {\n \"required\": [\n \"maglev\"\n ]\n }\n ]\n }\n ],\n \"properties\": {\n \"httpCookie\": {\n \"description\": \"Hash based on HTTP cookie.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the cookie.\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path to set for the cookie.\",\n \"type\": \"string\"\n },\n \"ttl\": {\n \"description\": \"Lifetime of the cookie.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"httpHeaderName\": {\n \"description\": \"Hash based on a specific HTTP header.\",\n \"type\": \"string\"\n },\n \"httpQueryParameterName\": {\n \"description\": \"Hash based on a specific HTTP query parameter.\",\n \"type\": \"string\"\n },\n \"maglev\": {\n \"description\": \"The Maglev load balancer implements consistent hashing to backend hosts.\",\n \"properties\": {\n \"tableSize\": {\n \"description\": \"The table size for Maglev hashing.\",\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"minimumRingSize\": {\n \"description\": \"Deprecated.\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"ringHash\": {\n \"description\": \"The ring/modulo hash load balancer implements consistent hashing to backend hosts.\",\n \"properties\": {\n \"minimumRingSize\": {\n \"description\": \"The minimum number of virtual nodes to use for the hash ring.\",\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"useSourceIp\": {\n \"description\": \"Hash based on the source IP address.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"localityLbSetting\": {\n \"properties\": {\n \"distribute\": {\n \"description\": \"Optional: only one of distribute, failover or failoverPriority can be set.\",\n \"items\": {\n \"properties\": {\n \"from\": {\n \"description\": \"Originating locality, '/' separated, e.g.\",\n \"type\": \"string\"\n },\n \"to\": {\n \"additionalProperties\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"description\": \"Map of upstream localities to traffic distribution weights.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"enabled\": {\n \"description\": \"enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"failover\": {\n \"description\": \"Optional: only one of distribute, failover or failoverPriority can be set.\",\n \"items\": {\n \"properties\": {\n \"from\": {\n \"description\": \"Originating region.\",\n \"type\": \"string\"\n },\n \"to\": {\n \"description\": \"Destination region the traffic will fail over to when endpoints in the 'from' region becomes unhealthy.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"failoverPriority\": {\n \"description\": \"failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"simple\": {\n \"description\": \"\\n\\nValid Options: LEAST_CONN, RANDOM, PASSTHROUGH, ROUND_ROBIN, LEAST_REQUEST\",\n \"enum\": [\n \"UNSPECIFIED\",\n \"LEAST_CONN\",\n \"RANDOM\",\n \"PASSTHROUGH\",\n \"ROUND_ROBIN\",\n \"LEAST_REQUEST\"\n ],\n \"type\": \"string\"\n },\n \"warmupDurationSecs\": {\n \"description\": \"Represents the warmup duration of Service.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n }\n },\n \"type\": \"object\"\n },\n \"outlierDetection\": {\n \"properties\": {\n \"baseEjectionTime\": {\n \"description\": \"Minimum ejection duration.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"consecutive5xxErrors\": {\n \"description\": \"Number of 5xx errors before a host is ejected from the connection pool.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"consecutiveErrors\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"consecutiveGatewayErrors\": {\n \"description\": \"Number of gateway errors before a host is ejected from the connection pool.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"consecutiveLocalOriginFailures\": {\n \"description\": \"The number of consecutive locally originated failures before ejection occurs.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"interval\": {\n \"description\": \"Time interval between ejection sweep analysis.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"maxEjectionPercent\": {\n \"description\": \"Maximum % of hosts in the load balancing pool for the upstream service that can be ejected.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minHealthPercent\": {\n \"description\": \"Outlier detection will be enabled as long as the associated load balancing pool has at least min_health_percent hosts in healthy mode.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"splitExternalLocalOriginErrors\": {\n \"description\": \"Determines whether to distinguish local origin failures from external errors.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"portLevelSettings\": {\n \"description\": \"Traffic policies specific to individual ports.\",\n \"items\": {\n \"properties\": {\n \"connectionPool\": {\n \"properties\": {\n \"http\": {\n \"description\": \"HTTP connection pool settings.\",\n \"properties\": {\n \"h2UpgradePolicy\": {\n \"description\": \"Specify if http1.1 connection should be upgraded to http2 for the associated destination.\\n\\nValid Options: DEFAULT, DO_NOT_UPGRADE, UPGRADE\",\n \"enum\": [\n \"DEFAULT\",\n \"DO_NOT_UPGRADE\",\n \"UPGRADE\"\n ],\n \"type\": \"string\"\n },\n \"http1MaxPendingRequests\": {\n \"description\": \"Maximum number of requests that will be queued while waiting for a ready connection pool connection.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"http2MaxRequests\": {\n \"description\": \"Maximum number of active requests to a destination.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"idleTimeout\": {\n \"description\": \"The idle timeout for upstream connection pool connections.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"maxConcurrentStreams\": {\n \"description\": \"The maximum number of concurrent streams allowed for a peer on one HTTP/2 connection.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"maxRequestsPerConnection\": {\n \"description\": \"Maximum number of requests per connection to a backend.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"maxRetries\": {\n \"description\": \"Maximum number of retries that can be outstanding to all hosts in a cluster at a given time.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"useClientProtocol\": {\n \"description\": \"If set to true, client protocol will be preserved while initiating connection to backend.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"tcp\": {\n \"description\": \"Settings common to both HTTP and TCP upstream connections.\",\n \"properties\": {\n \"connectTimeout\": {\n \"description\": \"TCP connection timeout.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"idleTimeout\": {\n \"description\": \"The idle timeout for TCP connections.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"maxConnectionDuration\": {\n \"description\": \"The maximum duration of a connection.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"maxConnections\": {\n \"description\": \"Maximum number of HTTP1 /TCP connections to a destination host.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpKeepalive\": {\n \"description\": \"If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.\",\n \"properties\": {\n \"interval\": {\n \"description\": \"The time duration between keep-alive probes.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"probes\": {\n \"description\": \"Maximum number of keepalive probes to send without response before deciding the connection is dead.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"time\": {\n \"description\": \"The time duration a connection needs to be idle before keep-alive probes start being sent.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"loadBalancer\": {\n \"description\": \"Settings controlling the load balancer algorithms.\",\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"simple\"\n ]\n },\n {\n \"required\": [\n \"consistentHash\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"simple\"\n ]\n },\n {\n \"required\": [\n \"consistentHash\"\n ]\n }\n ],\n \"properties\": {\n \"consistentHash\": {\n \"allOf\": [\n {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"httpHeaderName\"\n ]\n },\n {\n \"required\": [\n \"httpCookie\"\n ]\n },\n {\n \"required\": [\n \"useSourceIp\"\n ]\n },\n {\n \"required\": [\n \"httpQueryParameterName\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"httpHeaderName\"\n ]\n },\n {\n \"required\": [\n \"httpCookie\"\n ]\n },\n {\n \"required\": [\n \"useSourceIp\"\n ]\n },\n {\n \"required\": [\n \"httpQueryParameterName\"\n ]\n }\n ]\n },\n {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"ringHash\"\n ]\n },\n {\n \"required\": [\n \"maglev\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"ringHash\"\n ]\n },\n {\n \"required\": [\n \"maglev\"\n ]\n }\n ]\n }\n ],\n \"properties\": {\n \"httpCookie\": {\n \"description\": \"Hash based on HTTP cookie.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the cookie.\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path to set for the cookie.\",\n \"type\": \"string\"\n },\n \"ttl\": {\n \"description\": \"Lifetime of the cookie.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"httpHeaderName\": {\n \"description\": \"Hash based on a specific HTTP header.\",\n \"type\": \"string\"\n },\n \"httpQueryParameterName\": {\n \"description\": \"Hash based on a specific HTTP query parameter.\",\n \"type\": \"string\"\n },\n \"maglev\": {\n \"description\": \"The Maglev load balancer implements consistent hashing to backend hosts.\",\n \"properties\": {\n \"tableSize\": {\n \"description\": \"The table size for Maglev hashing.\",\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"minimumRingSize\": {\n \"description\": \"Deprecated.\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"ringHash\": {\n \"description\": \"The ring/modulo hash load balancer implements consistent hashing to backend hosts.\",\n \"properties\": {\n \"minimumRingSize\": {\n \"description\": \"The minimum number of virtual nodes to use for the hash ring.\",\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"useSourceIp\": {\n \"description\": \"Hash based on the source IP address.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"localityLbSetting\": {\n \"properties\": {\n \"distribute\": {\n \"description\": \"Optional: only one of distribute, failover or failoverPriority can be set.\",\n \"items\": {\n \"properties\": {\n \"from\": {\n \"description\": \"Originating locality, '/' separated, e.g.\",\n \"type\": \"string\"\n },\n \"to\": {\n \"additionalProperties\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"description\": \"Map of upstream localities to traffic distribution weights.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"enabled\": {\n \"description\": \"enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"failover\": {\n \"description\": \"Optional: only one of distribute, failover or failoverPriority can be set.\",\n \"items\": {\n \"properties\": {\n \"from\": {\n \"description\": \"Originating region.\",\n \"type\": \"string\"\n },\n \"to\": {\n \"description\": \"Destination region the traffic will fail over to when endpoints in the 'from' region becomes unhealthy.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"failoverPriority\": {\n \"description\": \"failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"simple\": {\n \"description\": \"\\n\\nValid Options: LEAST_CONN, RANDOM, PASSTHROUGH, ROUND_ROBIN, LEAST_REQUEST\",\n \"enum\": [\n \"UNSPECIFIED\",\n \"LEAST_CONN\",\n \"RANDOM\",\n \"PASSTHROUGH\",\n \"ROUND_ROBIN\",\n \"LEAST_REQUEST\"\n ],\n \"type\": \"string\"\n },\n \"warmupDurationSecs\": {\n \"description\": \"Represents the warmup duration of Service.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n }\n },\n \"type\": \"object\"\n },\n \"outlierDetection\": {\n \"properties\": {\n \"baseEjectionTime\": {\n \"description\": \"Minimum ejection duration.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"consecutive5xxErrors\": {\n \"description\": \"Number of 5xx errors before a host is ejected from the connection pool.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"consecutiveErrors\": {\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"consecutiveGatewayErrors\": {\n \"description\": \"Number of gateway errors before a host is ejected from the connection pool.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"consecutiveLocalOriginFailures\": {\n \"description\": \"The number of consecutive locally originated failures before ejection occurs.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"interval\": {\n \"description\": \"Time interval between ejection sweep analysis.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"maxEjectionPercent\": {\n \"description\": \"Maximum % of hosts in the load balancing pool for the upstream service that can be ejected.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"minHealthPercent\": {\n \"description\": \"Outlier detection will be enabled as long as the associated load balancing pool has at least min_health_percent hosts in healthy mode.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"splitExternalLocalOriginErrors\": {\n \"description\": \"Determines whether to distinguish local origin failures from external errors.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"port\": {\n \"description\": \"Specifies the number of a port on the destination service on which this policy is being applied.\",\n \"properties\": {\n \"number\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"tls\": {\n \"description\": \"TLS related settings for connections to the upstream service.\",\n \"properties\": {\n \"caCertificates\": {\n \"description\": \"OPTIONAL: The path to the file containing certificate authority certificates to use in verifying a presented server certificate.\",\n \"type\": \"string\"\n },\n \"caCrl\": {\n \"description\": \"OPTIONAL: The path to the file containing the certificate revocation list (CRL) to use in verifying a presented server certificate.\",\n \"type\": \"string\"\n },\n \"clientCertificate\": {\n \"description\": \"REQUIRED if mode is `MUTUAL`.\",\n \"type\": \"string\"\n },\n \"credentialName\": {\n \"description\": \"The name of the secret that holds the TLS certs for the client including the CA certificates.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"`insecureSkipVerify` specifies whether the proxy should skip verifying the CA signature and SAN for the server certificate corresponding to the host.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"mode\": {\n \"description\": \"Indicates whether connections to this port should be secured using TLS.\\n\\nValid Options: DISABLE, SIMPLE, MUTUAL, ISTIO_MUTUAL\",\n \"enum\": [\n \"DISABLE\",\n \"SIMPLE\",\n \"MUTUAL\",\n \"ISTIO_MUTUAL\"\n ],\n \"type\": \"string\"\n },\n \"privateKey\": {\n \"description\": \"REQUIRED if mode is `MUTUAL`.\",\n \"type\": \"string\"\n },\n \"sni\": {\n \"description\": \"SNI string to present to the server during TLS handshake.\",\n \"type\": \"string\"\n },\n \"subjectAltNames\": {\n \"description\": \"A list of alternate names to verify the subject identity in the certificate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"maxItems\": 4096,\n \"type\": \"array\"\n },\n \"proxyProtocol\": {\n \"description\": \"The upstream PROXY protocol settings.\",\n \"properties\": {\n \"version\": {\n \"description\": \"The PROXY protocol version to use.\\n\\nValid Options: V1, V2\",\n \"enum\": [\n \"V1\",\n \"V2\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tls\": {\n \"description\": \"TLS related settings for connections to the upstream service.\",\n \"properties\": {\n \"caCertificates\": {\n \"description\": \"OPTIONAL: The path to the file containing certificate authority certificates to use in verifying a presented server certificate.\",\n \"type\": \"string\"\n },\n \"caCrl\": {\n \"description\": \"OPTIONAL: The path to the file containing the certificate revocation list (CRL) to use in verifying a presented server certificate.\",\n \"type\": \"string\"\n },\n \"clientCertificate\": {\n \"description\": \"REQUIRED if mode is `MUTUAL`.\",\n \"type\": \"string\"\n },\n \"credentialName\": {\n \"description\": \"The name of the secret that holds the TLS certs for the client including the CA certificates.\",\n \"type\": \"string\"\n },\n \"insecureSkipVerify\": {\n \"description\": \"`insecureSkipVerify` specifies whether the proxy should skip verifying the CA signature and SAN for the server certificate corresponding to the host.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"mode\": {\n \"description\": \"Indicates whether connections to this port should be secured using TLS.\\n\\nValid Options: DISABLE, SIMPLE, MUTUAL, ISTIO_MUTUAL\",\n \"enum\": [\n \"DISABLE\",\n \"SIMPLE\",\n \"MUTUAL\",\n \"ISTIO_MUTUAL\"\n ],\n \"type\": \"string\"\n },\n \"privateKey\": {\n \"description\": \"REQUIRED if mode is `MUTUAL`.\",\n \"type\": \"string\"\n },\n \"sni\": {\n \"description\": \"SNI string to present to the server during TLS handshake.\",\n \"type\": \"string\"\n },\n \"subjectAltNames\": {\n \"description\": \"A list of alternate names to verify the subject identity in the certificate.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"tunnel\": {\n \"description\": \"Configuration of tunneling TCP over other transport or application layers for the host configured in the DestinationRule.\",\n \"properties\": {\n \"protocol\": {\n \"description\": \"Specifies which protocol to use for tunneling the downstream connection.\",\n \"type\": \"string\"\n },\n \"targetHost\": {\n \"description\": \"Specifies a host to which the downstream connection is tunneled.\",\n \"type\": \"string\"\n },\n \"targetPort\": {\n \"description\": \"Specifies a port to which the downstream connection is tunneled.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"targetHost\",\n \"targetPort\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"workloadSelector\": {\n \"description\": \"Criteria used to select the specific set of pods/VMs on which this `DestinationRule` configuration should be applied.\",\n \"properties\": {\n \"matchLabels\": {\n \"additionalProperties\": {\n \"maxLength\": 63,\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"wildcard not allowed in label value match\",\n \"rule\": \"!self.contains('*')\"\n }\n ]\n },\n \"description\": \"One or more labels that indicate a specific set of pods/VMs on which a policy should be applied.\",\n \"maxProperties\": 4096,\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"wildcard not allowed in label key match\",\n \"rule\": \"self.all(key, !key.contains('*'))\"\n },\n {\n \"message\": \"key must not be empty\",\n \"rule\": \"self.all(key, key.size() != 0)\"\n }\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"host\"\n ],\n \"type\": \"object\"\n },\n \"status\": {\n \"type\": \"object\",\n \"x-kubernetes-preserve-unknown-fields\": true\n }\n },\n \"title\": \"Destination Rule\",\n \"type\": \"object\"\n}"} \ No newline at end of file diff --git a/templates/meshmodel/components/1.23.0/envoyfilter.Istio.meshery.layer5.io_meshmodel.json b/templates/meshmodel/components/1.23.0/envoyfilter.Istio.meshery.layer5.io_meshmodel.json new file mode 100644 index 00000000..5b70d5fd --- /dev/null +++ b/templates/meshmodel/components/1.23.0/envoyfilter.Istio.meshery.layer5.io_meshmodel.json @@ -0,0 +1 @@ +{"id":"00000000-0000-0000-0000-000000000000","kind":"EnvoyFilter","apiVersion":"networking.istio.io/v1alpha3","displayName":"Envoy Filter","format":"JSON","hostID":"00000000-0000-0000-0000-000000000000","metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"20\" width=\"20\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg height=\"20\" width=\"20\" viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"model":{"id":"00000000-0000-0000-0000-000000000000","name":"istio","version":"1.23.0","displayName":"ISTIO","hostID":"00000000-0000-0000-0000-000000000000","category":{"name":"Cloud Native Network","metadata":null},"metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"20\" width=\"20\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg height=\"20\" width=\"20\" viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"components":null,"relationships":null},"schema":"{\n \"properties\": {\n \"spec\": {\n \"description\": \"Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html\",\n \"properties\": {\n \"configPatches\": {\n \"description\": \"One or more patches with match conditions.\",\n \"items\": {\n \"properties\": {\n \"applyTo\": {\n \"description\": \"Specifies where in the Envoy configuration, the patch should be applied.\\n\\nValid Options: LISTENER, FILTER_CHAIN, NETWORK_FILTER, HTTP_FILTER, ROUTE_CONFIGURATION, VIRTUAL_HOST, HTTP_ROUTE, CLUSTER, EXTENSION_CONFIG, BOOTSTRAP, LISTENER_FILTER\",\n \"enum\": [\n \"INVALID\",\n \"LISTENER\",\n \"FILTER_CHAIN\",\n \"NETWORK_FILTER\",\n \"HTTP_FILTER\",\n \"ROUTE_CONFIGURATION\",\n \"VIRTUAL_HOST\",\n \"HTTP_ROUTE\",\n \"CLUSTER\",\n \"EXTENSION_CONFIG\",\n \"BOOTSTRAP\",\n \"LISTENER_FILTER\"\n ],\n \"type\": \"string\"\n },\n \"match\": {\n \"description\": \"Match on listener/route configuration/cluster.\",\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"listener\"\n ]\n },\n {\n \"required\": [\n \"routeConfiguration\"\n ]\n },\n {\n \"required\": [\n \"cluster\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"listener\"\n ]\n },\n {\n \"required\": [\n \"routeConfiguration\"\n ]\n },\n {\n \"required\": [\n \"cluster\"\n ]\n }\n ],\n \"properties\": {\n \"cluster\": {\n \"description\": \"Match on envoy cluster attributes.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The exact name of the cluster to match.\",\n \"type\": \"string\"\n },\n \"portNumber\": {\n \"description\": \"The service port for which this cluster was generated.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"service\": {\n \"description\": \"The fully qualified service name for this cluster.\",\n \"type\": \"string\"\n },\n \"subset\": {\n \"description\": \"The subset associated with the service.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"context\": {\n \"description\": \"The specific config generation context to match on.\\n\\nValid Options: ANY, SIDECAR_INBOUND, SIDECAR_OUTBOUND, GATEWAY\",\n \"enum\": [\n \"ANY\",\n \"SIDECAR_INBOUND\",\n \"SIDECAR_OUTBOUND\",\n \"GATEWAY\"\n ],\n \"type\": \"string\"\n },\n \"listener\": {\n \"description\": \"Match on envoy listener attributes.\",\n \"properties\": {\n \"filterChain\": {\n \"description\": \"Match a specific filter chain in a listener.\",\n \"properties\": {\n \"applicationProtocols\": {\n \"description\": \"Applies only to sidecars.\",\n \"type\": \"string\"\n },\n \"destinationPort\": {\n \"description\": \"The destination_port value used by a filter chain's match condition.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"filter\": {\n \"description\": \"The name of a specific filter to apply the patch to.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The filter name to match on.\",\n \"type\": \"string\"\n },\n \"subFilter\": {\n \"description\": \"The next level filter within this filter to match upon.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The filter name to match on.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"The name assigned to the filter chain.\",\n \"type\": \"string\"\n },\n \"sni\": {\n \"description\": \"The SNI value used by a filter chain's match condition.\",\n \"type\": \"string\"\n },\n \"transportProtocol\": {\n \"description\": \"Applies only to `SIDECAR_INBOUND` context.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"listenerFilter\": {\n \"description\": \"Match a specific listener filter.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Match a specific listener by its name.\",\n \"type\": \"string\"\n },\n \"portName\": {\n \"type\": \"string\"\n },\n \"portNumber\": {\n \"description\": \"The service port/gateway port to which traffic is being sent/received.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"proxy\": {\n \"description\": \"Match on properties associated with a proxy.\",\n \"properties\": {\n \"metadata\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Match on the node metadata supplied by a proxy when connecting to Istio Pilot.\",\n \"type\": \"object\"\n },\n \"proxyVersion\": {\n \"description\": \"A regular expression in golang regex format (RE2) that can be used to select proxies using a specific version of istio proxy.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"routeConfiguration\": {\n \"description\": \"Match on envoy HTTP route configuration attributes.\",\n \"properties\": {\n \"gateway\": {\n \"description\": \"The Istio gateway config's namespace/name for which this route configuration was generated.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Route configuration name to match on.\",\n \"type\": \"string\"\n },\n \"portName\": {\n \"description\": \"Applicable only for GATEWAY context.\",\n \"type\": \"string\"\n },\n \"portNumber\": {\n \"description\": \"The service port number or gateway server port number for which this route configuration was generated.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"vhost\": {\n \"description\": \"Match a specific virtual host in a route configuration and apply the patch to the virtual host.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The VirtualHosts objects generated by Istio are named as host:port, where the host typically corresponds to the VirtualService's host field or the hostname of a service in the registry.\",\n \"type\": \"string\"\n },\n \"route\": {\n \"description\": \"Match a specific route within the virtual host.\",\n \"properties\": {\n \"action\": {\n \"description\": \"Match a route with specific action type.\\n\\nValid Options: ANY, ROUTE, REDIRECT, DIRECT_RESPONSE\",\n \"enum\": [\n \"ANY\",\n \"ROUTE\",\n \"REDIRECT\",\n \"DIRECT_RESPONSE\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The Route objects generated by default are named as default.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"patch\": {\n \"description\": \"The patch to apply along with the operation.\",\n \"properties\": {\n \"filterClass\": {\n \"description\": \"Determines the filter insertion order.\\n\\nValid Options: AUTHN, AUTHZ, STATS\",\n \"enum\": [\n \"UNSPECIFIED\",\n \"AUTHN\",\n \"AUTHZ\",\n \"STATS\"\n ],\n \"type\": \"string\"\n },\n \"operation\": {\n \"description\": \"Determines how the patch should be applied.\\n\\nValid Options: MERGE, ADD, REMOVE, INSERT_BEFORE, INSERT_AFTER, INSERT_FIRST, REPLACE\",\n \"enum\": [\n \"INVALID\",\n \"MERGE\",\n \"ADD\",\n \"REMOVE\",\n \"INSERT_BEFORE\",\n \"INSERT_AFTER\",\n \"INSERT_FIRST\",\n \"REPLACE\"\n ],\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The JSON config of the object being patched.\",\n \"type\": \"object\",\n \"x-kubernetes-preserve-unknown-fields\": true\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"priority\": {\n \"description\": \"Priority defines the order in which patch sets are applied within a context.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"targetRefs\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"properties\": {\n \"group\": {\n \"description\": \"group is the group of the target resource.\",\n \"maxLength\": 253,\n \"pattern\": \"^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"kind is kind of the target resource.\",\n \"maxLength\": 63,\n \"minLength\": 1,\n \"pattern\": \"^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name is the name of the target resource.\",\n \"maxLength\": 253,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"namespace is the namespace of the referent.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"cross namespace referencing is not currently supported\",\n \"rule\": \"self.size() == 0\"\n }\n ]\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"Support kinds are core/Service and gateway.networking.k8s.io/Gateway\",\n \"rule\": \"[self.group, self.kind] in [['core','Service'], ['','Service'], ['gateway.networking.k8s.io','Gateway']]\"\n }\n ]\n },\n \"type\": \"array\"\n },\n \"workloadSelector\": {\n \"description\": \"Criteria used to select the specific set of pods/VMs on which this patch configuration should be applied.\",\n \"properties\": {\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"One or more labels that indicate a specific set of pods/VMs on which the configuration should be applied.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"status\": {\n \"type\": \"object\",\n \"x-kubernetes-preserve-unknown-fields\": true\n }\n },\n \"title\": \"Envoy Filter\",\n \"type\": \"object\"\n}"} \ No newline at end of file diff --git a/templates/meshmodel/components/1.23.0/gateway.Istio.meshery.layer5.io_meshmodel.json b/templates/meshmodel/components/1.23.0/gateway.Istio.meshery.layer5.io_meshmodel.json new file mode 100644 index 00000000..d44ef7b4 --- /dev/null +++ b/templates/meshmodel/components/1.23.0/gateway.Istio.meshery.layer5.io_meshmodel.json @@ -0,0 +1 @@ +{"id":"00000000-0000-0000-0000-000000000000","kind":"Gateway","apiVersion":"networking.istio.io/v1","displayName":"Gateway","format":"JSON","hostID":"00000000-0000-0000-0000-000000000000","metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"20\" width=\"20\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg height=\"20\" width=\"20\" viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"model":{"id":"00000000-0000-0000-0000-000000000000","name":"istio","version":"1.23.0","displayName":"ISTIO","hostID":"00000000-0000-0000-0000-000000000000","category":{"name":"Cloud Native Network","metadata":null},"metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"20\" width=\"20\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg height=\"20\" width=\"20\" viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"components":null,"relationships":null},"schema":"{\n \"properties\": {\n \"spec\": {\n \"description\": \"Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html\",\n \"properties\": {\n \"selector\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"One or more labels that indicate a specific set of pods/VMs on which this gateway configuration should be applied.\",\n \"type\": \"object\"\n },\n \"servers\": {\n \"description\": \"A list of server specifications.\",\n \"items\": {\n \"properties\": {\n \"bind\": {\n \"description\": \"The ip or the Unix domain socket to which the listener should be bound to.\",\n \"type\": \"string\"\n },\n \"defaultEndpoint\": {\n \"type\": \"string\"\n },\n \"hosts\": {\n \"description\": \"One or more hosts exposed by this gateway.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"An optional name of the server, when set must be unique across all servers.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"The Port on which the proxy should listen for incoming connections.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Label assigned to the port.\",\n \"type\": \"string\"\n },\n \"number\": {\n \"description\": \"A valid non-negative integer port number.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"protocol\": {\n \"description\": \"The protocol exposed on the port.\",\n \"type\": \"string\"\n },\n \"targetPort\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"number\",\n \"protocol\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"tls\": {\n \"description\": \"Set of TLS related options that govern the server's behavior.\",\n \"properties\": {\n \"caCertificates\": {\n \"description\": \"REQUIRED if mode is `MUTUAL` or `OPTIONAL_MUTUAL`.\",\n \"type\": \"string\"\n },\n \"caCrl\": {\n \"description\": \"OPTIONAL: The path to the file containing the certificate revocation list (CRL) to use in verifying a presented client side certificate.\",\n \"type\": \"string\"\n },\n \"cipherSuites\": {\n \"description\": \"Optional: If specified, only support the specified cipher list.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"credentialName\": {\n \"description\": \"For gateways running on Kubernetes, the name of the secret that holds the TLS certs including the CA certificates.\",\n \"type\": \"string\"\n },\n \"httpsRedirect\": {\n \"description\": \"If set to true, the load balancer will send a 301 redirect for all http connections, asking the clients to use HTTPS.\",\n \"type\": \"boolean\"\n },\n \"maxProtocolVersion\": {\n \"description\": \"Optional: Maximum TLS protocol version.\\n\\nValid Options: TLS_AUTO, TLSV1_0, TLSV1_1, TLSV1_2, TLSV1_3\",\n \"enum\": [\n \"TLS_AUTO\",\n \"TLSV1_0\",\n \"TLSV1_1\",\n \"TLSV1_2\",\n \"TLSV1_3\"\n ],\n \"type\": \"string\"\n },\n \"minProtocolVersion\": {\n \"description\": \"Optional: Minimum TLS protocol version.\\n\\nValid Options: TLS_AUTO, TLSV1_0, TLSV1_1, TLSV1_2, TLSV1_3\",\n \"enum\": [\n \"TLS_AUTO\",\n \"TLSV1_0\",\n \"TLSV1_1\",\n \"TLSV1_2\",\n \"TLSV1_3\"\n ],\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"Optional: Indicates whether connections to this port should be secured using TLS.\\n\\nValid Options: PASSTHROUGH, SIMPLE, MUTUAL, AUTO_PASSTHROUGH, ISTIO_MUTUAL, OPTIONAL_MUTUAL\",\n \"enum\": [\n \"PASSTHROUGH\",\n \"SIMPLE\",\n \"MUTUAL\",\n \"AUTO_PASSTHROUGH\",\n \"ISTIO_MUTUAL\",\n \"OPTIONAL_MUTUAL\"\n ],\n \"type\": \"string\"\n },\n \"privateKey\": {\n \"description\": \"REQUIRED if mode is `SIMPLE` or `MUTUAL`.\",\n \"type\": \"string\"\n },\n \"serverCertificate\": {\n \"description\": \"REQUIRED if mode is `SIMPLE` or `MUTUAL`.\",\n \"type\": \"string\"\n },\n \"subjectAltNames\": {\n \"description\": \"A list of alternate names to verify the subject identity in the certificate presented by the client.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"verifyCertificateHash\": {\n \"description\": \"An optional list of hex-encoded SHA-256 hashes of the authorized client certificates.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"verifyCertificateSpki\": {\n \"description\": \"An optional list of base64-encoded SHA-256 hashes of the SPKIs of authorized client certificates.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"port\",\n \"hosts\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"status\": {\n \"type\": \"object\",\n \"x-kubernetes-preserve-unknown-fields\": true\n }\n },\n \"title\": \"Gateway\",\n \"type\": \"object\"\n}"} \ No newline at end of file diff --git a/templates/meshmodel/components/1.23.0/grafanaistioaddon_meshmodel.json b/templates/meshmodel/components/1.23.0/grafanaistioaddon_meshmodel.json new file mode 100644 index 00000000..020c7c34 --- /dev/null +++ b/templates/meshmodel/components/1.23.0/grafanaistioaddon_meshmodel.json @@ -0,0 +1 @@ +{"id":"00000000-0000-0000-0000-000000000000","kind":"GrafanaIstioAddon","apiVersion":"core.meshmodel.dev/v1alpha1","displayName":"Grafana Istio Addon","format":"JSON","hostID":"00000000-0000-0000-0000-000000000000","metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" height=\"20px\" width=\"20px\" version=\"1.1\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" height=\"20px\" width=\"20px\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"model":{"id":"00000000-0000-0000-0000-000000000000","name":"istio","version":"1.23.0","displayName":"","hostID":"00000000-0000-0000-0000-000000000000","category":{"name":"Cloud Native Network","metadata":null},"metadata":null,"components":null,"relationships":null},"schema":"{\n\t\"$id\": \"http://meshery.layer5.io/definition/Workload/PrometheusIstioAddon\",\n\t\"$schema\": \"http://json-schema.org/draft-07/schema\",\n\t\"properties\": {},\n\t\"title\": \"GrafanaIstioAddon\",\n\t\"type\": \"object\"\n}"} \ No newline at end of file diff --git a/templates/meshmodel/components/1.23.0/istioMesh_meshmodel.json b/templates/meshmodel/components/1.23.0/istioMesh_meshmodel.json new file mode 100644 index 00000000..80b5628c --- /dev/null +++ b/templates/meshmodel/components/1.23.0/istioMesh_meshmodel.json @@ -0,0 +1 @@ +{"id":"00000000-0000-0000-0000-000000000000","kind":"IstioMesh","apiVersion":"core.meshmodel.dev/v1alpha1","displayName":"Istio Mesh","format":"JSON","hostID":"00000000-0000-0000-0000-000000000000","metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" height=\"20px\" width=\"20px\" version=\"1.1\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" height=\"20px\" width=\"20px\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"model":{"id":"00000000-0000-0000-0000-000000000000","name":"istio","version":"1.23.0","displayName":"","hostID":"00000000-0000-0000-0000-000000000000","category":{"name":"Cloud Native Network","metadata":null},"metadata":null,"components":null,"relationships":null},"schema":"{\"properties\":{\"profile\":{\"description\":\"name of the profile\",\"enum\":[\"default\",\"minimal\",\"demo\"],\"type\":\"string\"}},\"required\":[\"profile\"],\"title\":\"IstioMesh\",\"type\":\"object\"}"} \ No newline at end of file diff --git a/templates/meshmodel/components/1.23.0/jaegeristioaddon_meshmodel.json b/templates/meshmodel/components/1.23.0/jaegeristioaddon_meshmodel.json new file mode 100644 index 00000000..db436467 --- /dev/null +++ b/templates/meshmodel/components/1.23.0/jaegeristioaddon_meshmodel.json @@ -0,0 +1 @@ +{"id":"00000000-0000-0000-0000-000000000000","kind":"JaegerIstioAddon","apiVersion":"core.meshmodel.dev/v1alpha1","displayName":"Jaeger Istio Addon","format":"JSON","hostID":"00000000-0000-0000-0000-000000000000","metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" height=\"20px\" width=\"20px\" version=\"1.1\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" height=\"20px\" width=\"20px\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"model":{"id":"00000000-0000-0000-0000-000000000000","name":"istio","version":"1.23.0","displayName":"","hostID":"00000000-0000-0000-0000-000000000000","category":{"name":"Cloud Native Network","metadata":null},"metadata":null,"components":null,"relationships":null},"schema":"\"properties\":{},\"title\":\"JaegerIstioAddon\",\"type\":\"object\"}"} \ No newline at end of file diff --git a/templates/meshmodel/components/1.23.0/peerauthentication.Istio.meshery.layer5.io_meshmodel.json b/templates/meshmodel/components/1.23.0/peerauthentication.Istio.meshery.layer5.io_meshmodel.json new file mode 100644 index 00000000..5142c488 --- /dev/null +++ b/templates/meshmodel/components/1.23.0/peerauthentication.Istio.meshery.layer5.io_meshmodel.json @@ -0,0 +1 @@ +{"id":"00000000-0000-0000-0000-000000000000","kind":"PeerAuthentication","apiVersion":"security.istio.io/v1","displayName":"Peer Authentication","format":"JSON","hostID":"00000000-0000-0000-0000-000000000000","metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"20\" width=\"20\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg height=\"20\" width=\"20\" viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"model":{"id":"00000000-0000-0000-0000-000000000000","name":"istio","version":"1.23.0","displayName":"ISTIO","hostID":"00000000-0000-0000-0000-000000000000","category":{"name":"Cloud Native Network","metadata":null},"metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"20\" width=\"20\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg height=\"20\" width=\"20\" viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"components":null,"relationships":null},"schema":"{\n \"properties\": {\n \"spec\": {\n \"description\": \"Peer authentication configuration for workloads. See more details at: https://istio.io/docs/reference/config/security/peer_authentication.html\",\n \"properties\": {\n \"mtls\": {\n \"description\": \"Mutual TLS settings for workload.\",\n \"properties\": {\n \"mode\": {\n \"description\": \"Defines the mTLS mode used for peer authentication.\\n\\nValid Options: DISABLE, PERMISSIVE, STRICT\",\n \"enum\": [\n \"UNSET\",\n \"DISABLE\",\n \"PERMISSIVE\",\n \"STRICT\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"portLevelMtls\": {\n \"additionalProperties\": {\n \"properties\": {\n \"mode\": {\n \"description\": \"Defines the mTLS mode used for peer authentication.\\n\\nValid Options: DISABLE, PERMISSIVE, STRICT\",\n \"enum\": [\n \"UNSET\",\n \"DISABLE\",\n \"PERMISSIVE\",\n \"STRICT\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"description\": \"Port specific mutual TLS settings.\",\n \"minProperties\": 1,\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"port must be between 1-65535\",\n \"rule\": \"self.all(key, 0 \\u003c int(key) \\u0026\\u0026 int(key) \\u003c= 65535)\"\n }\n ]\n },\n \"selector\": {\n \"description\": \"The selector determines the workloads to apply the PeerAuthentication on.\",\n \"properties\": {\n \"matchLabels\": {\n \"additionalProperties\": {\n \"maxLength\": 63,\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"wildcard not allowed in label value match\",\n \"rule\": \"!self.contains('*')\"\n }\n ]\n },\n \"description\": \"One or more labels that indicate a specific set of pods/VMs on which a policy should be applied.\",\n \"maxProperties\": 4096,\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"wildcard not allowed in label key match\",\n \"rule\": \"self.all(key, !key.contains('*'))\"\n },\n {\n \"message\": \"key must not be empty\",\n \"rule\": \"self.all(key, key.size() != 0)\"\n }\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"portLevelMtls requires selector\",\n \"rule\": \"(has(self.selector) \\u0026\\u0026 has(self.selector.matchLabels) \\u0026\\u0026 self.selector.matchLabels.size() \\u003e 0) || !has(self.portLevelMtls)\"\n }\n ]\n },\n \"status\": {\n \"type\": \"object\",\n \"x-kubernetes-preserve-unknown-fields\": true\n }\n },\n \"title\": \"Peer Authentication\",\n \"type\": \"object\"\n}"} \ No newline at end of file diff --git a/templates/meshmodel/components/1.23.0/prometheusistioaddon_meshmodel.json b/templates/meshmodel/components/1.23.0/prometheusistioaddon_meshmodel.json new file mode 100644 index 00000000..08ef6711 --- /dev/null +++ b/templates/meshmodel/components/1.23.0/prometheusistioaddon_meshmodel.json @@ -0,0 +1 @@ +{"id":"00000000-0000-0000-0000-000000000000","kind":"PrometheusIstioAddon","apiVersion":"core.meshmodel.dev/v1alpha1","displayName":"Prometheus Istio Addon","format":"JSON","hostID":"00000000-0000-0000-0000-000000000000","metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" height=\"20px\" width=\"20px\" version=\"1.1\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" height=\"20px\" width=\"20px\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"model":{"id":"00000000-0000-0000-0000-000000000000","name":"istio","version":"1.23.0","displayName":"","hostID":"00000000-0000-0000-0000-000000000000","category":{"name":"Cloud Native Network","metadata":null},"metadata":null,"components":null,"relationships":null},"schema":"{\"properties\":{},\"title\":\"PrometheusIstioAddon\",\"type\":\"object\"}"} \ No newline at end of file diff --git a/templates/meshmodel/components/1.23.0/proxyconfig.Istio.meshery.layer5.io_meshmodel.json b/templates/meshmodel/components/1.23.0/proxyconfig.Istio.meshery.layer5.io_meshmodel.json new file mode 100644 index 00000000..f488a9a6 --- /dev/null +++ b/templates/meshmodel/components/1.23.0/proxyconfig.Istio.meshery.layer5.io_meshmodel.json @@ -0,0 +1 @@ +{"id":"00000000-0000-0000-0000-000000000000","kind":"ProxyConfig","apiVersion":"networking.istio.io/v1beta1","displayName":"Proxy Config","format":"JSON","hostID":"00000000-0000-0000-0000-000000000000","metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"20\" width=\"20\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg height=\"20\" width=\"20\" viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"model":{"id":"00000000-0000-0000-0000-000000000000","name":"istio","version":"1.23.0","displayName":"ISTIO","hostID":"00000000-0000-0000-0000-000000000000","category":{"name":"Cloud Native Network","metadata":null},"metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"20\" width=\"20\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg height=\"20\" width=\"20\" viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"components":null,"relationships":null},"schema":"{\n \"properties\": {\n \"spec\": {\n \"description\": \"Provides configuration for individual workloads. See more details at: https://istio.io/docs/reference/config/networking/proxy-config.html\",\n \"properties\": {\n \"concurrency\": {\n \"description\": \"The number of worker threads to run.\",\n \"format\": \"int32\",\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"environmentVariables\": {\n \"additionalProperties\": {\n \"maxLength\": 2048,\n \"type\": \"string\"\n },\n \"description\": \"Additional environment variables for the proxy.\",\n \"type\": \"object\"\n },\n \"image\": {\n \"description\": \"Specifies the details of the proxy image.\",\n \"properties\": {\n \"imageType\": {\n \"description\": \"The image type of the image.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"selector\": {\n \"description\": \"Optional.\",\n \"properties\": {\n \"matchLabels\": {\n \"additionalProperties\": {\n \"maxLength\": 63,\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"wildcard not allowed in label value match\",\n \"rule\": \"!self.contains('*')\"\n }\n ]\n },\n \"description\": \"One or more labels that indicate a specific set of pods/VMs on which a policy should be applied.\",\n \"maxProperties\": 4096,\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"wildcard not allowed in label key match\",\n \"rule\": \"self.all(key, !key.contains('*'))\"\n },\n {\n \"message\": \"key must not be empty\",\n \"rule\": \"self.all(key, key.size() != 0)\"\n }\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"status\": {\n \"type\": \"object\",\n \"x-kubernetes-preserve-unknown-fields\": true\n }\n },\n \"title\": \"Proxy Config\",\n \"type\": \"object\"\n}"} \ No newline at end of file diff --git a/templates/meshmodel/components/1.23.0/requestauthentication.Istio.meshery.layer5.io_meshmodel.json b/templates/meshmodel/components/1.23.0/requestauthentication.Istio.meshery.layer5.io_meshmodel.json new file mode 100644 index 00000000..8a604a89 --- /dev/null +++ b/templates/meshmodel/components/1.23.0/requestauthentication.Istio.meshery.layer5.io_meshmodel.json @@ -0,0 +1 @@ +{"id":"00000000-0000-0000-0000-000000000000","kind":"RequestAuthentication","apiVersion":"security.istio.io/v1","displayName":"Request Authentication","format":"JSON","hostID":"00000000-0000-0000-0000-000000000000","metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"20\" width=\"20\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg height=\"20\" width=\"20\" viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"model":{"id":"00000000-0000-0000-0000-000000000000","name":"istio","version":"1.23.0","displayName":"ISTIO","hostID":"00000000-0000-0000-0000-000000000000","category":{"name":"Cloud Native Network","metadata":null},"metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"20\" width=\"20\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg height=\"20\" width=\"20\" viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"components":null,"relationships":null},"schema":"{\n \"properties\": {\n \"spec\": {\n \"description\": \"Request authentication configuration for workloads. See more details at: https://istio.io/docs/reference/config/security/request_authentication.html\",\n \"properties\": {\n \"jwtRules\": {\n \"description\": \"Define the list of JWTs that can be validated at the selected workloads' proxy.\",\n \"items\": {\n \"properties\": {\n \"audiences\": {\n \"description\": \"The list of JWT [audiences](https://tools.ietf.org/html/rfc7519#section-4.1.3) that are allowed to access.\",\n \"items\": {\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"forwardOriginalToken\": {\n \"description\": \"If set to true, the original token will be kept for the upstream request.\",\n \"type\": \"boolean\"\n },\n \"fromCookies\": {\n \"description\": \"List of cookie names from which JWT is expected.\",\n \"items\": {\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"fromHeaders\": {\n \"description\": \"List of header locations from which JWT is expected.\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"description\": \"The HTTP header name.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"prefix\": {\n \"description\": \"The prefix that should be stripped before decoding the token.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"fromParams\": {\n \"description\": \"List of query parameters from which JWT is expected.\",\n \"items\": {\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"issuer\": {\n \"description\": \"Identifies the issuer that issued the JWT.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"jwks\": {\n \"description\": \"JSON Web Key Set of public keys to validate signature of the JWT.\",\n \"type\": \"string\"\n },\n \"jwksUri\": {\n \"description\": \"URL of the provider's public key set to validate signature of the JWT.\",\n \"maxLength\": 2048,\n \"minLength\": 1,\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"url must have scheme http:// or https://\",\n \"rule\": \"url(self).getScheme() in ['http', 'https']\"\n }\n ]\n },\n \"jwks_uri\": {\n \"description\": \"URL of the provider's public key set to validate signature of the JWT.\",\n \"maxLength\": 2048,\n \"minLength\": 1,\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"url must have scheme http:// or https://\",\n \"rule\": \"url(self).getScheme() in ['http', 'https']\"\n }\n ]\n },\n \"outputClaimToHeaders\": {\n \"description\": \"This field specifies a list of operations to copy the claim to HTTP headers on a successfully verified token.\",\n \"items\": {\n \"properties\": {\n \"claim\": {\n \"description\": \"The name of the claim to be copied from.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"header\": {\n \"description\": \"The name of the header to be created.\",\n \"minLength\": 1,\n \"pattern\": \"^[-_A-Za-z0-9]+$\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"header\",\n \"claim\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"outputPayloadToHeader\": {\n \"description\": \"This field specifies the header name to output a successfully verified JWT payload to the backend.\",\n \"type\": \"string\"\n },\n \"timeout\": {\n \"description\": \"The maximum amount of time that the resolver, determined by the PILOT_JWT_ENABLE_REMOTE_JWKS environment variable, will spend waiting for the JWKS to be fetched.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n }\n },\n \"required\": [\n \"issuer\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"only one of jwks or jwksUri can be set\",\n \"rule\": \"(has(self.jwksUri)?1:0)+(has(self.jwks_uri)?1:0)+(has(self.jwks)?1:0)\\u003c=1\"\n }\n ]\n },\n \"maxItems\": 4096,\n \"type\": \"array\"\n },\n \"selector\": {\n \"description\": \"Optional.\",\n \"properties\": {\n \"matchLabels\": {\n \"additionalProperties\": {\n \"maxLength\": 63,\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"wildcard not allowed in label value match\",\n \"rule\": \"!self.contains('*')\"\n }\n ]\n },\n \"description\": \"One or more labels that indicate a specific set of pods/VMs on which a policy should be applied.\",\n \"maxProperties\": 4096,\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"wildcard not allowed in label key match\",\n \"rule\": \"self.all(key, !key.contains('*'))\"\n },\n {\n \"message\": \"key must not be empty\",\n \"rule\": \"self.all(key, key.size() != 0)\"\n }\n ]\n }\n },\n \"type\": \"object\"\n },\n \"targetRef\": {\n \"properties\": {\n \"group\": {\n \"description\": \"group is the group of the target resource.\",\n \"maxLength\": 253,\n \"pattern\": \"^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"kind is kind of the target resource.\",\n \"maxLength\": 63,\n \"minLength\": 1,\n \"pattern\": \"^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name is the name of the target resource.\",\n \"maxLength\": 253,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"namespace is the namespace of the referent.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"cross namespace referencing is not currently supported\",\n \"rule\": \"self.size() == 0\"\n }\n ]\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"Support kinds are core/Service and gateway.networking.k8s.io/Gateway\",\n \"rule\": \"[self.group, self.kind] in [['core','Service'], ['','Service'], ['gateway.networking.k8s.io','Gateway']]\"\n }\n ]\n },\n \"targetRefs\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"properties\": {\n \"group\": {\n \"description\": \"group is the group of the target resource.\",\n \"maxLength\": 253,\n \"pattern\": \"^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"kind is kind of the target resource.\",\n \"maxLength\": 63,\n \"minLength\": 1,\n \"pattern\": \"^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name is the name of the target resource.\",\n \"maxLength\": 253,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"namespace is the namespace of the referent.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"cross namespace referencing is not currently supported\",\n \"rule\": \"self.size() == 0\"\n }\n ]\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"Support kinds are core/Service and gateway.networking.k8s.io/Gateway\",\n \"rule\": \"[self.group, self.kind] in [['core','Service'], ['','Service'], ['gateway.networking.k8s.io','Gateway']]\"\n }\n ]\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"only one of targetRefs or workloadSelector can be set\",\n \"rule\": \"(has(self.selector)?1:0)+(has(self.targetRef)?1:0)+(has(self.targetRefs)?1:0)\\u003c=1\"\n }\n ]\n },\n \"status\": {\n \"type\": \"object\",\n \"x-kubernetes-preserve-unknown-fields\": true\n }\n },\n \"title\": \"Request Authentication\",\n \"type\": \"object\"\n}"} \ No newline at end of file diff --git a/templates/meshmodel/components/1.23.0/serviceentry.Istio.meshery.layer5.io_meshmodel.json b/templates/meshmodel/components/1.23.0/serviceentry.Istio.meshery.layer5.io_meshmodel.json new file mode 100644 index 00000000..87a34a8d --- /dev/null +++ b/templates/meshmodel/components/1.23.0/serviceentry.Istio.meshery.layer5.io_meshmodel.json @@ -0,0 +1 @@ +{"id":"00000000-0000-0000-0000-000000000000","kind":"ServiceEntry","apiVersion":"networking.istio.io/v1","displayName":"Service Entry","format":"JSON","hostID":"00000000-0000-0000-0000-000000000000","metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"20\" width=\"20\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg height=\"20\" width=\"20\" viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"model":{"id":"00000000-0000-0000-0000-000000000000","name":"istio","version":"1.23.0","displayName":"ISTIO","hostID":"00000000-0000-0000-0000-000000000000","category":{"name":"Cloud Native Network","metadata":null},"metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"20\" width=\"20\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg height=\"20\" width=\"20\" viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"components":null,"relationships":null},"schema":"{\n \"properties\": {\n \"spec\": {\n \"description\": \"Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html\",\n \"properties\": {\n \"addresses\": {\n \"description\": \"The virtual IP addresses associated with the service.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"endpoints\": {\n \"description\": \"One or more endpoints associated with the service.\",\n \"items\": {\n \"properties\": {\n \"address\": {\n \"description\": \"Address associated with the network endpoint without the port.\",\n \"maxLength\": 256,\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"UDS must be an absolute path or abstract socket\",\n \"rule\": \"self.startsWith('unix://') ? (self.substring(7,8) == '/' || self.substring(7,8) == '@') : true\"\n },\n {\n \"message\": \"UDS may not be a dir\",\n \"rule\": \"self.startsWith('unix://') ? !self.endsWith('/') : true\"\n }\n ]\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"One or more labels associated with the endpoint.\",\n \"maxProperties\": 256,\n \"type\": \"object\"\n },\n \"locality\": {\n \"description\": \"The locality associated with the endpoint.\",\n \"maxLength\": 2048,\n \"type\": \"string\"\n },\n \"network\": {\n \"description\": \"Network enables Istio to group endpoints resident in the same L3 domain/network.\",\n \"maxLength\": 2048,\n \"type\": \"string\"\n },\n \"ports\": {\n \"additionalProperties\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"port must be between 1-65535\",\n \"rule\": \"0 \\u003c self \\u0026\\u0026 self \\u003c= 65535\"\n }\n ]\n },\n \"description\": \"Set of ports associated with the endpoint.\",\n \"maxProperties\": 128,\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"port name must be valid\",\n \"rule\": \"self.all(key, size(key) \\u003c 63 \\u0026\\u0026 key.matches('^[a-zA-Z0-9](?:[-a-zA-Z0-9]*[a-zA-Z0-9])?$'))\"\n }\n ]\n },\n \"serviceAccount\": {\n \"description\": \"The service account associated with the workload if a sidecar is present in the workload.\",\n \"maxLength\": 253,\n \"type\": \"string\"\n },\n \"weight\": {\n \"description\": \"The load balancing weight associated with the endpoint.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"Address is required\",\n \"rule\": \"has(self.address) || has(self.network)\"\n },\n {\n \"message\": \"UDS may not include ports\",\n \"rule\": \"(has(self.address) \\u0026\\u0026 self.address.startsWith('unix://')) ? !has(self.ports) : true\"\n }\n ]\n },\n \"maxItems\": 4096,\n \"type\": \"array\"\n },\n \"exportTo\": {\n \"description\": \"A list of namespaces to which this service is exported.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hosts\": {\n \"description\": \"The hosts associated with the ServiceEntry.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"location\": {\n \"description\": \"Specify whether the service should be considered external to the mesh or part of the mesh.\\n\\nValid Options: MESH_EXTERNAL, MESH_INTERNAL\",\n \"enum\": [\n \"MESH_EXTERNAL\",\n \"MESH_INTERNAL\"\n ],\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"The ports associated with the external service.\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"description\": \"Label assigned to the port.\",\n \"type\": \"string\"\n },\n \"number\": {\n \"description\": \"A valid non-negative integer port number.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"protocol\": {\n \"description\": \"The protocol exposed on the port.\",\n \"type\": \"string\"\n },\n \"targetPort\": {\n \"description\": \"The port number on the endpoint where the traffic will be received.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"number\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"resolution\": {\n \"description\": \"Service resolution mode for the hosts.\\n\\nValid Options: NONE, STATIC, DNS, DNS_ROUND_ROBIN\",\n \"enum\": [\n \"NONE\",\n \"STATIC\",\n \"DNS\",\n \"DNS_ROUND_ROBIN\"\n ],\n \"type\": \"string\"\n },\n \"subjectAltNames\": {\n \"description\": \"If specified, the proxy will verify that the server certificate's subject alternate name matches one of the specified values.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"workloadSelector\": {\n \"description\": \"Applicable only for MESH_INTERNAL services.\",\n \"properties\": {\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"One or more labels that indicate a specific set of pods/VMs on which the configuration should be applied.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"hosts\"\n ],\n \"type\": \"object\"\n },\n \"status\": {\n \"type\": \"object\",\n \"x-kubernetes-preserve-unknown-fields\": true\n }\n },\n \"title\": \"Service Entry\",\n \"type\": \"object\"\n}"} \ No newline at end of file diff --git a/templates/meshmodel/components/1.23.0/sidecar.Istio.meshery.layer5.io_meshmodel.json b/templates/meshmodel/components/1.23.0/sidecar.Istio.meshery.layer5.io_meshmodel.json new file mode 100644 index 00000000..bca15a3b --- /dev/null +++ b/templates/meshmodel/components/1.23.0/sidecar.Istio.meshery.layer5.io_meshmodel.json @@ -0,0 +1 @@ +{"id":"00000000-0000-0000-0000-000000000000","kind":"Sidecar","apiVersion":"networking.istio.io/v1","displayName":"Sidecar","format":"JSON","hostID":"00000000-0000-0000-0000-000000000000","metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"20\" width=\"20\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg height=\"20\" width=\"20\" viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"model":{"id":"00000000-0000-0000-0000-000000000000","name":"istio","version":"1.23.0","displayName":"ISTIO","hostID":"00000000-0000-0000-0000-000000000000","category":{"name":"Cloud Native Network","metadata":null},"metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"20\" width=\"20\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg height=\"20\" width=\"20\" viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"components":null,"relationships":null},"schema":"{\n \"properties\": {\n \"spec\": {\n \"description\": \"Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html\",\n \"properties\": {\n \"egress\": {\n \"description\": \"Egress specifies the configuration of the sidecar for processing outbound traffic from the attached workload instance to other services in the mesh.\",\n \"items\": {\n \"properties\": {\n \"bind\": {\n \"description\": \"The IP(IPv4 or IPv6) or the Unix domain socket to which the listener should be bound to.\",\n \"type\": \"string\"\n },\n \"captureMode\": {\n \"description\": \"When the bind address is an IP, the captureMode option dictates how traffic to the listener is expected to be captured (or not).\\n\\nValid Options: DEFAULT, IPTABLES, NONE\",\n \"enum\": [\n \"DEFAULT\",\n \"IPTABLES\",\n \"NONE\"\n ],\n \"type\": \"string\"\n },\n \"hosts\": {\n \"description\": \"One or more service hosts exposed by the listener in `namespace/dnsName` format.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"port\": {\n \"description\": \"The port associated with the listener.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Label assigned to the port.\",\n \"type\": \"string\"\n },\n \"number\": {\n \"description\": \"A valid non-negative integer port number.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"protocol\": {\n \"description\": \"The protocol exposed on the port.\",\n \"type\": \"string\"\n },\n \"targetPort\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"hosts\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"inboundConnectionPool\": {\n \"description\": \"Settings controlling the volume of connections Envoy will accept from the network.\",\n \"properties\": {\n \"http\": {\n \"description\": \"HTTP connection pool settings.\",\n \"properties\": {\n \"h2UpgradePolicy\": {\n \"description\": \"Specify if http1.1 connection should be upgraded to http2 for the associated destination.\\n\\nValid Options: DEFAULT, DO_NOT_UPGRADE, UPGRADE\",\n \"enum\": [\n \"DEFAULT\",\n \"DO_NOT_UPGRADE\",\n \"UPGRADE\"\n ],\n \"type\": \"string\"\n },\n \"http1MaxPendingRequests\": {\n \"description\": \"Maximum number of requests that will be queued while waiting for a ready connection pool connection.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"http2MaxRequests\": {\n \"description\": \"Maximum number of active requests to a destination.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"idleTimeout\": {\n \"description\": \"The idle timeout for upstream connection pool connections.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"maxConcurrentStreams\": {\n \"description\": \"The maximum number of concurrent streams allowed for a peer on one HTTP/2 connection.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"maxRequestsPerConnection\": {\n \"description\": \"Maximum number of requests per connection to a backend.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"maxRetries\": {\n \"description\": \"Maximum number of retries that can be outstanding to all hosts in a cluster at a given time.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"useClientProtocol\": {\n \"description\": \"If set to true, client protocol will be preserved while initiating connection to backend.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"tcp\": {\n \"description\": \"Settings common to both HTTP and TCP upstream connections.\",\n \"properties\": {\n \"connectTimeout\": {\n \"description\": \"TCP connection timeout.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"idleTimeout\": {\n \"description\": \"The idle timeout for TCP connections.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"maxConnectionDuration\": {\n \"description\": \"The maximum duration of a connection.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"maxConnections\": {\n \"description\": \"Maximum number of HTTP1 /TCP connections to a destination host.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpKeepalive\": {\n \"description\": \"If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.\",\n \"properties\": {\n \"interval\": {\n \"description\": \"The time duration between keep-alive probes.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"probes\": {\n \"description\": \"Maximum number of keepalive probes to send without response before deciding the connection is dead.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"time\": {\n \"description\": \"The time duration a connection needs to be idle before keep-alive probes start being sent.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"ingress\": {\n \"description\": \"Ingress specifies the configuration of the sidecar for processing inbound traffic to the attached workload instance.\",\n \"items\": {\n \"properties\": {\n \"bind\": {\n \"description\": \"The IP(IPv4 or IPv6) to which the listener should be bound.\",\n \"type\": \"string\"\n },\n \"captureMode\": {\n \"description\": \"The captureMode option dictates how traffic to the listener is expected to be captured (or not).\\n\\nValid Options: DEFAULT, IPTABLES, NONE\",\n \"enum\": [\n \"DEFAULT\",\n \"IPTABLES\",\n \"NONE\"\n ],\n \"type\": \"string\"\n },\n \"connectionPool\": {\n \"description\": \"Settings controlling the volume of connections Envoy will accept from the network.\",\n \"properties\": {\n \"http\": {\n \"description\": \"HTTP connection pool settings.\",\n \"properties\": {\n \"h2UpgradePolicy\": {\n \"description\": \"Specify if http1.1 connection should be upgraded to http2 for the associated destination.\\n\\nValid Options: DEFAULT, DO_NOT_UPGRADE, UPGRADE\",\n \"enum\": [\n \"DEFAULT\",\n \"DO_NOT_UPGRADE\",\n \"UPGRADE\"\n ],\n \"type\": \"string\"\n },\n \"http1MaxPendingRequests\": {\n \"description\": \"Maximum number of requests that will be queued while waiting for a ready connection pool connection.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"http2MaxRequests\": {\n \"description\": \"Maximum number of active requests to a destination.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"idleTimeout\": {\n \"description\": \"The idle timeout for upstream connection pool connections.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"maxConcurrentStreams\": {\n \"description\": \"The maximum number of concurrent streams allowed for a peer on one HTTP/2 connection.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"maxRequestsPerConnection\": {\n \"description\": \"Maximum number of requests per connection to a backend.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"maxRetries\": {\n \"description\": \"Maximum number of retries that can be outstanding to all hosts in a cluster at a given time.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"useClientProtocol\": {\n \"description\": \"If set to true, client protocol will be preserved while initiating connection to backend.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"tcp\": {\n \"description\": \"Settings common to both HTTP and TCP upstream connections.\",\n \"properties\": {\n \"connectTimeout\": {\n \"description\": \"TCP connection timeout.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"idleTimeout\": {\n \"description\": \"The idle timeout for TCP connections.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"maxConnectionDuration\": {\n \"description\": \"The maximum duration of a connection.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"maxConnections\": {\n \"description\": \"Maximum number of HTTP1 /TCP connections to a destination host.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpKeepalive\": {\n \"description\": \"If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.\",\n \"properties\": {\n \"interval\": {\n \"description\": \"The time duration between keep-alive probes.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"probes\": {\n \"description\": \"Maximum number of keepalive probes to send without response before deciding the connection is dead.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"time\": {\n \"description\": \"The time duration a connection needs to be idle before keep-alive probes start being sent.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"defaultEndpoint\": {\n \"description\": \"The IP endpoint or Unix domain socket to which traffic should be forwarded to.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"The port associated with the listener.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Label assigned to the port.\",\n \"type\": \"string\"\n },\n \"number\": {\n \"description\": \"A valid non-negative integer port number.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"protocol\": {\n \"description\": \"The protocol exposed on the port.\",\n \"type\": \"string\"\n },\n \"targetPort\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"tls\": {\n \"description\": \"Set of TLS related options that will enable TLS termination on the sidecar for requests originating from outside the mesh.\",\n \"properties\": {\n \"caCertificates\": {\n \"description\": \"REQUIRED if mode is `MUTUAL` or `OPTIONAL_MUTUAL`.\",\n \"type\": \"string\"\n },\n \"caCrl\": {\n \"description\": \"OPTIONAL: The path to the file containing the certificate revocation list (CRL) to use in verifying a presented client side certificate.\",\n \"type\": \"string\"\n },\n \"cipherSuites\": {\n \"description\": \"Optional: If specified, only support the specified cipher list.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"credentialName\": {\n \"description\": \"For gateways running on Kubernetes, the name of the secret that holds the TLS certs including the CA certificates.\",\n \"type\": \"string\"\n },\n \"httpsRedirect\": {\n \"description\": \"If set to true, the load balancer will send a 301 redirect for all http connections, asking the clients to use HTTPS.\",\n \"type\": \"boolean\"\n },\n \"maxProtocolVersion\": {\n \"description\": \"Optional: Maximum TLS protocol version.\\n\\nValid Options: TLS_AUTO, TLSV1_0, TLSV1_1, TLSV1_2, TLSV1_3\",\n \"enum\": [\n \"TLS_AUTO\",\n \"TLSV1_0\",\n \"TLSV1_1\",\n \"TLSV1_2\",\n \"TLSV1_3\"\n ],\n \"type\": \"string\"\n },\n \"minProtocolVersion\": {\n \"description\": \"Optional: Minimum TLS protocol version.\\n\\nValid Options: TLS_AUTO, TLSV1_0, TLSV1_1, TLSV1_2, TLSV1_3\",\n \"enum\": [\n \"TLS_AUTO\",\n \"TLSV1_0\",\n \"TLSV1_1\",\n \"TLSV1_2\",\n \"TLSV1_3\"\n ],\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"Optional: Indicates whether connections to this port should be secured using TLS.\\n\\nValid Options: PASSTHROUGH, SIMPLE, MUTUAL, AUTO_PASSTHROUGH, ISTIO_MUTUAL, OPTIONAL_MUTUAL\",\n \"enum\": [\n \"PASSTHROUGH\",\n \"SIMPLE\",\n \"MUTUAL\",\n \"AUTO_PASSTHROUGH\",\n \"ISTIO_MUTUAL\",\n \"OPTIONAL_MUTUAL\"\n ],\n \"type\": \"string\"\n },\n \"privateKey\": {\n \"description\": \"REQUIRED if mode is `SIMPLE` or `MUTUAL`.\",\n \"type\": \"string\"\n },\n \"serverCertificate\": {\n \"description\": \"REQUIRED if mode is `SIMPLE` or `MUTUAL`.\",\n \"type\": \"string\"\n },\n \"subjectAltNames\": {\n \"description\": \"A list of alternate names to verify the subject identity in the certificate presented by the client.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"verifyCertificateHash\": {\n \"description\": \"An optional list of hex-encoded SHA-256 hashes of the authorized client certificates.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"verifyCertificateSpki\": {\n \"description\": \"An optional list of base64-encoded SHA-256 hashes of the SPKIs of authorized client certificates.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"outboundTrafficPolicy\": {\n \"description\": \"Configuration for the outbound traffic policy.\",\n \"properties\": {\n \"egressProxy\": {\n \"properties\": {\n \"host\": {\n \"description\": \"The name of a service from the service registry.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"Specifies the port on the host that is being addressed.\",\n \"properties\": {\n \"number\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"subset\": {\n \"description\": \"The name of a subset within the service.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"host\"\n ],\n \"type\": \"object\"\n },\n \"mode\": {\n \"description\": \"\\n\\nValid Options: REGISTRY_ONLY, ALLOW_ANY\",\n \"enum\": [\n \"REGISTRY_ONLY\",\n \"ALLOW_ANY\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"workloadSelector\": {\n \"description\": \"Criteria used to select the specific set of pods/VMs on which this `Sidecar` configuration should be applied.\",\n \"properties\": {\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"One or more labels that indicate a specific set of pods/VMs on which the configuration should be applied.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"status\": {\n \"type\": \"object\",\n \"x-kubernetes-preserve-unknown-fields\": true\n }\n },\n \"title\": \"Sidecar\",\n \"type\": \"object\"\n}"} \ No newline at end of file diff --git a/templates/meshmodel/components/1.23.0/telemetry.Istio.meshery.layer5.io_meshmodel.json b/templates/meshmodel/components/1.23.0/telemetry.Istio.meshery.layer5.io_meshmodel.json new file mode 100644 index 00000000..5b8ae3db --- /dev/null +++ b/templates/meshmodel/components/1.23.0/telemetry.Istio.meshery.layer5.io_meshmodel.json @@ -0,0 +1 @@ +{"id":"00000000-0000-0000-0000-000000000000","kind":"Telemetry","apiVersion":"telemetry.istio.io/v1","displayName":"Telemetry","format":"JSON","hostID":"00000000-0000-0000-0000-000000000000","metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"20\" width=\"20\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg height=\"20\" width=\"20\" viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"model":{"id":"00000000-0000-0000-0000-000000000000","name":"istio","version":"1.23.0","displayName":"ISTIO","hostID":"00000000-0000-0000-0000-000000000000","category":{"name":"Cloud Native Network","metadata":null},"metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"20\" width=\"20\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg height=\"20\" width=\"20\" viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"components":null,"relationships":null},"schema":"{\n \"properties\": {\n \"spec\": {\n \"description\": \"Telemetry configuration for workloads. See more details at: https://istio.io/docs/reference/config/telemetry.html\",\n \"properties\": {\n \"accessLogging\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"properties\": {\n \"disabled\": {\n \"description\": \"Controls logging.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"filter\": {\n \"description\": \"Optional.\",\n \"properties\": {\n \"expression\": {\n \"description\": \"CEL expression for selecting when requests/connections should be logged.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Allows tailoring of logging behavior to specific conditions.\",\n \"properties\": {\n \"mode\": {\n \"description\": \"This determines whether or not to apply the access logging configuration based on the direction of traffic relative to the proxied workload.\\n\\nValid Options: CLIENT_AND_SERVER, CLIENT, SERVER\",\n \"enum\": [\n \"CLIENT_AND_SERVER\",\n \"CLIENT\",\n \"SERVER\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"providers\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"description\": \"Required.\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"metrics\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"properties\": {\n \"overrides\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"properties\": {\n \"disabled\": {\n \"description\": \"Optional.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"match\": {\n \"description\": \"Match allows providing the scope of the override.\",\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"metric\"\n ]\n },\n {\n \"required\": [\n \"customMetric\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"metric\"\n ]\n },\n {\n \"required\": [\n \"customMetric\"\n ]\n }\n ],\n \"properties\": {\n \"customMetric\": {\n \"description\": \"Allows free-form specification of a metric.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"metric\": {\n \"description\": \"One of the well-known [Istio Standard Metrics](https://istio.io/latest/docs/reference/config/metrics/).\\n\\nValid Options: ALL_METRICS, REQUEST_COUNT, REQUEST_DURATION, REQUEST_SIZE, RESPONSE_SIZE, TCP_OPENED_CONNECTIONS, TCP_CLOSED_CONNECTIONS, TCP_SENT_BYTES, TCP_RECEIVED_BYTES, GRPC_REQUEST_MESSAGES, GRPC_RESPONSE_MESSAGES\",\n \"enum\": [\n \"ALL_METRICS\",\n \"REQUEST_COUNT\",\n \"REQUEST_DURATION\",\n \"REQUEST_SIZE\",\n \"RESPONSE_SIZE\",\n \"TCP_OPENED_CONNECTIONS\",\n \"TCP_CLOSED_CONNECTIONS\",\n \"TCP_SENT_BYTES\",\n \"TCP_RECEIVED_BYTES\",\n \"GRPC_REQUEST_MESSAGES\",\n \"GRPC_RESPONSE_MESSAGES\"\n ],\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"Controls which mode of metrics generation is selected: `CLIENT`, `SERVER`, or `CLIENT_AND_SERVER`.\\n\\nValid Options: CLIENT_AND_SERVER, CLIENT, SERVER\",\n \"enum\": [\n \"CLIENT_AND_SERVER\",\n \"CLIENT\",\n \"SERVER\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tagOverrides\": {\n \"additionalProperties\": {\n \"properties\": {\n \"operation\": {\n \"description\": \"Operation controls whether or not to update/add a tag, or to remove it.\\n\\nValid Options: UPSERT, REMOVE\",\n \"enum\": [\n \"UPSERT\",\n \"REMOVE\"\n ],\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value is only considered if the operation is `UPSERT`.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"value must be set when operation is UPSERT\",\n \"rule\": \"((has(self.operation) ? self.operation : '') == 'UPSERT') ? self.value != '' : true\"\n },\n {\n \"message\": \"value must not be set when operation is REMOVE\",\n \"rule\": \"((has(self.operation) ? self.operation : '') == 'REMOVE') ? !has(self.value) : true\"\n }\n ]\n },\n \"description\": \"Optional.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"providers\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"description\": \"Required.\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"reportingInterval\": {\n \"description\": \"Optional.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"selector\": {\n \"description\": \"Optional.\",\n \"properties\": {\n \"matchLabels\": {\n \"additionalProperties\": {\n \"maxLength\": 63,\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"wildcard not allowed in label value match\",\n \"rule\": \"!self.contains('*')\"\n }\n ]\n },\n \"description\": \"One or more labels that indicate a specific set of pods/VMs on which a policy should be applied.\",\n \"maxProperties\": 4096,\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"wildcard not allowed in label key match\",\n \"rule\": \"self.all(key, !key.contains('*'))\"\n },\n {\n \"message\": \"key must not be empty\",\n \"rule\": \"self.all(key, key.size() != 0)\"\n }\n ]\n }\n },\n \"type\": \"object\"\n },\n \"targetRef\": {\n \"properties\": {\n \"group\": {\n \"description\": \"group is the group of the target resource.\",\n \"maxLength\": 253,\n \"pattern\": \"^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"kind is kind of the target resource.\",\n \"maxLength\": 63,\n \"minLength\": 1,\n \"pattern\": \"^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name is the name of the target resource.\",\n \"maxLength\": 253,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"namespace is the namespace of the referent.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"cross namespace referencing is not currently supported\",\n \"rule\": \"self.size() == 0\"\n }\n ]\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"Support kinds are core/Service and gateway.networking.k8s.io/Gateway\",\n \"rule\": \"[self.group, self.kind] in [['core','Service'], ['','Service'], ['gateway.networking.k8s.io','Gateway']]\"\n }\n ]\n },\n \"targetRefs\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"properties\": {\n \"group\": {\n \"description\": \"group is the group of the target resource.\",\n \"maxLength\": 253,\n \"pattern\": \"^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"kind is kind of the target resource.\",\n \"maxLength\": 63,\n \"minLength\": 1,\n \"pattern\": \"^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name is the name of the target resource.\",\n \"maxLength\": 253,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"namespace is the namespace of the referent.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"cross namespace referencing is not currently supported\",\n \"rule\": \"self.size() == 0\"\n }\n ]\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"Support kinds are core/Service and gateway.networking.k8s.io/Gateway\",\n \"rule\": \"[self.group, self.kind] in [['core','Service'], ['','Service'], ['gateway.networking.k8s.io','Gateway']]\"\n }\n ]\n },\n \"type\": \"array\"\n },\n \"tracing\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"properties\": {\n \"customTags\": {\n \"additionalProperties\": {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"literal\"\n ]\n },\n {\n \"required\": [\n \"environment\"\n ]\n },\n {\n \"required\": [\n \"header\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"literal\"\n ]\n },\n {\n \"required\": [\n \"environment\"\n ]\n },\n {\n \"required\": [\n \"header\"\n ]\n }\n ],\n \"properties\": {\n \"environment\": {\n \"description\": \"Environment adds the value of an environment variable to each span.\",\n \"properties\": {\n \"defaultValue\": {\n \"description\": \"Optional.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the environment variable from which to extract the tag value.\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"header\": {\n \"description\": \"RequestHeader adds the value of an header from the request to each span.\",\n \"properties\": {\n \"defaultValue\": {\n \"description\": \"Optional.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the header from which to extract the tag value.\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"literal\": {\n \"description\": \"Literal adds the same, hard-coded value to each span.\",\n \"properties\": {\n \"value\": {\n \"description\": \"The tag value to use.\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"value\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"description\": \"Optional.\",\n \"type\": \"object\"\n },\n \"disableSpanReporting\": {\n \"description\": \"Controls span reporting.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"match\": {\n \"description\": \"Allows tailoring of behavior to specific conditions.\",\n \"properties\": {\n \"mode\": {\n \"description\": \"This determines whether or not to apply the tracing configuration based on the direction of traffic relative to the proxied workload.\\n\\nValid Options: CLIENT_AND_SERVER, CLIENT, SERVER\",\n \"enum\": [\n \"CLIENT_AND_SERVER\",\n \"CLIENT\",\n \"SERVER\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"providers\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"description\": \"Required.\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"randomSamplingPercentage\": {\n \"description\": \"Controls the rate at which traffic will be selected for tracing if no prior sampling decision has been made.\",\n \"format\": \"double\",\n \"maximum\": 100,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"useRequestIdForTraceSampling\": {\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"status\": {\n \"type\": \"object\",\n \"x-kubernetes-preserve-unknown-fields\": true\n }\n },\n \"title\": \"Telemetry\",\n \"type\": \"object\"\n}"} \ No newline at end of file diff --git a/templates/meshmodel/components/1.23.0/virtualservice.Istio.meshery.layer5.io_meshmodel.json b/templates/meshmodel/components/1.23.0/virtualservice.Istio.meshery.layer5.io_meshmodel.json new file mode 100644 index 00000000..9468b07d --- /dev/null +++ b/templates/meshmodel/components/1.23.0/virtualservice.Istio.meshery.layer5.io_meshmodel.json @@ -0,0 +1 @@ +{"id":"00000000-0000-0000-0000-000000000000","kind":"VirtualService","apiVersion":"networking.istio.io/v1","displayName":"Virtual Service","format":"JSON","hostID":"00000000-0000-0000-0000-000000000000","metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"20\" width=\"20\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg height=\"20\" width=\"20\" viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"model":{"id":"00000000-0000-0000-0000-000000000000","name":"istio","version":"1.23.0","displayName":"ISTIO","hostID":"00000000-0000-0000-0000-000000000000","category":{"name":"Cloud Native Network","metadata":null},"metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"20\" width=\"20\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg height=\"20\" width=\"20\" viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"components":null,"relationships":null},"schema":"{\n \"properties\": {\n \"spec\": {\n \"description\": \"Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html\",\n \"properties\": {\n \"exportTo\": {\n \"description\": \"A list of namespaces to which this virtual service is exported.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"gateways\": {\n \"description\": \"The names of gateways and sidecars that should apply these routes.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hosts\": {\n \"description\": \"The destination hosts to which traffic is being sent.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"http\": {\n \"description\": \"An ordered list of route rules for HTTP traffic.\",\n \"items\": {\n \"properties\": {\n \"corsPolicy\": {\n \"description\": \"Cross-Origin Resource Sharing policy (CORS).\",\n \"properties\": {\n \"allowCredentials\": {\n \"description\": \"Indicates whether the caller is allowed to send the actual request (not the preflight) using credentials.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"allowHeaders\": {\n \"description\": \"List of HTTP headers that can be used when requesting the resource.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowMethods\": {\n \"description\": \"List of HTTP methods allowed to access the resource.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowOrigin\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"allowOrigins\": {\n \"description\": \"String patterns that match allowed origins.\",\n \"items\": {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ],\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"description\": \"[RE2 style regex-based match](https://github.com/google/re2/wiki/Syntax).\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"exposeHeaders\": {\n \"description\": \"A list of HTTP headers that the browsers are allowed to access.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"maxAge\": {\n \"description\": \"Specifies how long the results of a preflight request can be cached.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"unmatchedPreflights\": {\n \"description\": \"Indicates whether preflight requests not matching the configured allowed origin shouldn't be forwarded to the upstream.\\n\\nValid Options: FORWARD, IGNORE\",\n \"enum\": [\n \"UNSPECIFIED\",\n \"FORWARD\",\n \"IGNORE\"\n ],\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"delegate\": {\n \"description\": \"Delegate is used to specify the particular VirtualService which can be used to define delegate HTTPRoute.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name specifies the name of the delegate VirtualService.\",\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace specifies the namespace where the delegate VirtualService resides.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"directResponse\": {\n \"description\": \"A HTTP rule can either return a direct_response, redirect or forward (default) traffic.\",\n \"properties\": {\n \"body\": {\n \"description\": \"Specifies the content of the response body.\",\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"string\"\n ]\n },\n {\n \"required\": [\n \"bytes\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"string\"\n ]\n },\n {\n \"required\": [\n \"bytes\"\n ]\n }\n ],\n \"properties\": {\n \"bytes\": {\n \"description\": \"response body as base64 encoded bytes.\",\n \"format\": \"binary\",\n \"type\": \"string\"\n },\n \"string\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"status\": {\n \"description\": \"Specifies the HTTP response status to be returned.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"fault\": {\n \"description\": \"Fault injection policy to apply on HTTP traffic at the client side.\",\n \"properties\": {\n \"abort\": {\n \"description\": \"Abort Http request attempts and return error codes back to downstream service, giving the impression that the upstream service is faulty.\",\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"httpStatus\"\n ]\n },\n {\n \"required\": [\n \"grpcStatus\"\n ]\n },\n {\n \"required\": [\n \"http2Error\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"httpStatus\"\n ]\n },\n {\n \"required\": [\n \"grpcStatus\"\n ]\n },\n {\n \"required\": [\n \"http2Error\"\n ]\n }\n ],\n \"properties\": {\n \"grpcStatus\": {\n \"description\": \"GRPC status code to use to abort the request.\",\n \"type\": \"string\"\n },\n \"http2Error\": {\n \"type\": \"string\"\n },\n \"httpStatus\": {\n \"description\": \"HTTP status code to use to abort the Http request.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"percentage\": {\n \"description\": \"Percentage of requests to be aborted with the error code provided.\",\n \"properties\": {\n \"value\": {\n \"format\": \"double\",\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"delay\": {\n \"description\": \"Delay requests before forwarding, emulating various failures such as network issues, overloaded upstream service, etc.\",\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"fixedDelay\"\n ]\n },\n {\n \"required\": [\n \"exponentialDelay\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"fixedDelay\"\n ]\n },\n {\n \"required\": [\n \"exponentialDelay\"\n ]\n }\n ],\n \"properties\": {\n \"exponentialDelay\": {\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"fixedDelay\": {\n \"description\": \"Add a fixed delay before forwarding the request.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"percent\": {\n \"description\": \"Percentage of requests on which the delay will be injected (0-100).\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"percentage\": {\n \"description\": \"Percentage of requests on which the delay will be injected.\",\n \"properties\": {\n \"value\": {\n \"format\": \"double\",\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"properties\": {\n \"request\": {\n \"properties\": {\n \"add\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"remove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"set\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"response\": {\n \"properties\": {\n \"add\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"remove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"set\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"match\": {\n \"description\": \"Match conditions to be satisfied for the rule to be activated.\",\n \"items\": {\n \"properties\": {\n \"authority\": {\n \"description\": \"HTTP Authority values are case-sensitive and formatted as follows: - `exact: \\\"value\\\"` for exact string match - `prefix: \\\"value\\\"` for prefix-based match - `regex: \\\"value\\\"` for [RE2 style regex-based match](https://github.com/google/re2/wiki/Syntax).\",\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ],\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"description\": \"[RE2 style regex-based match](https://github.com/google/re2/wiki/Syntax).\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"gateways\": {\n \"description\": \"Names of gateways where the rule should be applied.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"headers\": {\n \"additionalProperties\": {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ],\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"description\": \"[RE2 style regex-based match](https://github.com/google/re2/wiki/Syntax).\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"description\": \"The header keys must be lowercase and use hyphen as the separator, e.g.\",\n \"type\": \"object\"\n },\n \"ignoreUriCase\": {\n \"description\": \"Flag to specify whether the URI matching should be case-insensitive.\",\n \"type\": \"boolean\"\n },\n \"method\": {\n \"description\": \"HTTP Method values are case-sensitive and formatted as follows: - `exact: \\\"value\\\"` for exact string match - `prefix: \\\"value\\\"` for prefix-based match - `regex: \\\"value\\\"` for [RE2 style regex-based match](https://github.com/google/re2/wiki/Syntax).\",\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ],\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"description\": \"[RE2 style regex-based match](https://github.com/google/re2/wiki/Syntax).\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"The name assigned to a match.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"Specifies the ports on the host that is being addressed.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"queryParams\": {\n \"additionalProperties\": {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ],\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"description\": \"[RE2 style regex-based match](https://github.com/google/re2/wiki/Syntax).\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"description\": \"Query parameters for matching.\",\n \"type\": \"object\"\n },\n \"scheme\": {\n \"description\": \"URI Scheme values are case-sensitive and formatted as follows: - `exact: \\\"value\\\"` for exact string match - `prefix: \\\"value\\\"` for prefix-based match - `regex: \\\"value\\\"` for [RE2 style regex-based match](https://github.com/google/re2/wiki/Syntax).\",\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ],\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"description\": \"[RE2 style regex-based match](https://github.com/google/re2/wiki/Syntax).\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"sourceLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"One or more labels that constrain the applicability of a rule to source (client) workloads with the given labels.\",\n \"type\": \"object\"\n },\n \"sourceNamespace\": {\n \"description\": \"Source namespace constraining the applicability of a rule to workloads in that namespace.\",\n \"type\": \"string\"\n },\n \"statPrefix\": {\n \"description\": \"The human readable prefix to use when emitting statistics for this route.\",\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"URI to match values are case-sensitive and formatted as follows: - `exact: \\\"value\\\"` for exact string match - `prefix: \\\"value\\\"` for prefix-based match - `regex: \\\"value\\\"` for [RE2 style regex-based match](https://github.com/google/re2/wiki/Syntax).\",\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ],\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"description\": \"[RE2 style regex-based match](https://github.com/google/re2/wiki/Syntax).\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"withoutHeaders\": {\n \"additionalProperties\": {\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"exact\"\n ]\n },\n {\n \"required\": [\n \"prefix\"\n ]\n },\n {\n \"required\": [\n \"regex\"\n ]\n }\n ],\n \"properties\": {\n \"exact\": {\n \"type\": \"string\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"regex\": {\n \"description\": \"[RE2 style regex-based match](https://github.com/google/re2/wiki/Syntax).\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"description\": \"withoutHeader has the same syntax with the header, but has opposite meaning.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"mirror\": {\n \"description\": \"Mirror HTTP traffic to a another destination in addition to forwarding the requests to the intended destination.\",\n \"properties\": {\n \"host\": {\n \"description\": \"The name of a service from the service registry.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"Specifies the port on the host that is being addressed.\",\n \"properties\": {\n \"number\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"subset\": {\n \"description\": \"The name of a subset within the service.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"host\"\n ],\n \"type\": \"object\"\n },\n \"mirrorPercent\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"mirrorPercentage\": {\n \"description\": \"Percentage of the traffic to be mirrored by the `mirror` field.\",\n \"properties\": {\n \"value\": {\n \"format\": \"double\",\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n },\n \"mirror_percent\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"mirrors\": {\n \"description\": \"Specifies the destinations to mirror HTTP traffic in addition to the original destination.\",\n \"items\": {\n \"properties\": {\n \"destination\": {\n \"description\": \"Destination specifies the target of the mirror operation.\",\n \"properties\": {\n \"host\": {\n \"description\": \"The name of a service from the service registry.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"Specifies the port on the host that is being addressed.\",\n \"properties\": {\n \"number\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"subset\": {\n \"description\": \"The name of a subset within the service.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"host\"\n ],\n \"type\": \"object\"\n },\n \"percentage\": {\n \"description\": \"Percentage of the traffic to be mirrored by the `destination` field.\",\n \"properties\": {\n \"value\": {\n \"format\": \"double\",\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"destination\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"The name assigned to the route for debugging purposes.\",\n \"type\": \"string\"\n },\n \"redirect\": {\n \"description\": \"A HTTP rule can either return a direct_response, redirect or forward (default) traffic.\",\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"port\"\n ]\n },\n {\n \"required\": [\n \"derivePort\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"port\"\n ]\n },\n {\n \"required\": [\n \"derivePort\"\n ]\n }\n ],\n \"properties\": {\n \"authority\": {\n \"description\": \"On a redirect, overwrite the Authority/Host portion of the URL with this value.\",\n \"type\": \"string\"\n },\n \"derivePort\": {\n \"description\": \"On a redirect, dynamically set the port: * FROM_PROTOCOL_DEFAULT: automatically set to 80 for HTTP and 443 for HTTPS.\\n\\nValid Options: FROM_PROTOCOL_DEFAULT, FROM_REQUEST_PORT\",\n \"enum\": [\n \"FROM_PROTOCOL_DEFAULT\",\n \"FROM_REQUEST_PORT\"\n ],\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"On a redirect, overwrite the port portion of the URL with this value.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"redirectCode\": {\n \"description\": \"On a redirect, Specifies the HTTP status code to use in the redirect response.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"scheme\": {\n \"description\": \"On a redirect, overwrite the scheme portion of the URL with this value.\",\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"On a redirect, overwrite the Path portion of the URL with this value.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"retries\": {\n \"description\": \"Retry policy for HTTP requests.\",\n \"properties\": {\n \"attempts\": {\n \"description\": \"Number of retries to be allowed for a given request.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"perTryTimeout\": {\n \"description\": \"Timeout per attempt for a given request, including the initial call and any retries.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n },\n \"retryOn\": {\n \"description\": \"Specifies the conditions under which retry takes place.\",\n \"type\": \"string\"\n },\n \"retryRemoteLocalities\": {\n \"description\": \"Flag to specify whether the retries should retry to other localities.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"rewrite\": {\n \"description\": \"Rewrite HTTP URIs and Authority headers.\",\n \"properties\": {\n \"authority\": {\n \"description\": \"rewrite the Authority/Host header with this value.\",\n \"type\": \"string\"\n },\n \"uri\": {\n \"description\": \"rewrite the path (or the prefix) portion of the URI with this value.\",\n \"type\": \"string\"\n },\n \"uriRegexRewrite\": {\n \"description\": \"rewrite the path portion of the URI with the specified regex.\",\n \"properties\": {\n \"match\": {\n \"description\": \"[RE2 style regex-based match](https://github.com/google/re2/wiki/Syntax).\",\n \"type\": \"string\"\n },\n \"rewrite\": {\n \"description\": \"The string that should replace into matching portions of original URI.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"route\": {\n \"description\": \"A HTTP rule can either return a direct_response, redirect or forward (default) traffic.\",\n \"items\": {\n \"properties\": {\n \"destination\": {\n \"description\": \"Destination uniquely identifies the instances of a service to which the request/connection should be forwarded to.\",\n \"properties\": {\n \"host\": {\n \"description\": \"The name of a service from the service registry.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"Specifies the port on the host that is being addressed.\",\n \"properties\": {\n \"number\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"subset\": {\n \"description\": \"The name of a subset within the service.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"host\"\n ],\n \"type\": \"object\"\n },\n \"headers\": {\n \"properties\": {\n \"request\": {\n \"properties\": {\n \"add\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"remove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"set\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"response\": {\n \"properties\": {\n \"add\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"remove\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"set\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"Weight specifies the relative proportion of traffic to be forwarded to the destination.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"destination\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"timeout\": {\n \"description\": \"Timeout for HTTP requests, default is disabled.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"must be a valid duration greater than 1ms\",\n \"rule\": \"duration(self) \\u003e= duration('1ms')\"\n }\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tcp\": {\n \"description\": \"An ordered list of route rules for opaque TCP traffic.\",\n \"items\": {\n \"properties\": {\n \"match\": {\n \"description\": \"Match conditions to be satisfied for the rule to be activated.\",\n \"items\": {\n \"properties\": {\n \"destinationSubnets\": {\n \"description\": \"IPv4 or IPv6 ip addresses of destination with optional subnet.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"gateways\": {\n \"description\": \"Names of gateways where the rule should be applied.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"port\": {\n \"description\": \"Specifies the port on the host that is being addressed.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"sourceLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"One or more labels that constrain the applicability of a rule to workloads with the given labels.\",\n \"type\": \"object\"\n },\n \"sourceNamespace\": {\n \"description\": \"Source namespace constraining the applicability of a rule to workloads in that namespace.\",\n \"type\": \"string\"\n },\n \"sourceSubnet\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"route\": {\n \"description\": \"The destination to which the connection should be forwarded to.\",\n \"items\": {\n \"properties\": {\n \"destination\": {\n \"description\": \"Destination uniquely identifies the instances of a service to which the request/connection should be forwarded to.\",\n \"properties\": {\n \"host\": {\n \"description\": \"The name of a service from the service registry.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"Specifies the port on the host that is being addressed.\",\n \"properties\": {\n \"number\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"subset\": {\n \"description\": \"The name of a subset within the service.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"host\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"Weight specifies the relative proportion of traffic to be forwarded to the destination.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"destination\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tls\": {\n \"description\": \"An ordered list of route rule for non-terminated TLS \\u0026 HTTPS traffic.\",\n \"items\": {\n \"properties\": {\n \"match\": {\n \"description\": \"Match conditions to be satisfied for the rule to be activated.\",\n \"items\": {\n \"properties\": {\n \"destinationSubnets\": {\n \"description\": \"IPv4 or IPv6 ip addresses of destination with optional subnet.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"gateways\": {\n \"description\": \"Names of gateways where the rule should be applied.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"port\": {\n \"description\": \"Specifies the port on the host that is being addressed.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"sniHosts\": {\n \"description\": \"SNI (server name indicator) to match on.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"sourceLabels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"One or more labels that constrain the applicability of a rule to workloads with the given labels.\",\n \"type\": \"object\"\n },\n \"sourceNamespace\": {\n \"description\": \"Source namespace constraining the applicability of a rule to workloads in that namespace.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"sniHosts\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"route\": {\n \"description\": \"The destination to which the connection should be forwarded to.\",\n \"items\": {\n \"properties\": {\n \"destination\": {\n \"description\": \"Destination uniquely identifies the instances of a service to which the request/connection should be forwarded to.\",\n \"properties\": {\n \"host\": {\n \"description\": \"The name of a service from the service registry.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"Specifies the port on the host that is being addressed.\",\n \"properties\": {\n \"number\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"subset\": {\n \"description\": \"The name of a subset within the service.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"host\"\n ],\n \"type\": \"object\"\n },\n \"weight\": {\n \"description\": \"Weight specifies the relative proportion of traffic to be forwarded to the destination.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"destination\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"match\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"status\": {\n \"type\": \"object\",\n \"x-kubernetes-preserve-unknown-fields\": true\n }\n },\n \"title\": \"Virtual Service\",\n \"type\": \"object\"\n}"} \ No newline at end of file diff --git a/templates/meshmodel/components/1.23.0/wasmplugin.Istio.meshery.layer5.io_meshmodel.json b/templates/meshmodel/components/1.23.0/wasmplugin.Istio.meshery.layer5.io_meshmodel.json new file mode 100644 index 00000000..2761d4e3 --- /dev/null +++ b/templates/meshmodel/components/1.23.0/wasmplugin.Istio.meshery.layer5.io_meshmodel.json @@ -0,0 +1 @@ +{"id":"00000000-0000-0000-0000-000000000000","kind":"WasmPlugin","apiVersion":"extensions.istio.io/v1alpha1","displayName":"Wasm Plugin","format":"JSON","hostID":"00000000-0000-0000-0000-000000000000","metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"20\" width=\"20\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg height=\"20\" width=\"20\" viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"model":{"id":"00000000-0000-0000-0000-000000000000","name":"istio","version":"1.23.0","displayName":"ISTIO","hostID":"00000000-0000-0000-0000-000000000000","category":{"name":"Cloud Native Network","metadata":null},"metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"20\" width=\"20\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg height=\"20\" width=\"20\" viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"components":null,"relationships":null},"schema":"{\n \"properties\": {\n \"spec\": {\n \"description\": \"Extend the functionality provided by the Istio proxy through WebAssembly filters. See more details at: https://istio.io/docs/reference/config/proxy_extensions/wasm-plugin.html\",\n \"properties\": {\n \"failStrategy\": {\n \"description\": \"Specifies the failure behavior for the plugin due to fatal errors.\\n\\nValid Options: FAIL_CLOSE, FAIL_OPEN\",\n \"enum\": [\n \"FAIL_CLOSE\",\n \"FAIL_OPEN\"\n ],\n \"type\": \"string\"\n },\n \"imagePullPolicy\": {\n \"description\": \"The pull behaviour to be applied when fetching Wasm module by either OCI image or `http/https`.\\n\\nValid Options: IfNotPresent, Always\",\n \"enum\": [\n \"UNSPECIFIED_POLICY\",\n \"IfNotPresent\",\n \"Always\"\n ],\n \"type\": \"string\"\n },\n \"imagePullSecret\": {\n \"description\": \"Credentials to use for OCI image pulling.\",\n \"maxLength\": 253,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"match\": {\n \"description\": \"Specifies the criteria to determine which traffic is passed to WasmPlugin.\",\n \"items\": {\n \"properties\": {\n \"mode\": {\n \"description\": \"Criteria for selecting traffic by their direction.\\n\\nValid Options: CLIENT, SERVER, CLIENT_AND_SERVER\",\n \"enum\": [\n \"UNDEFINED\",\n \"CLIENT\",\n \"SERVER\",\n \"CLIENT_AND_SERVER\"\n ],\n \"type\": \"string\"\n },\n \"ports\": {\n \"description\": \"Criteria for selecting traffic by their destination port.\",\n \"items\": {\n \"properties\": {\n \"number\": {\n \"maximum\": 65535,\n \"minimum\": 1,\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"number\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"number\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"phase\": {\n \"description\": \"Determines where in the filter chain this `WasmPlugin` is to be injected.\\n\\nValid Options: AUTHN, AUTHZ, STATS\",\n \"enum\": [\n \"UNSPECIFIED_PHASE\",\n \"AUTHN\",\n \"AUTHZ\",\n \"STATS\"\n ],\n \"type\": \"string\"\n },\n \"pluginConfig\": {\n \"description\": \"The configuration that will be passed on to the plugin.\",\n \"type\": \"object\",\n \"x-kubernetes-preserve-unknown-fields\": true\n },\n \"pluginName\": {\n \"description\": \"The plugin name to be used in the Envoy configuration (used to be called `rootID`).\",\n \"maxLength\": 256,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"priority\": {\n \"description\": \"Determines ordering of `WasmPlugins` in the same `phase`.\",\n \"format\": \"int32\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"selector\": {\n \"description\": \"Criteria used to select the specific set of pods/VMs on which this plugin configuration should be applied.\",\n \"properties\": {\n \"matchLabels\": {\n \"additionalProperties\": {\n \"maxLength\": 63,\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"wildcard not allowed in label value match\",\n \"rule\": \"!self.contains('*')\"\n }\n ]\n },\n \"description\": \"One or more labels that indicate a specific set of pods/VMs on which a policy should be applied.\",\n \"maxProperties\": 4096,\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"wildcard not allowed in label key match\",\n \"rule\": \"self.all(key, !key.contains('*'))\"\n },\n {\n \"message\": \"key must not be empty\",\n \"rule\": \"self.all(key, key.size() != 0)\"\n }\n ]\n }\n },\n \"type\": \"object\"\n },\n \"sha256\": {\n \"description\": \"SHA256 checksum that will be used to verify Wasm module or OCI container.\",\n \"pattern\": \"(^$|^[a-f0-9]{64}$)\",\n \"type\": \"string\"\n },\n \"targetRef\": {\n \"properties\": {\n \"group\": {\n \"description\": \"group is the group of the target resource.\",\n \"maxLength\": 253,\n \"pattern\": \"^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"kind is kind of the target resource.\",\n \"maxLength\": 63,\n \"minLength\": 1,\n \"pattern\": \"^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name is the name of the target resource.\",\n \"maxLength\": 253,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"namespace is the namespace of the referent.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"cross namespace referencing is not currently supported\",\n \"rule\": \"self.size() == 0\"\n }\n ]\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"Support kinds are core/Service and gateway.networking.k8s.io/Gateway\",\n \"rule\": \"[self.group, self.kind] in [['core','Service'], ['','Service'], ['gateway.networking.k8s.io','Gateway']]\"\n }\n ]\n },\n \"targetRefs\": {\n \"description\": \"Optional.\",\n \"items\": {\n \"properties\": {\n \"group\": {\n \"description\": \"group is the group of the target resource.\",\n \"maxLength\": 253,\n \"pattern\": \"^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"kind is kind of the target resource.\",\n \"maxLength\": 63,\n \"minLength\": 1,\n \"pattern\": \"^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name is the name of the target resource.\",\n \"maxLength\": 253,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"namespace is the namespace of the referent.\",\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"cross namespace referencing is not currently supported\",\n \"rule\": \"self.size() == 0\"\n }\n ]\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"Support kinds are core/Service and gateway.networking.k8s.io/Gateway\",\n \"rule\": \"[self.group, self.kind] in [['core','Service'], ['','Service'], ['gateway.networking.k8s.io','Gateway']]\"\n }\n ]\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"description\": \"Specifies the type of Wasm Extension to be used.\\n\\nValid Options: HTTP, NETWORK\",\n \"enum\": [\n \"UNSPECIFIED_PLUGIN_TYPE\",\n \"HTTP\",\n \"NETWORK\"\n ],\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"URL of a Wasm module or OCI container.\",\n \"minLength\": 1,\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"url must have schema one of [http, https, file, oci]\",\n \"rule\": \"isURL(self) ? (url(self).getScheme() in ['', 'http', 'https', 'oci', 'file']) : (isURL('http://' + self) \\u0026\\u0026 url('http://' +self).getScheme() in ['', 'http', 'https', 'oci', 'file'])\"\n }\n ]\n },\n \"verificationKey\": {\n \"type\": \"string\"\n },\n \"vmConfig\": {\n \"description\": \"Configuration for a Wasm VM.\",\n \"properties\": {\n \"env\": {\n \"description\": \"Specifies environment variables to be injected to this VM.\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the environment variable.\",\n \"maxLength\": 256,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value for the environment variable.\",\n \"maxLength\": 2048,\n \"type\": \"string\"\n },\n \"valueFrom\": {\n \"description\": \"Source for the environment variable's value.\\n\\nValid Options: INLINE, HOST\",\n \"enum\": [\n \"INLINE\",\n \"HOST\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"value may only be set when valueFrom is INLINE\",\n \"rule\": \"(has(self.valueFrom) ? self.valueFrom : '') != 'HOST' || !has(self.value)\"\n }\n ]\n },\n \"maxItems\": 256,\n \"type\": \"array\",\n \"x-kubernetes-list-map-keys\": [\n \"name\"\n ],\n \"x-kubernetes-list-type\": \"map\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"status\": {\n \"type\": \"object\",\n \"x-kubernetes-preserve-unknown-fields\": true\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"title\": \"Wasm Plugin\",\n \"type\": \"object\"\n}"} \ No newline at end of file diff --git a/templates/meshmodel/components/1.23.0/workloadentry.Istio.meshery.layer5.io_meshmodel.json b/templates/meshmodel/components/1.23.0/workloadentry.Istio.meshery.layer5.io_meshmodel.json new file mode 100644 index 00000000..81fad42b --- /dev/null +++ b/templates/meshmodel/components/1.23.0/workloadentry.Istio.meshery.layer5.io_meshmodel.json @@ -0,0 +1 @@ +{"id":"00000000-0000-0000-0000-000000000000","kind":"WorkloadEntry","apiVersion":"networking.istio.io/v1","displayName":"Workload Entry","format":"JSON","hostID":"00000000-0000-0000-0000-000000000000","metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"20\" width=\"20\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg height=\"20\" width=\"20\" viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"model":{"id":"00000000-0000-0000-0000-000000000000","name":"istio","version":"1.23.0","displayName":"ISTIO","hostID":"00000000-0000-0000-0000-000000000000","category":{"name":"Cloud Native Network","metadata":null},"metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"20\" width=\"20\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg height=\"20\" width=\"20\" viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"components":null,"relationships":null},"schema":"{\n \"properties\": {\n \"spec\": {\n \"description\": \"Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html\",\n \"properties\": {\n \"address\": {\n \"description\": \"Address associated with the network endpoint without the port.\",\n \"maxLength\": 256,\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"UDS must be an absolute path or abstract socket\",\n \"rule\": \"self.startsWith('unix://') ? (self.substring(7,8) == '/' || self.substring(7,8) == '@') : true\"\n },\n {\n \"message\": \"UDS may not be a dir\",\n \"rule\": \"self.startsWith('unix://') ? !self.endsWith('/') : true\"\n }\n ]\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"One or more labels associated with the endpoint.\",\n \"maxProperties\": 256,\n \"type\": \"object\"\n },\n \"locality\": {\n \"description\": \"The locality associated with the endpoint.\",\n \"maxLength\": 2048,\n \"type\": \"string\"\n },\n \"network\": {\n \"description\": \"Network enables Istio to group endpoints resident in the same L3 domain/network.\",\n \"maxLength\": 2048,\n \"type\": \"string\"\n },\n \"ports\": {\n \"additionalProperties\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"port must be between 1-65535\",\n \"rule\": \"0 \\u003c self \\u0026\\u0026 self \\u003c= 65535\"\n }\n ]\n },\n \"description\": \"Set of ports associated with the endpoint.\",\n \"maxProperties\": 128,\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"port name must be valid\",\n \"rule\": \"self.all(key, size(key) \\u003c 63 \\u0026\\u0026 key.matches('^[a-zA-Z0-9](?:[-a-zA-Z0-9]*[a-zA-Z0-9])?$'))\"\n }\n ]\n },\n \"serviceAccount\": {\n \"description\": \"The service account associated with the workload if a sidecar is present in the workload.\",\n \"maxLength\": 253,\n \"type\": \"string\"\n },\n \"weight\": {\n \"description\": \"The load balancing weight associated with the endpoint.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"Address is required\",\n \"rule\": \"has(self.address) || has(self.network)\"\n },\n {\n \"message\": \"UDS may not include ports\",\n \"rule\": \"(has(self.address) \\u0026\\u0026 self.address.startsWith('unix://')) ? !has(self.ports) : true\"\n }\n ]\n },\n \"status\": {\n \"type\": \"object\",\n \"x-kubernetes-preserve-unknown-fields\": true\n }\n },\n \"required\": [\n \"spec\",\n \"spec\",\n \"spec\"\n ],\n \"title\": \"Workload Entry\",\n \"type\": \"object\"\n}"} \ No newline at end of file diff --git a/templates/meshmodel/components/1.23.0/workloadgroup.Istio.meshery.layer5.io_meshmodel.json b/templates/meshmodel/components/1.23.0/workloadgroup.Istio.meshery.layer5.io_meshmodel.json new file mode 100644 index 00000000..a91631e4 --- /dev/null +++ b/templates/meshmodel/components/1.23.0/workloadgroup.Istio.meshery.layer5.io_meshmodel.json @@ -0,0 +1 @@ +{"id":"00000000-0000-0000-0000-000000000000","kind":"WorkloadGroup","apiVersion":"networking.istio.io/v1","displayName":"Workload Group","format":"JSON","hostID":"00000000-0000-0000-0000-000000000000","metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"20\" width=\"20\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg height=\"20\" width=\"20\" viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"model":{"id":"00000000-0000-0000-0000-000000000000","name":"istio","version":"1.23.0","displayName":"ISTIO","hostID":"00000000-0000-0000-0000-000000000000","category":{"name":"Cloud Native Network","metadata":null},"metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"20\" width=\"20\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg height=\"20\" width=\"20\" viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"components":null,"relationships":null},"schema":"{\n \"properties\": {\n \"spec\": {\n \"description\": \"Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html\",\n \"properties\": {\n \"metadata\": {\n \"description\": \"Metadata that will be used for all corresponding `WorkloadEntries`.\",\n \"properties\": {\n \"annotations\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"probe\": {\n \"description\": \"`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.\",\n \"oneOf\": [\n {\n \"not\": {\n \"anyOf\": [\n {\n \"required\": [\n \"httpGet\"\n ]\n },\n {\n \"required\": [\n \"tcpSocket\"\n ]\n },\n {\n \"required\": [\n \"exec\"\n ]\n }\n ]\n }\n },\n {\n \"required\": [\n \"httpGet\"\n ]\n },\n {\n \"required\": [\n \"tcpSocket\"\n ]\n },\n {\n \"required\": [\n \"exec\"\n ]\n }\n ],\n \"properties\": {\n \"exec\": {\n \"description\": \"Health is determined by how the command that is executed exited.\",\n \"properties\": {\n \"command\": {\n \"description\": \"Command to run.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"failureThreshold\": {\n \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"httpGet\": {\n \"description\": \"`httpGet` is performed to a given endpoint and the status/able to connect determines health.\",\n \"properties\": {\n \"host\": {\n \"description\": \"Host name to connect to, defaults to the pod IP.\",\n \"type\": \"string\"\n },\n \"httpHeaders\": {\n \"description\": \"Headers the proxy will pass on to make the request.\",\n \"items\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to access on the HTTP server.\",\n \"type\": \"string\"\n },\n \"port\": {\n \"description\": \"Port on which the endpoint lives.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"scheme\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"initialDelaySeconds\": {\n \"description\": \"Number of seconds after the container has started before readiness probes are initiated.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"periodSeconds\": {\n \"description\": \"How often (in seconds) to perform the probe.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"successThreshold\": {\n \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n },\n \"tcpSocket\": {\n \"description\": \"Health is determined by if the proxy is able to connect.\",\n \"properties\": {\n \"host\": {\n \"type\": \"string\"\n },\n \"port\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"port\"\n ],\n \"type\": \"object\"\n },\n \"timeoutSeconds\": {\n \"description\": \"Number of seconds after which the probe times out.\",\n \"format\": \"int32\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"template\": {\n \"description\": \"Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.\",\n \"properties\": {\n \"address\": {\n \"description\": \"Address associated with the network endpoint without the port.\",\n \"maxLength\": 256,\n \"type\": \"string\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"UDS must be an absolute path or abstract socket\",\n \"rule\": \"self.startsWith('unix://') ? (self.substring(7,8) == '/' || self.substring(7,8) == '@') : true\"\n },\n {\n \"message\": \"UDS may not be a dir\",\n \"rule\": \"self.startsWith('unix://') ? !self.endsWith('/') : true\"\n }\n ]\n },\n \"labels\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"One or more labels associated with the endpoint.\",\n \"maxProperties\": 256,\n \"type\": \"object\"\n },\n \"locality\": {\n \"description\": \"The locality associated with the endpoint.\",\n \"maxLength\": 2048,\n \"type\": \"string\"\n },\n \"network\": {\n \"description\": \"Network enables Istio to group endpoints resident in the same L3 domain/network.\",\n \"maxLength\": 2048,\n \"type\": \"string\"\n },\n \"ports\": {\n \"additionalProperties\": {\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"port must be between 1-65535\",\n \"rule\": \"0 \\u003c self \\u0026\\u0026 self \\u003c= 65535\"\n }\n ]\n },\n \"description\": \"Set of ports associated with the endpoint.\",\n \"maxProperties\": 128,\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"port name must be valid\",\n \"rule\": \"self.all(key, size(key) \\u003c 63 \\u0026\\u0026 key.matches('^[a-zA-Z0-9](?:[-a-zA-Z0-9]*[a-zA-Z0-9])?$'))\"\n }\n ]\n },\n \"serviceAccount\": {\n \"description\": \"The service account associated with the workload if a sidecar is present in the workload.\",\n \"maxLength\": 253,\n \"type\": \"string\"\n },\n \"weight\": {\n \"description\": \"The load balancing weight associated with the endpoint.\",\n \"maximum\": 4294967295,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\",\n \"x-kubernetes-validations\": [\n {\n \"message\": \"Address is required\",\n \"rule\": \"has(self.address) || has(self.network)\"\n },\n {\n \"message\": \"UDS may not include ports\",\n \"rule\": \"(has(self.address) \\u0026\\u0026 self.address.startsWith('unix://')) ? !has(self.ports) : true\"\n }\n ]\n }\n },\n \"required\": [\n \"template\"\n ],\n \"type\": \"object\"\n },\n \"status\": {\n \"type\": \"object\",\n \"x-kubernetes-preserve-unknown-fields\": true\n }\n },\n \"title\": \"Workload Group\",\n \"type\": \"object\"\n}"} \ No newline at end of file diff --git a/templates/meshmodel/components/1.23.0/zipkinistioaddon_meshmodel.json b/templates/meshmodel/components/1.23.0/zipkinistioaddon_meshmodel.json new file mode 100644 index 00000000..b100e8b6 --- /dev/null +++ b/templates/meshmodel/components/1.23.0/zipkinistioaddon_meshmodel.json @@ -0,0 +1 @@ +{"id":"00000000-0000-0000-0000-000000000000","kind":"ZipkinIstioAddon","apiVersion":"core.meshmodel.dev/v1alpha1","displayName":"Zipkin Istio Addon","format":"JSON","hostID":"00000000-0000-0000-0000-000000000000","metadata":{"logoURL":"https://github.com/istio/istio/blob/master/logo/istio-bluelogo-whitebackground-unframed.svg","primaryColor":"#466BB0","secondaryColor":"#93b0e6","shape":"circle","svgColor":"\u003csvg xmlns=\"http://www.w3.org/2000/svg\" height=\"20px\" width=\"20px\" version=\"1.1\" viewBox=\"0 0 160 240\"\u003e\u003cg id=\"logo\" fill=\"#466BB0\"\u003e\u003crect id=\"background\" width=\"160\" height=\"240\" fill=\"#fff\"/\u003e\u003cpolygon id=\"hull\" points=\"0 210 160 210 60 240\"/\u003e\u003cpolygon id=\"mainsail\" points=\"0 200 60 190 60 80\"/\u003e\u003cpolygon id=\"headsail\" points=\"70 190 160 200 70 0\"/\u003e\u003c/g\u003e\u003c/svg\u003e\n","svgWhite":"\u003csvg viewBox=\"6.386270046234131 3.7419400215148926 18.227430820465088 25.258059978485107\" height=\"20px\" width=\"20px\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cpath d=\"M6.38627 24.7904L13.2215 23.738V12.1613L6.38627 24.7904Z\" fill=\"white\"/\u003e\u003cpath d=\"M6.38627 25.8427H24.6137L13.2215 29L6.38627 25.8427Z\" fill=\"white\"/\u003e\u003cpath d=\"M14.3608 23.7379L24.6137 24.7904L14.3608 3.74194V23.7379Z\" fill=\"white\"/\u003e\u003c/svg\u003e"},"model":{"id":"00000000-0000-0000-0000-000000000000","name":"istio","version":"1.23.0","displayName":"","hostID":"00000000-0000-0000-0000-000000000000","category":{"name":"Cloud Native Network","metadata":null},"metadata":null,"components":null,"relationships":null},"schema":"\"properties\":{},\"title\":\"ZipkinIstioAddon\",\"type\":\"object\"}"} \ No newline at end of file